array out of range in '_Test.mq4' (451,34)
В строке 451,34 происходит выход за пределы массива.
Смотрите в , то что за <=
for(int i = 1; 0 <= Bar_data_D1 [i][2] ;i++)
for(int i = 1; ;i++) { Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]); if( Bar_data_D1 [i][2] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } //--- изначально было так
может подскажете есть вариант получше ? как это реализовать
КОД ПОДПРАВИЛ : Ошибки нет , дальше по массиву не идет и линию не перерисовывает этим днём
//--- Min_D_Leve for(int i = 1; i<ArrayRange(Bar_data_D1,0) ;i++) { Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]); if(Bar_data_D1 [i][2]>=0) { if( Bar_data_D1 [i][2] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } }
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 996 Bar_data_D1 [i][2] = 1.33147
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 997 Bar_data_D1 [i][2] = 1.3426
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 998 Bar_data_D1 [i][2] = 1.3364
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 999 Bar_data_D1 [i][2] = 1.33562
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 1000 Bar_data_D1 [i][2] = 1.33532
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _Test EURUSD,H1: i = 1001 Bar_data_D1 [i][2] = 1.33705
ошибка может быть и не здесь. Без кода сложно понять
ошибка может быть и не здесь. Без кода сложно понять
//--глобальные переменныеdouble Low_D1_Level;
double Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
//--- тело void On_Timer() { if(Day()!= Time_Day) { Level(); Time_Day = Day(); } } //+------------------------------------------------------------------+ //| Функция Level //+------------------------------------------------------------------+ void Level() ArrayCopyRates(Bar_data_D1,_Symbol,PERIOD_D1); // Копирует в массив данные баров указанного графика и возвращает Low_D1_Level = iLow (_Symbol,PERIOD_D1,1); // Возвращает значение минимальной цены бара D1 //--- Min_D_Leve for(int i = 1; 0 <= Bar_data_D1 [i][2] ;i++) { Print(" i = ",i," Bar_data_D1 [i][2] = ",Bar_data_D1 [i][2]); if( Bar_data_D1 [i][2] < Low_D1_Level) { Min_D_Level = Bar_data_D1 [i][2];break; } } //---
Что ещё нужно ?
- www.mql5.com
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую Всех ! Заранее всем спасибо !
Ошибка такого типа:
Есть линия Low_D1_Level относительно которой мы ищем в массиве Bar_data_D1 [][6]; новый уровень Min_D_Level
//--- глобальные переменные
double Low_D1_Level;
double Bar_data_D1 [][6]; // Копирует в массив данные баров указанного графика и возвращает количество скопированных баров D1
Первое измерение массива содержит количество баров. Второе измерение имеет 6 элементов со значениями:
0 - время (time),
1 - цена открытия (open),
2 - наименьшая цена (low),
3 - наивысшая цена (high),
4 - цена закрытия (close),
5 - объём (volume).
распечатка Print