Форум » Индикаторы » Подробнее о индикаторных буферах » Ответить

Подробнее о индикаторных буферах

hoz: Этот вопрос можно было бы, конечно, опустить, но, тем не менее любознательность берёт своё... Заглянув в справку касательно: #property indicator_buffers 1 // используется 1 буфер индикатора Я вижу, что это свойство обозначает: какое количество буферов используется для расчета индикатора. Дальше в Init() бывает такое: IndicatorBuffers(2); Данная опция: Распределяет память для буферов, используемых для вычислений пользовательского индикатора. Но это бывает не часто. Почему так? Например, в индикаторе NeoZigZag_Close такое есть, а в многих других, например, PercentageZigZag такого нет. Это ж не означает, что память там не распределяется для вычисления пользовательского индикатора. А значит в подобной инструкции нет необходимости?

Ответов - 6

Genry: День добрый, hoz! Обсуждал с Игорем подобный вопрос здесь, может пригодится: Genry пишет: Вот восстановил код где было 2 буфера, но он как и раньше ничего не отображает, а здесь где собака зарыта? Scriptong пишет: В этом случае все просто. Для того чтобы использовать скрытые буфера, необходимо воспользоваться переопределением количества буферов. Причем новое количество должно быть больше того, что указано в: #property indicator_buffers В таких случаях нужна функция IndicatorBuffers. Но и это еще не все. Под скрытые буфера должна быть распределена память. В представленном коде этого нет - массив ARSI объявлен с нулевым размером и не связан ни с одним из буферов индикатора. Устранение этой ошибки - связать индекс буфера индикатора с массивом: SetIndexBuffer(1, ARSI);

hoz: Я так понял, инструкция IndicatorBuffers в функции Init() нужна только в том случае, если нужны дополнительные буферы для расчёта индикаторных значений( которые не отображаются т.е. не рисуются), так? Т.е. если дополнительных буферов для расчёта не требуется, то данная инструкция не требуется. А если требуются дополнительные буферы требуются, то добавляем их и связываем с соответствующими индексами. Судя по всему, если дополнительных буферов (для расчёта) инструкция IndicatorBuffers в функции Init() не требуется, а происходит лишь связывание буферов с их индексами, объявленными в свойствах индикатроа и всё, так?

Genry: hoz пишет: Я так понял, инструкция IndicatorBuffers в функции Init() нужна только в том случае, если нужны дополнительные буферы для расчёта индикаторных значений( которые не отображаются т.е. не рисуются), так? Да, свойства у них одинаковые, но без отображения. http://docs.mql4.com/ru/customind/indicatorbuffers


Scriptong: Здесь, вижу, все без меня решилось. Genry все верно объяснил.

hoz: Игорь, видать да. С большего уяснил. Хотя ещё хватает головняков

Scriptong: hoz пишет: Хотя ещё хватает головняков Спрашивайте, не стесняйтесь. Здесь никто не будет смеяться над простыми вопросами.



полная версия страницы