Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1186

 
Vladimir Karputov :

Dov'è la domanda? Quali sono esattamente gli errori? Mi dispiace, tutti i telepati sono in vacanza.

Questa è la domanda. Inoltre non capisco quale sia l'errore. Pensi che l'avrei messo qui se avessi saputo qual era l'errore? Non ricevo nemmeno l'errore. Solo questo messaggio e nient'altro.

 
jaffer wilson:

Questa è la domanda. Inoltre non capisco quale sia stato l'errore. Pensi che l'avrei messo qui se avessi saputo qual era l'errore? Non ricevo nemmeno l'errore. Solo questo messaggio e nient'altro.

Fare clic su

 
Vladimir Karputov :

Dov'è la domanda? Quali sono esattamente gli errori? Mi dispiace, tutti i telepati sono in vacanza.


Ok, ho capito.

test su EURUSD, H1 (netting) Tradestatisticspanel (EURUSD, H1) Il codice di ritorno di OnInit è -1 non può inizializzare l'indicatore in modo inconsistente

 

Per favore, datemi un suggerimento!

Nell'aiuto è scritto che un'istanza di una struttura è una variabile. Per esempio, abbiamo una struttura

struct STRUCT_POSITION {
   double            volume;                 
   double            lot_coefficient;        
   bool              waiting_transaction;    
   ulong             waiting_order_ticket;   
   bool              transaction_confirmed;  
   }

Poi creiamo un'istanza della struttura dichiarando una variabile del suo tipo:

STRUCT_POSITION SPosition;

Ma mi sono imbattuto in questo nel codice

STRUCT_POSITION SPosition[];

E questo mi ha confuso. Non ho visto da nessuna parte che sia possibile dichiarare un array di tipo struttura. Quali proprietà avrà ora questa matrice? Si può chiamare "istanza di struttura"? Forse sapete dove leggere di più su questo argomento?

 
odyn:

Per favore, datemi un suggerimento!

La guida dice che un'istanza di una struttura è una variabile. Per esempio, abbiamo una struttura

Poi creiamo un'istanza della struttura dichiarando una variabile del suo tipo:

Ma mi sono imbattuto in questo nel codice

E questo mi ha confuso. Non ho visto da nessuna parte che si possa dichiarare un array di tipo struttura. Quali proprietà avrà ora questa matrice? Si può chiamare "istanza di struttura"? Potete dirmi dove leggere di più su questo?

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Alexey Viktorov, 2020.02.23 08:29

Dichiarando la struct STRUCT_POSITION {\...\}, questa è la creazione di un tipo di dati personalizzato. E STRUCT_POSITION SPosition[]; è la dichiarazione di una variabile di tipo utente. Le parentesi quadre [] indicano che la variabile è un array. Potete dichiarare diverse variabili di tipo utente proprio come qualsiasi altro tipo.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
In questo tipo di voce, variabile, array

Oh... Non ho notato subito che eri tu ad avere questa risposta esatta.

Per elaborare: un array è solo un insieme di variabili indicizzate. Primitivamente, abbiamo due variabili p1 e p2 o abbiamo l'array p[2], nel qual caso non importa se memorizziamo il valore nella variabile p1 o in una cella dell'array p[0], o nella variabile p2 o nell'array p[1].

Quando hai bisogno di 2-3, o al massimo 5 variabili, puoi fare con le variabili, ma se hai bisogno di 100 o anche un numero sconosciuto di variabili... È qui che entra in gioco la bellezza degli array.

 
Alexey Viktorov:

Oh... Non ho notato subito che eri tu ad avere la risposta.

Più in dettaglio: un array è solo un insieme di variabili indicizzate. Primitivamente, abbiamo due variabili p1 e p2, o abbiamo l'array p[2], nel qual caso non importa se il valore è memorizzato nella variabile p1 o in una cella dell'array p[0], o nella variabile p2 o nell'array p[1].

Se hai bisogno di 2-3 o al massimo 5 variabili, lo farai con le variabili, ma se hai 100 o anche un numero sconosciuto di variabili richieste... È qui che entra in gioco la bellezza degli array.

Alexey, ho capito bene che un array, a differenza di una variabile, non conterrà campi della struttura, ma istanze della struttura, in numero da zero a più ?

P.S.: il codice non eraSTRUCT_POSITION Pos,SPosition[]

maSTRUCT_POSITION SPosition[];

nessuna variabile.

 
odyn:

Alexey, ho capito bene che un array, a differenza di una variabile, non conterrà campi della struttura, ma istanze della struttura, in numero da zero a più ?

Un bus (variabile con struttura di tipo bus) ha tre campi:
1. Driver
2. Conduttore
3. Passeggeri[].
Una flotta di autobus (una serie di strutture di autobus) ha 120 autobus, ognuno con gli stessi campi:
1. Driver
2. Conduttore
3. Passeggeri[].
Ma ogni autobus ha questi campi diversi dagli altri autobus.
In conclusione: una flotta di autobus è un array di stringhe di tipo di autobus.
 
Artyom Trishkin:
Un bus (variabile con struttura di tipo bus) ha tre campi:
1. Driver
2. Conduttore
3. Passeggeri[].
Una flotta di autobus (una serie di strutture di autobus) ha 120 autobus, ognuno con gli stessi campi:
1. Driver
2. Conduttore
3. Passeggeri[].
Ma ogni autobus ha campi diversi dagli altri autobus.
In conclusione: una flotta di autobus è un array di stringhe di tipo di autobus.

Grazie, è molto chiaro. :) Quindi è un array di puntoni, capisco.

 
odyn:

Grazie, è molto chiaro. :) È una STRUTTURA MASSICCIA, capisco.

È stato spiegato molto bene da Artem mentre ero assente. Mi limiterò ad aggiungere alla tua comprensione: ottieni un array di strutture che contengono un array di passeggeri.

Ogni cella della matrice ha un pilota, un conduttore e molti passeggeri (matrice).

 
Artyom Trishkin:

Qui

State creando un oggetto di classe base. Di conseguenza - avete una classe base ovunque.

ma è possibile dichiarare una classe come classe base e poi, a seconda delle condizioni, sovrascriverla come una delle classi ereditate?

Il compito è quello di lasciare il nome della classe lo stesso nel codice.

Inoltre, per favore consigliate quale direttiva usare per definire il tester.

#ifdef MQL_TESTER || MQL_VISUAL_MODE

È possibile farlo in questo modo?