Yardım Gerekiyor'da dizi aralık dışında

 

Hepiniz hoşgeldiniz ! Hepinize şimdiden teşekkürler!

Bu tür bir hata:

Bar_data_D1 [][6] dizisinde aradığımız göreli Low_D1_Level satırı var; yeni seviye Min_D_Level

//--- global değişkenler

çift Low_D1_Level;

çift Bar_data_D1[][6]; // Belirtilen grafiğin çubuklarının verilerini diziye kopyalar ve kopyalanan çubukların sayısını D1 döndürür

Dizinin ilk boyutu çubuk sayısını içerir. İkinci boyutun değerleri olan 6 öğesi vardır:

0 - zaman (zaman),
1 - açılış fiyatı (açık),
2 - en düşük fiyat (düşük),
3 - en yüksek fiyat (yüksek),
4 - kapanış fiyatı (kapanış),
5 - hacim.

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

Yazdır

 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 satırında dizi sınırların dışında .

'e bakın, o zaman ne <=

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

 

daha iyi bir seçenek önerebilir misiniz? nasıl uygulanır

 

EA durma zamanı

çizgiler günde bir kez yeniden çizilir


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

 

2020

5 yılını test etmek istedi ve Array'in menzil dışında kalmasıyla karşılaştı

 

en yakın 3500 bar +- değerine kadar ve 1000,1001, 1002'de asılı kalıyor

neden dizide daha aşağı inmiyor?

 

KOD DÜZELTİLDİ: Hata yok, dizi boyunca ilerlemiyor ve satır bu gün yeniden çizilmiyor


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



Yazdır

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 :


hata burada olmayabilir. Kodsuz anlamak zor

 
MakarFX :

hata burada olmayabilir. Kodsuz anlamak zor


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


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

Başka ne gerekli?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
 
Bar_data_D1 dizisini MqlRates türüyle bildirin. Sonuç olarak, tek boyutlu hale gelecektir. Ya da spread ve real_volume alanlarının gereksiz olduğunu düşünüyorsanız MqlRates yerine kendi yapınızı bildirin.
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5