Некоторые вопросы касательно индикаторов

 

 Решил я прошерстить документацию касательно написания индикаторов, и, сразу же столкнулся с некоторыми непонятными моментами. Дабы не плодить много тем, создаю одну тему, по этому поводу, чтоб исчерпать это недопонимание.

 Раньше когда я писал несколько раз по необходимости индикаторы (было это ещё до нового билда) было гораздо проще. Создавался буфер, его свойства буфера и производился расчёт го значений с дальнейшей отрисовкой этих значений (если это необходимо).

 Сейчас я обратил внимание, что появилось множество различных, и, на первый взгляд лишних моментов. Хочу уяснить для  чего это всё придумано, чтобы иметь возможность пользоваться данными новшествами.

Возьмём, например, свойства:

#property indicator_buffers 1
#property indicator_plots   1

 Для чего второе свойство? Ведь ясно написано, что первое их вышеприведённых свойство - количество буферов для расчёта. Зачем тогда указывать второе свойство ? Ведь графическая серия это тоже массив. Я так понимаю, что тому же массиву можно было как и прежде присвоить необходимые свойство и всё. Для чего указывать количество графических серий?

 

Первое количество всего буферов. Второе количество отображаемых буферов. 

 
Zhunko:

Первое количество всего буферов. Второе количество отображаемых буферов. 

И в чём логика тут? Ведь если не назначит отображение на буфера, то он не отобразиться. Тогда какой прок с этого дополнительного свойства?
 
hoz:
Тогда какой прок с этого дополнительного свойства?
Оно и раньше было, только неявно. Теперь явно.
 
TheXpert:
Оно и раньше было, только неявно. Теперь явно.
Для чего это вообще? Зачем указывать через свойство количество отображаемых буферов? Ведь как ни крути отобразиться столько буферов скольким задасться через соответствующие свойства...
 
hoz:
И в чём логика тут? Ведь если не назначит отображение на буфера, то он не отобразиться. Тогда какой прок с этого дополнительного свойства?
Иногда нужны буфера только для расчёта без отображения.
 
Zhunko:
Иногда нужны буфера только для расчёта без отображения.

Я в курсе. Но зачем это прописывать в Init() ?

 Ведь если не указать в свойствах, буфер так и так не отобразиться.

Например,

   SetIndexBuffer (0, ExtATRBuffer, INDICATOR_DATA);
   SetIndexBuffer (1, ExtTRBuffer, INDICATOR_CALCULATIONS);

 Первый буфер - данные индикатора. А второй - лишь буфер для промежуточных расчётов. 

 Если буферу 1-ому из вышеприведённых не назначить отображение, то так и так не будет отображаться. Ведь он так...

Вопрос всё тот же. Для чего дополнительное свойство? 

 

Для более грамотного распределения памяти.

Первый жёстко ограничивает, второй можно включать и отключать. 

 

Вот ещё момент.

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);

 В документации написано, что:

PLOT_EMPTY_VALUE - Пустое значение для построения, для которого нет отрисовки. 

Это получается типа инициализация "пустым значением" буфера? Типа защита от "наличия мусора в буфере до помещения туда значения" на всякий случай? Так?

 
Zhunko:

Для более грамотного распределения памяти.

Первый жёстко ограничивает, второй можно включать и отключать. 

Отключать?

Но если в индюке явно имеется буфер для расчёта( вторая строка ):

SetIndexBuffer (0, ExtATRBuffer, INDICATOR_DATA);
SetIndexBuffer (1, ExtTRBuffer, INDICATOR_CALCULATIONS);

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

В свою очередь, если буфер служить для отображения, то он тоже нужен.. У каждого своя роль.

 Как это можно отключить?

 
hoz:

Отключать?

Но если в индюке явно имеется буфер для расчёта( вторая строка ):

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

В свою очередь, если буфер служить для отображения, то он тоже нужен.. У каждого своя роль.

 Как это можно отключить?

Не в курсе. Просто предположил, что если можно включить, то можно и выключить.