Array außerhalb der Reichweite in Need of help

 

Grüße an alle! Ich danke Ihnen allen im Voraus!

Fehler dieser Art:

Im Array Bar_data_D1 [][6] gibt es eine Zeile Low_D1_Level, auf die wir uns beziehen ; neuer Level Min_D_Level

//--- globale Variablen

double_D1_Level;

double Bar_data_D1 [][6]; //kopiert die Balken des angegebenen Charts in das Array und gibt die Anzahl der kopierten D1-Balken zurück

Die erste Dimension des Arrays enthält die Anzahl der Balken. Die zweite Dimension hat 6 Elemente mit den Werten:

0 - Uhrzeit,
1 - Eröffnungskurs,
2 - niedrigster Kurs (low),
3 - höchster Kurs (high),
4 - Schlusskurs (close),
5 - Volumen.

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

Drucken Drucken

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)


In Zeile 451,34 gibt es einen Ausgang außerhalb des Arrays.

Siehe in , was sich dahinter verbirgt <=

 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;
       }
    } 
//---
изначально было так 

 

Fällt Ihnen eine bessere Option ein? Wie kann sie umgesetzt werden?

 

in dem Moment, in dem der Berater aufhört

die Linien werden einmal pro Tag neu gezeichnet


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

 

2020

wollte 5 Jahre testen und stieß dabei aufArray out of range

 

auf den nächsten Tiefstwert von 3500 bar +- , aber es friert bei 1000,1001,1002

warum geht es nicht weiter unten in der Reihe weiter?

 

CODE RETURNED : Kein Fehler, kein weiteres Array und kein Zeilenumbruch an diesem Tag.


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



Drucken

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






 
Dark Kchlyzov:


der Fehler liegt möglicherweise nicht hier. Ohne den Code ist es schwierig zu verstehen

 
MakarFX:

der Fehler liegt möglicherweise nicht hier. Ohne den Code ist es schwer zu verstehen


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


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

Was brauchen Sie noch?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Array Bar_data_D1 mit Typ MqlRates deklarieren. Infolgedessen wird sie eindimensional werden. Oder deklarieren Sie Ihre eigene Struktur anstelle von MqlRates, wenn Sie glauben, dass die Felder spread und real_volume unnötig sind.
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5