Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь написать технический индикатор? Загляни в Справочник MQL5!
Sergey Deev
90124
Sergey Deev 2016.08.21 21:07 

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

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

Файлы:
new-rena
3372
new-rena 2016.08.21 21:10  
Sergey Deev:

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

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


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

ArrayInitialize(Buffer,0);//Buffer - буферный массив индикатора
Dmitry Fedoseev
42920
Dmitry Fedoseev 2016.08.21 21:14  

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

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

new-rena
3372
new-rena 2016.08.21 21:17  
Dmitry Fedoseev:

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

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

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

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

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

   if (!prev_calculated) {
    ArrayInitialize(buyLeftUp,0.0);
    ... 
   }
Sergey Deev
90124
Sergey Deev 2016.08.21 21:39  
Dmitry Fedoseev:

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

Как это, извините? Откуда вызывающая программа должна догадаться что она получила - мусор или рассчитанное значение?
Maxim Kuznetsov
9812
Maxim Kuznetsov 2016.08.21 22:33  
в приложенном коде нет никаких вычислений (нет цикла в OnCalculate) и соотв. нет заполнения буферов - поэтому получается мусор. Кстати, если рисуете стрелочки - всегда устанавливайте значения в буфере, просто если она ненужна то в значение EMPTY_VALUE (или что вы там установите для серии). При подкачке истории значения (увеличенных) массивов не обнуляются автоматически. Как выше заметили, если вычисления проводятся то нет в этом необходимости.
Sergey Deev
90124
Sergey Deev 2016.08.22 08:44  
Всем спасибо. Mql5, в отличии от mql4 не инициализирует буферы ни на старте, ни при при приходе новых элементов. Будем знать.
new-rena
3372
new-rena 2016.08.22 08:46  
Sergey Deev:
Всем спасибо. Mql5, в отличии от mql4 не инициализирует буферы ни на старте, ни при при приходе новых элементов. Будем знать.
Я делал такое для 4-ки...
Alexey Oreshkin
3935
Alexey Oreshkin 2016.08.22 08:59  
new-rena:

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

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

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

а тс в помощь: PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
new-rena
3372
new-rena 2016.08.22 09:05  
Alexey Oreshkin:
Глупый совет.

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

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

Садись, 2!

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий