Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 563

 
Roman Sharanov:

а получение данных с индикаторов, графика?

Всё можно. Но для этого вам, как минимум, нужно владеть обоими языками.

 
Artyom Trishkin:

Всё можно. Но для этого вам, как минимум, нужно владеть обоими языками.

Я владею

 
Roman Sharanov:

Я владею

Ну значит вам не составит никакого труда писать кроссплатформенный код.

 

Забавная ситуация

Строчка кода, иногда вызывает ошибку которая ниже.

При каких условиях такая ошибка может проявляться?


   ChartTimePriceToXY(0,0,Time[0],price,x1,y_cord);


2018.06.08 13:41:39.021    program name XAUUSDcheck,H1: array out of range in 'DrawInterfaceLib.mqh' (47,31)


 
Sergey Likho:

Забавная ситуация

Строчка кода, иногда вызывает ошибку которая ниже.

При каких условиях такая ошибка может проявляться?


Выход за пределы массива. Индекс, передаваемый в массив либо больше максимального размера массива (если массив имеет размер 10, то максимальный индекс у такого массива = 9, так как первый его элемент имеет индекс 0), либо меньше нулевого значения. Либо массив имеет нулевой размер.

 
Artyom Trishkin:

Выход за пределы массива. Индекс, передаваемый в массив либо больше максимального размера массива (если массив имеет размер 10, то максимальный индекс у такого массива = 9, так как первый его элемент имеет индекс 0), либо меньше нулевого значения. Либо массив имеет нулевой размер.

Спасибо конечно, я это знаю. 

При каких условиях это ошибка может вылазить при обращение к массиву Time[0]? 

Значит массив нулевой?  А как такое может быть с таймсерией? 

 
Sergey Likho:

Забавная ситуация

Строчка кода, иногда вызывает ошибку которая ниже.

При каких условиях такая ошибка может проявляться?

Старый баг МТ4 (массив Time вроде как нулевого размера оказывается). Года два назад постоянно проявлялся у одного из моих клиентов. Но воспроизвести этот баг оказалось нереально. Сервисдеск признает наличие проблемы, но пощупать и тем более исправить не может. С тех пор я никогда не использую прямой доступ к таймсериям, только через обертки: iTime, iOpen и т. д.

 
Ihor Herasko:

Старый баг МТ4 (массив Time вроде как нулевого размера оказывается). Года два назад постоянно проявлялся у одного из моих клиентов. Но воспроизвести этот баг оказалось нереально. Сервисдеск признает наличие проблемы, но пощупать и тем более исправить не может. С тех пор я никогда не использую прямой доступ к таймсериям, только через обертки: iTime, iOpen и т. д.

Да, я в итоге так и сделал, заменил на iTime . Спасибо!

 

Здравствуйте. Выход за пределы, как исправить?

 if(TimeFrame>Period()) 
     {
      ArrayCopySeries(santa1,5,Symbol(),TimeFrame);
      summ=CountBars+TimeFrame/Period();
      shift=0;
      for(int iy=0; shift<summ; shift++) 
        {
         if(Time[shift]<santa1[iy]) iy++;//вот эта строка "array out of range" 
         list[shift]=bufbuy[iy];
        }
     }
 
PolarSeaman:

Здравствуйте. Выход за пределы, как исправить?

Значения переменных shift и iy в приведенном коде не проверяются на предмет выхода за пределы массивов Time и santa1. Поэтому все логично. Проверьте их значения перед использованием, ошибка исчезнет.

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

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