Советник выдает ошибку array out of range

 

Здравствуйте, уважаемые профессионалы MQL. У меня вопрос. Есть функция 

int iBarShiftX(string symbol,
              int tf,
              datetime time,
              bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0]; - здесь out of range
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }

И она работала исправно, но в 23.00 отвалились 3 из 4х советников выдали ошибки

2020.05.25 23:02:08.866 Lastochka_4.7.1.43.3.50 (GBPUSD,H1) array out of range in 'MQL4_5.mqh' (56,13)

2020.05.25 23:02:09.250 Lastochka_4.7.1.43.3.50 (USDJPY,H1) array out of range in 'MQL4_5.mqh' (56,13)

2020.05.25 23:02:09.963 Lastochka_4.7.1.43.3.50 (EURUSD,M30) array out of range in 'MQL4_5.mqh' (56,13)

Убрать ф-ю я не могу на нее много завязано, можно ли обойти это узкое место?

 

Привет!

вместо ноль может единицу поставить?

 time1=Arr[1]; 

 
Проверьте возвращаемое значение функции CopyTime(symbol,timeframe,0,1,Arr)
 
Ekaterina Belova:

Здравствуйте, уважаемые профессионалы MQL. У меня вопрос. Есть функция 

И она работала исправно, но в 23.00 отвалились 3 из 4х советников выдали ошибки

2020.05.25 23:02:08.866 Lastochka_4.7.1.43.3.50 (GBPUSD,H1) array out of range in 'MQL4_5.mqh' (56,13)

2020.05.25 23:02:09.250 Lastochka_4.7.1.43.3.50 (USDJPY,H1) array out of range in 'MQL4_5.mqh' (56,13)

2020.05.25 23:02:09.963 Lastochka_4.7.1.43.3.50 (EURUSD,M30) array out of range in 'MQL4_5.mqh' (56,13)

Убрать ф-ю я не могу на нее много завязано, можно ли обойти это узкое место?

TFMigrate(tf); в этой функции, что то не так.

 

Посмотрите, что возвращает функция CopyTime().

Также попробуйте объявить не динамический массив, а статический: datetime Arr[1];