Выход за предела массива Time[]

 

В коде индикатора есть проверка:

int MaxBarsLine = 190;
 
if(Time[Pick1] < Time[i+MaxBarsLine]) //Обнулить все значения трендовой линии

В итоге ошибка: array out of range
Ругается на Time[i+MaxBarsLine]

А если я добавлю бары в цикл, то ошибки нет,
на графике всё рисует правильно,
но в тестере на каждом баре меняет значение пика и получается пачка линий на каждом новом баре

for(int i=limit-(MaxBarsLine+1); i>0; i--)

 
forex2030:

В коде индикатора есть проверка:

В итоге ошибка: array out of range

Ругается на Time[i+MaxBarsLine]


В массиве меньше элементов, чем  i+MaxBarsLine

Очевидно же.

 
PapaYozh #:

В массиве меньше элементов, чем  i+MaxBarsLine

Очевидно же.

Как сделать проверку?

 
вариант "в лоб": сравнить с размерностью массива.
 
PapaYozh #:
вариант "в лоб": сравнить с размерностью массива.

С этим не получается.
Ещё есть варианты? 

 

Bars-1 - доступная история по текущему символу

по другим:

https://docs.mql4.com/ru/series/ibars

 

Ответы конечно у вас животворящие))
В стиле: где купил? ТАМ

 
forex2030 #:

Ответы конечно у вас животворящие))
В стиле: где купил? ТАМ

Код выкладывайте, тогда возможен более точный ответ.

А сейчас всё на уровне телепати.

 
PapaYozh #:

Код выкладывайте, тогда возможен более точный ответ.
А сейчас всё на уровне телепати.

Причём здесь код?

Есть проблема выхода за пределы массива,
вот и требуется сделать проверку заполнения массива,
а как это сделать я пока не понимаю.

 
OMG
 
forex2030 #:

Причём здесь код?

Есть проблема выхода за пределы массива,
вот и требуется сделать проверку заполнения массива,
а как это сделать я пока не понимаю.

Универсальная проверка корректности индекса любого массива:

if (nIndex >= 0 && nIndex < ArraySize(youArray))
{
   // Индекс корректный
}

В случае с таймсериями можно использовать и другой подход, как подсказывали выше:

int nTotal = iBars(<yourSymbol>, <yourTF>);
if (nIndex >= 0 && nIndex < nTotal)
{
   // Корректный индекс
}