Array fuori portata in Bisogno di aiuto - pagina 3

 

OK

in questo periodo

 
Dark Kchlyzov:

Non lo capisci?

per una settimana o un mese, il minimo più vicino a quale giorno?
 
Ho capito, per tutto il periodo
 
Low_D1_Level   = iLow (_Symbol,PERIOD_D1,1);   // Возвращает значение минимальной цены бара  D1

Il minimo più vicino nella storia è inferiore a Low_1_Level , che sarà .

Eseguite il codice per vedere come funziona.

 
Dark Kchlyzov:

Non ho errori per tutto il periodo

Sto allegando il registro

File:
20201209.log  3729 kb
 
MakarFX:

Non ho errori per tutto il periodo

Allego il registro.

Sembra che non ci sia nessun errore, ma è nel log

Hai nel tuo log 19:31:53.126 2016.12.15 00:00:00 Array EURUSD,H1: i = 456 Bar_data_D1 [i][2] = 1.04789

poiché ho un prezzo Min_D:104789 più di low_D1 1.03660 , per convenzione non può essere così.

Se sostituisco il ciclo for, ci sarà un errore. e sarà corretto.

in realtà l 'espressione2 sta solo mascherando un errore

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:


C'è una domanda. Perché iniziate il ciclo con il primo elemento e non con zero?

 
Dark Kchlyzov:

Se non vi dispiace darmi un esempio, come scriverlo correttamente?

Ho una certa esperienza nel trading, ma sto solo iniziando a imparare MQL4.

Se usate MqlRates, allora dichiarate un array:

MqlRates Bar_data_D1[];

Cioè, si ottiene un array unidimensionale invece di uno bidimensionale. MqlRates è una struttura standard (descritta in MQL4 Reference sotto "Basics of the Language" - "Data Types" - "Structures, Classes, Interfaces"). Ha tutti i campi di cui avete bisogno in questo caso. Potete rivolgervi a loro in questo modo:

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

i è l'indice della matrice.

Allo stesso modo potete creare la vostra struttura per registrare i parametri delle candele. Sarà più piccolo di Mqlrates di due campi (spread e real_volume), di cui non avete bisogno. La struttura sarà così:

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

Dichiarare un array di tali strutture si presenta così:

BarData Bar_data_D1[];

L'accesso ai membri della struttura è simile all'accesso ai membri della struttura MqlRates.

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

Esattamente!

 
Ihor Herasko:

Se tramite MqlRates, dichiarate l'array in questo modo:

Cioè, si ottiene un array unidimensionale invece di uno bidimensionale. MqlRates è una struttura standard (descritta in MQL4 Reference sotto "Language Fundamentals" - "Data Types" - "Structures, Classes, Interfaces"). Ha tutti i campi di cui avete bisogno in questo caso. Potete rivolgervi a loro in questo modo:

i è l'indice della matrice.

Allo stesso modo potete creare la vostra struttura per registrare i parametri delle candele. Sarà più piccolo di Mqlrates di due campi (spread e real_volume), di cui non avete bisogno. La struttura sarà così:

Dichiarare un array di tali strutture si presenta così:

L'accesso ai membri della struttura è simile all'accesso ai membri della struttura MqlRates.

Ok, lo proverò domani!

Grazie per il vostro aiuto. Vi farò sapere quando l'avrò capito.