MQL5 при отрисовке индикатора. - страница 2

 

Осталось внимательно прочесть

ENUM_PLOT_PROPERTY_DOUBLE

Идентификатор

Описание

Тип свойства

PLOT_EMPTY_VALUE

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

double


Это означает, что значение если применить например

PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

и после этого назначить, например, на баре #30 значение EMPTY_VALUE, на баре #30 индикатор не отрисует ничего.


То есть это не инициализация. Это всё го лишь управление отрисовкой.

 

Так в том-то и дело, что если прикрепить график а потом его удалить, и опять прикрепить то буферы будут инициализированы нужным значением.

Также почему бы не сделать как в MT4? Зачем отрисовывать EMPTY_VALUE или что либо еще?

 

А так мне пришлось городить дополнительный код в OnCalculate()

if(firstRun) {
   ArrayInitialize(FlagH_Buffer,0);
  ArrayInitialize(FlagL_Buffer,0);
  ArrayInitialize(PennantH_Buffer,0);
  ArrayInitialize(PennantL_Buffer,0);
  ArrayInitialize(MedianBuffer,0);

  ArrayInitialize(SigH_Buffer,0);
  ArrayInitialize(SigL_Buffer,0);
  ArrayInitialize(HighesBuffer,0);
  ArrayInitialize(LowesBuffer,0);
  ArrayInitialize(SlopeBuffer,0);
  firstRun=false;
  }

При инициализации в OnInit()

размер буферов еще нулевой, инициализировать нечего.

 
Fedor Arkhipov:

Так в том-то и дело, что если прикрепить график а потом его удалить, и опять прикрепить то буферы будут инициализированы нужным значением.

Также почему бы не сделать как в MT4? Зачем отрисовывать EMPTY_VALUE или что либо еще?

Инициализация лежит полностью на плечах программиста. Если кривой индикатор  - тут поможет выпрямитель: Форум или Фриланс.

Необходимо различать первый старт индикатора или подкачку истории и обычную работу. При первом старте или при подкачке истории необходимо ПРИНУДИТЕЛЬНО обойти весь индикаторный буфер и пересчитать его (читай инициализировать).

 
Это значит что в МТ4 было сделано не правильно?
 
В конце концов, загляните в примеры MetaEditor'a: [data folder]\MQL5\Indicators\Examples\
 

Ну спасибо, так и скажите что не хотите переделывать.

Сам к себе обратился, и нашел выход из ситуации.

 

И еще. В тестере стратегий MT5  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0) инициализирует буфер и проблем с отрисовкой нет.

Почему тогда в тестере стратегий работает?

 
Vladimir Karputov:

То есть это не инициализация. Это всё го лишь управление отрисовкой.

как раз пустое значение для инициализации и используется. проблема в том что при смене ТФ нет инициализации буфера.

вот надо было на две страницы цирк разводить и задирать нос чтобы выяснить что вы не разбираетесь в предмете?

 
TheXpert:

как раз пустое значение для инициализации и используется. проблема в том что при смене ТФ нет инициализации буфера.

вот надо было на две страницы цирк разводить и задирать нос чтобы выяснить что вы не разбираетесь в предмете?

А если прикрепить просто индикатор на график, тоже инициализации буферов нет. А в МТ4 есть.

Кто еще из нас разводит цирк?

Причина обращения: