Array out of range in Besoin d'aide - page 3

 

OK

pendant cette période

 
Dark Kchlyzov:

Vous ne comprenez pas ?

pour une semaine ou un mois, le minimum le plus proche de quel jour ?
 
J'ai compris, sur l'ensemble de la période
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

Le minimum le plus proche dans l'historique est inférieur à Low_1_Level , qui sera .

Exécutez le code pour voir comment il fonctionne.

 
Dark Kchlyzov:

Je n'ai pas d'erreurs pour toute la période

Je joins le journal

Dossiers :
20201209.log  3729 kb
 
MakarFX:

Je n'ai pas d'erreurs pour toute la période

Je joins le journal.

Il ne semble pas y avoir d'erreur mais c'est dans le journal

Vous avez dans votre journal 19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1 : i = 456 Bar_data_D1 [i][2] = 1.04789

comme j'ai un prix Min_D:104789 plus que le bas_D1 1.03660, par convention il ne peut en être ainsi.

si je remplace la boucle for, il y aura une erreur. et ce sera correct.

en fait l 'expression2 ne fait que masquer une erreur

i<ArrayRange(Bar_data_D1,0)
 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;
       }
    } 


 
Dark Kchlyzov:


Il y a une question. Pourquoi commencer la boucle avec le premier élément et non le zéro ?

 
Dark Kchlyzov:

Si vous voulez bien me donner un exemple, comment l'écrire correctement ?

J'ai une certaine expérience du trading, mais je commence seulement à apprendre MQL4.

Si vous utilisez MqlRates, déclarez alors un tableau :

MqlRates Bar_data_D1[];

En d'autres termes, vous obtenez un tableau unidimensionnel au lieu d'un tableau bidimensionnel. MqlRates est une structure standard (décrite dans la référence MQL4 sous "Basics of the Language" - "Data Types" - "Structures, Classes, Interfaces"). Il comporte tous les champs dont vous avez besoin dans ce cas. Vous pouvez vous adresser à eux comme ceci :

Bar_data_D1[i].high; Максимум свечи
Bar_data_D1[i].low; Минимум свечи

i est l'indice du tableau.

De la même manière, vous pouvez créer votre propre structure pour enregistrer les paramètres des chandeliers. Il sera plus petit que Mqlrates de deux champs (spread et real_volume), dont vous n'avez pas besoin. La structure ressemblera à ceci :

struct BarData
{ 
   datetime time;         // время начала периода 
   double   open;         // цена открытия 
   double   high;         // наивысшая цена за период 
   double   low;          // наименьшая цена за период 
   double   close;        // цена закрытия 
   long     tick_volume;  // тиковый объем 
};

La déclaration d'un tableau de telles structures ressemble à ceci :

BarData Bar_data_D1[];

L'accès aux membres de la structure est similaire à l'accès aux membres de la structure MqlRates.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Структура исторических данных - Структуры данных - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

Exactement !

 
Ihor Herasko:

Si vous utilisez MqlRates, vous déclarez le tableau comme ceci :

En d'autres termes, vous obtenez un tableau unidimensionnel au lieu d'un tableau bidimensionnel. MqlRates est une structure standard (décrite dans la référence MQL4 sous "Language Fundamentals" - "Data Types" - "Structures, Classes, Interfaces"). Il comporte tous les champs dont vous avez besoin dans ce cas. Vous pouvez vous adresser à eux comme ceci :

i est l'indice du tableau.

De la même manière, vous pouvez créer votre propre structure pour enregistrer les paramètres des chandeliers. Il sera plus petit que Mqlrates de deux champs (spread et real_volume), dont vous n'avez pas besoin. La structure ressemblera à ceci :

La déclaration d'un tableau de telles structures ressemble à ceci :

L'accès aux membres de la structure est similaire à l'accès aux membres de la structure MqlRates.

Ok, je vais essayer demain !

Merci pour votre aide. Je vous ferai savoir quand j'aurai trouvé la solution.