Подскажите по indicator_buffers. Не могу разобраться

 

Начал изучать mql5 и что-то не могу в буферах разобраться.

Пишу простой индикатор, который строит горизонтальные линии по заданным ценам из массива. Так просто, ради практики.

Вопрос вот в чем: 

Сколько буферов нужно для такого индикатора? Я вообще не понимаю, все работает и с 1, но читая статьи различные я думаю что нет.
Возможно что для каждой линии свой буфер?
Ну это какой то бред : получается в каждом массиве будет хранится 1 значение(цена символа, по которой строим линию) - это того стоит, такие затраты. Думаю нет. Получается что-то не правильно.

Решений кода не прошу, помогите разобраться с пониманием вопроса буферов.

Может есть где почитать, кроме справки, а то там черт ногу сломит.

Если что справку читал.

Вот такой затык))

 
Для поставленной учебной задачи вам не нужно писать индикатор, так как этот вид программ предназначен для других видов задач.
Тем не менее, добиться, чтобы индикатор рисовал горизонтальные линии можно, но тогда ощущение, что всё сделано неправильно, волне обосновано
 
Yuriy Bykov #:
Для поставленной учебной задачи вам не нужно писать индикатор, так как этот вид программ предназначен для других видов задач.
Тем не менее, добиться, чтобы индикатор рисовал горизонтальные линии можно, но тогда ощущение, что всё сделано неправильно, волне обосновано

Вы имеете ввиду использовать скрипт, а не индикатор, для отрисовки?
И не могли бы, если не подсказать, что сделано неправильно, то хотя бы направить в нужную сторону.
Так сказать показать в какую сторону капать?

 

Очень упрощенно можно сказать так.

Скрипт - программа для однократного выполнения набора действий после запуска. Если хотите один раз разместить несколько линий на графике, то вполне можно это сделать скриптом. 

Индикатор - программа для расчёта дополнительных числовых характеристик для баров на ценовом графике, помещаемых в массивы, называемые индикаторными буферами. Выполняет эти расчёты на каждом тике. Результаты могут отображаться в разном виде основном окне ценового графика или в подокне. Для рисования нескольких фиксированных линий нет необходимости выполнять подобные расчёты, поэтому вам не нужны индикаторные буфера. Хотя индикатору можно поручить помимо своей основной задачи еще много всего. В том числе и рисование нескольких фиксированных линий. Но у вас тогда получится, что у индикатора нет основной задачи, а есть только побочная.

Советник - программа, которая выполняет набор действий с приходом каждого тика после своего запуска. Используется в основном для автоматического открытия и закрытия рыночных позиций, но может выполнять еще и кучу вспомогательных задач, к которым можно отнести и задачу рисования нескольких линий. Поручать её советнику разумно тогда, когда эти линии у вас должны как-то меняться со временем.

Поэтому, если вы хотели попрактиковаться в разработке индикаторов, то и учебные задачи лучше рассматривать те, которые похожи на задачи, решаемые с помощью индикаторов. Можно привести такую аналогию: если вы хотите изучить работу с массивами, то не берите в качестве учебной задачи задачу сложения двух чисел. Её можно решить, используя массив: первое число поместить в первый элемент, второе - во второй, а сумму - в третий. Но это не то, для чего полезны массивы.

Для рисования горизонтальных линий можно использовать пример из справки, или более сложный способ.

Если же рисовать горизонтальную линию как визуализацию значений индикаторного буфера, то писать код отображения вам не придётся (индикатор сам сможет её рисовать), но он её нарисует как набор отрезков, соединяющих точки для каждого бара, расположенные на одном уровне. Эти одинаковые значения для каждого бара как раз и будут храниться в индикаторном буфере. Если нужно несколько линий, то при таком способе надо использовать несколько индикаторных буферов. То есть это ровно та ситуация, про которую вы написали, что это бред и она не стоит того.

Документация по MQL5: Стандартная библиотека / Графические объекты / Объекты "Линии"
Документация по MQL5: Стандартная библиотека / Графические объекты / Объекты "Линии"
  • www.mql5.com
Объекты "Линии" - Графические объекты - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
irbisbars:

Начал изучать mql5 и что-то не могу в буферах разобраться.

Пишу простой индикатор, который строит горизонтальные линии по заданным ценам из массива. Так просто, ради практики.

Вопрос вот в чем: 

Сколько буферов нужно для такого индикатора? Я вообще не понимаю, все работает и с 1, но читая статьи различные я думаю что нет.
Возможно что для каждой линии свой буфер?
Ну это какой то бред : получается в каждом массиве будет хранится 1 значение(цена символа, по которой строим линию) - это того стоит, такие затраты. Думаю нет. Получается что-то не правильно.

Решений кода не прошу, помогите разобраться с пониманием вопроса буферов.

Может есть где почитать, кроме справки, а то там черт ногу сломит.

Если что справку читал.

Вот такой затык))

Для построения линий как графические элементы индикаторные буферы совсем не нужны.

Что касается буферов в MQL5, то они от MQL4 почти ничем не отличаются. Разница в том, что в MQL4 буфер кроме хранения значения выполняет ещё и роль «рисовальщика», то в MQL5 есть ещё и графические построения. Для такого индикатора как у вас можно сделать так

#property indicator_buffers 0
#property indicator_plots   0

а это пример из документации

#property indicator_buffers 3 // количество буферов 
#property indicator_plots   2 // количество графических построений
 
irbisbars:

Начал изучать mql5 и что-то не могу в буферах разобраться.

Пишу простой индикатор, который строит горизонтальные линии по заданным ценам из массива. Так просто, ради практики.

Вопрос вот в чем: 

Сколько буферов нужно для такого индикатора? Я вообще не понимаю, все работает и с 1, но читая статьи различные я думаю что нет.
Возможно что для каждой линии свой буфер?
Ну это какой то бред : получается в каждом массиве будет хранится 1 значение(цена символа, по которой строим линию) - это того стоит, такие затраты. Думаю нет. Получается что-то не правильно.

Решений кода не прошу, помогите разобраться с пониманием вопроса буферов.

Может есть где почитать, кроме справки, а то там черт ногу сломит.

Если что справку читал.

Вот такой затык))

буфер - это массив

линии у Вас горизонтальные, то есть нужно одно значение для ее построения

однако, если Вы начнете отображать всего одно значение, то это будет точка

чтобы была линия, нужно две точки

между двумя точками может быть любое расстояние

в нашем случае расстояние - это время начала линии и время конца линии, либо номер бара

номер бара в индикаторе - это номер элемента буфферного массива.
Причина обращения: