Time[0]

 
...
      int t = TimeCurrent() - Time[0];
      if (t < 86400)
      {
...


0       00:23:46.087    test _DXY,H1: uninit reason 3
1       00:23:46.087    test _DXY,H4: array out of range in 'indicator.mqh' (685,35)
3       00:23:46.103    test _DXY,H4: not initialized
0       00:23:46.103    test _DXY,H4: uninit reason 8
0       00:23:46.134    Custom indicator test _DXY,H4: removed

Ошибка в строке 

 int t = TimeCurrent() - Time[0]; 

Я так понимаю в Time[0], массив пустой, но почему? раньше такого не было, делать проверку на размер массива при каждом обращении?

 
pivalexander:


Ошибка в строке 

 int t = TimeCurrent() - Time[0]; 

Я так понимаю в Time[0], массив пустой, но почему? раньше такого не было, делать проверку на размер массива при каждом обращении?

На графике нет баров. На входе в OnCalculate() достаточно сделать проверку:

if (rates_total <= 0)
   return;

После этого можно обращаться к таймсериям. Кстати, OnCalculate() предоставляет эти таймсерии напрямую. Используйте массив time, а не Time.

 
Ihor Herasko:

На графике нет баров. На входе в OnCalculate() достаточно сделать проверку:

После этого можно обращаться к таймсериям. Кстати, OnCalculate() предоставляет эти таймсерии напрямую. Используйте массив time, а не Time.

Я в OnTime() рассчитываю не в OnCalculate() 

 
pivalexander:

Я в OnTime() рассчитываю не в OnCalculate() 

В OnTimer() наверное?

Тогда проверяйте результат, возвращаемый из iTime()