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 _테스트 EURUSD,H1: i = 996 Bar_data_D1[i][2] = 1.33147
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _테스트 EURUSD,H1: i = 997 Bar_data_D1[i][2] = 1.3426
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _테스트 EURUSD,H1: i = 998 Bar_data_D1[i][2] = 1.3364
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _테스트 EURUSD,H1: i = 999 Bar_data_D1[i][2] = 1.33562
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _테스트 EURUSD,H1: i = 1000 Bar_data_D1 [i][2] = 1.33532
2020.12.09 17:03:30.363 2016.12.16 00:00:00 _테스트 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
모두를 환영합니다! 모두 미리 감사드립니다!
이 유형의 오류:
Bar_data_D1 [][6] 배열에서 찾고 있는 Low_D1_Level 행이 있습니다. 새 레벨 Min_D_Level
//--- 전역 변수
이중 Low_D1_Level;
이중 Bar_data_D1[][6]; // 지정된 차트의 막대 데이터를 배열에 복사하고 복사한 막대의 개수를 반환 D1
배열의 첫 번째 차원에는 막대 수가 포함됩니다. 두 번째 차원에는 값이 있는 6개의 요소가 있습니다.
0 - 시간(시간),
1 - 시가(오픈),
2 - 최저 가격(낮음),
3 - 가장 높은 가격(높음),
4 - 종가(종가),
5 - 볼륨.
인쇄