도움이 필요한 배열이 범위를 벗어났습니다.

 

모두를 환영합니다! 모두 미리 감사드립니다!

이 유형의 오류:

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 - 볼륨.

 //+------------------------------------------------------------------+
//|                        Функция 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 ;
       }
    } 
//---

인쇄

 2020.12 . 09 15 : 19 : 29.109 2016.12 . 16 00 : 00 : 00   _Test EURUSD,H1:  i = 998 Bar_data_D1 [i][ 2 ] = 1.3364
2020.12 . 09 15 : 19 : 29.109 2016.12 . 16 00 : 00 : 00   _Test EURUSD,H1:  i = 999 Bar_data_D1 [i][ 2 ] = 1.33562
2020.12 . 09 15 : 19 : 29.109 2016.12 . 16 00 : 00 : 00   _Test EURUSD,H1:  i = 1000 Bar_data_D1 [i][ 2 ] = 1.33532
2020.12 . 09 15 : 19 : 29.109 2016.12 . 16 00 : 00 : 00   _Test EURUSD,H1:  i = 1001 Bar_data_D1 [i][ 2 ] = 1.33705
2020.12 . 09 15 : 19 : 29.109 2016.12 . 16 00 : 00 : 00   _Test EURUSD,H1: array out of range in '_Test.mq4' ( 451 , 34 )
2020.12 . 09 15 : 19 : 29.110 2016.12 . 16 00 : 00 : 00   Testing pass stopped due to a critical error in the EA
2020.12 . 09 15 : 19 : 29.110 EURUSD,H1: 136637 tick events ( 25 bars, 63904705 bar states) processed in 0 : 00 : 17.844 (total time 0 : 00 : 24.547 )

Документация по MQL5: Доступ к таймсериям и индикаторам / iLow
Документация по MQL5: Доступ к таймсериям и индикаторам / iLow
  • www.mql5.com
Значение минимальной цены бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Функция всегда возвращает актуальные данные, для этого она при каждом вызове делает запрос к таймсерии по указанным символу/периоду. Это...
 
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;
       }
    } 
//---
изначально было так 

 

더 나은 옵션을 제안할 수 있습니까? 그것을 구현하는 방법

 

EA 정지 시간

선은 하루에 한 번 다시 그려집니다.


차트 EURUSD, H1, 2020.12.09 10:21 UTC, Gerchik and Co Limited, MetaTrader 4, Real

 

2020년

5년을 테스트 하고 범위를 벗어난 어레이를 발견했습니다.

 

3500 bar +- 의 가장 가까운 최저점으로 이동하고 1000,1001, 1002 에서 멈춥니다.

배열 아래로 더 내려가지 않는 이유는 무엇입니까?

 

코드 수정됨: 오류가 없습니다. 배열을 따라 더 이상 진행되지 않으며 이 날 라인이 다시 그려지지 않습니다.


 //--- 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






 
Dark Kchlyzov :


오류는 여기에 없을 수 있습니다. 코드 없이 이해하기 어렵다

 
MakarFX :

오류는 여기에 없을 수 있습니다. 코드 없이 이해하기 어렵다


//--глобальные переменные


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 ;        }     } //---

그 밖에 무엇이 필요합니까?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
MqlRates 유형으로 Bar_data_D1 배열을 선언하십시오. 결과적으로 1차원이 됩니다. 또는 Spread 및 real_volume 필드가 불필요하다고 생각되는 경우 MqlRates 대신 고유한 구조를 선언하십시오.
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5