Загаживание индикаторных буферов

 

Во вложении заготовка для индикатора - 9 стрелочных индикаторных буферов без обработки.

Пи установке данного индикатора на график, последний должен оставаться чистым. Однако, после на график и нескольких смен таймфрейма (иногда сразу), в буферах выпадает мусор, подобный ниже приведенному. Чего-то совсем мозг запарился на ровном месте. Подскажите, где я не прав плз.  

Файлы:
 
Sergey Deev:

Во вложении заготовка для индикатора - 9 стрелочных индикаторных буферов без обработки.

Пи установке данного индикатора на график, последний должен оставаться чистым. Однако, после на график и нескольких смен таймфрейма (иногда сразу), в буферах выпадает мусор, подобный ниже приведенному. Чего-то совсем мозг запарился на ровном месте. Подскажите, где я не прав плз.  


Советую в начале индикатора, до расчетов

ArrayInitialize(Buffer,0);//Buffer - буферный массив индикатора
 

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

Нет необходимости делать инициализацию. 

 
Dmitry Fedoseev:

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

Нет необходимости делать инициализацию. 

Я тоже кстати заметил такую бяку (не было раньше такого), о которой пишет топикстартер. Выкрутился пока так, как написал повыше.
 
new-rena:

Советую в начале индикатора, до расчетов

Спасибо, помогло. Сделал в OnCalculate:

   if (!prev_calculated) {
    ArrayInitialize(buyLeftUp,0.0);
    ... 
   }
 
Dmitry Fedoseev:

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

Как это, извините? Откуда вызывающая программа должна догадаться что она получила - мусор или рассчитанное значение?
 
в приложенном коде нет никаких вычислений (нет цикла в OnCalculate) и соотв. нет заполнения буферов - поэтому получается мусор. Кстати, если рисуете стрелочки - всегда устанавливайте значения в буфере, просто если она ненужна то в значение EMPTY_VALUE (или что вы там установите для серии). При подкачке истории значения (увеличенных) массивов не обнуляются автоматически. Как выше заметили, если вычисления проводятся то нет в этом необходимости.
 
Всем спасибо. Mql5, в отличии от mql4 не инициализирует буферы ни на старте, ни при при приходе новых элементов. Будем знать.
 
Sergey Deev:
Всем спасибо. Mql5, в отличии от mql4 не инициализирует буферы ни на старте, ни при при приходе новых элементов. Будем знать.
Я делал такое для 4-ки...
 
new-rena:

Советую в начале индикатора, до расчетов 

ArrayInitialize(Buffer,0);//Buffer - буферный массив индикатора

Глупый совет.

а тс в помощь: PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
 
Alexey Oreshkin:
Глупый совет.

а тс в помощь: PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);

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

Садись, 2!

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