Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 591

 
barudkinarseniy:
Non vedo alcun problema, il mio Expert Advisor funziona solo in modo tale che dopo aver chiuso un trade redditizio o in perdita apre immediatamente gli ordini e il numero di ticket nella stampante è molto grande, quindi ho pensato che non dovrebbe ricaricarlo manualmente, forse si può fare automaticamente. Dovrei ringraziarti anche per questa funzione))
Se si guardano i 1000 ordini in un anno non è niente, basta guardare i ticker sui conti reali. Ho, per esempio, l'ultimo 10179697. Generalmente, i biglietti sono di tipo int, quindi il valore massimo è 2 147 483 647.
 
Alexey Volchanskiy:
1000 ordini in un anno non sono niente, guardate i biglietti sui conti reali. Ho, per esempio, l'ultimo 10179697. Generalmente, i biglietti sono di tipo int, quindi il valore massimo è 2 147 483 647.
E cosa sarà se il valore massimo viene raggiunto?
 
in MQL5 il biglietto è di tipo ulong, sarete senza fiato per superare
 
barudkinarseniy:
E cosa succede se raggiunge il valore massimo?
I numeri per gli ordini e le compravendite sono assegnati dal broker, non dal tuo EA, e si assicureranno che non superino il valore massimo. ) Questo non è il tuo mal di testa.
 
Grazie per le informazioni utili))) Qualche idea su come controllare gli ordini limite con AccountFreeMarginCheck?
 

Ho preso l'EA standard per il demark dalla libreria, sembra funzionare. Ho iniziato a perfezionarlo.

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

Ho aggiunto dei calcoli e dei dati di uscita aggiuntivi a questo indicatore e funziona come segue

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

double LUN = iCustom(NULL, 0, "itdlines", Level, 2, 0);

double LDN = iCustom(NULL, 0, "itdlines", Level, 3, 0);

double KUN = iCustom(NULL, 0, "itdlines", Level, 4, 0);

double KDN = iCustom(NULL, 0, "itdlines", Level, 5, 0);

e il mio EA inizia a ritardare, cioè ottengo errori di dati non validi.

La domanda è se ho creato lo stesso indicatore 8 volte e ho ottenuto l'array giusto da esso, o mi sbaglio? O mi sbaglio, un indicatore viene creato una volta sola?
Se ho ragione, come posso crearlo una volta e ottenere i dati richiesti da esso?

 

Ciao colleghi!

Si prega di consigliare la struttura di una richiesta di trade per chiudere una posizione in MT5 con una copertura.

Grazie.

 
Nikita Solodko:

Ciao colleghi!

Si prega di consigliare la struttura di una richiesta di trade per chiudere una posizione in MT5 con una copertura.

Grazie.

Potete usare il metodo
bool  PositionClose( 
   const ulong   ticket,                  // тикет позиции 
   ulong         deviation=ULONG_MAX      // отклонение 
   )
dalla libreria standard della classe CTrade
 
Sergey Gritsay:
Potete usare i metodi della libreria standard della classe CTrade
Grazie, certo, ma non sto usando le classi commerciali, preferisco usare la funzione OrderSend(). E tutto andava bene prima della possibilità di copertura, ma ora nella struttura della richiesta di trading è apparso l'elemento"posizione", come indicato nell'aiuto, per indicare una posizione specifica quando si modifica e si chiude, solo che non dice come chiudere questa posizione (tipo di operazione, ecc.).
 
Milleras1981:

Ho preso l'EA standard per il demark dalla libreria, sembra funzionare. Ho iniziato a perfezionarlo.

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

Ho aggiunto dei calcoli e dei dati di uscita aggiuntivi a questo indicatore e funziona come segue

double DU = iCustom(NULL, 0, "itdlines", Level, 0, 0);

double DD = iCustom(NULL, 0, "itdlines", Level, 1, 0);

double DU1 = iCustom(NULL, 0, "itdlines", Level, 0, 1);

double DD1 = iCustom(NULL, 0, "itdlines", Level, 1, 1);

double LUN = iCustom(NULL, 0, "itdlines", Level, 2, 0);

double LDN = iCustom(NULL, 0, "itdlines", Level, 3, 0);

double KUN = iCustom(NULL, 0, "itdlines", Level, 4, 0);

double KDN = iCustom(NULL, 0, "itdlines", Level, 5, 0);

e comincia a ritardare, cioè ottengo errori di dati non validi.

La domanda è se ho creato lo stesso indicatore 8 volte e ho ottenuto l'array giusto da esso, o mi sbaglio? O mi sbaglio, un indicatore viene creato una volta sola?
Se ho ragione, come posso crearlo una volta e ottenere i dati richiesti da esso?

Prima di migliorarlo, l'Expert Advisor riceveva 4 valori: dal buffer dell'indicatore zero dell'ultima e penultima barra, e anche dal buffer del primo indicatore, mentre tu stai cercando di ricevere informazioni da 6 buffer di indicatori... Sei sicuro di averli nell'indicatore? Cosa state cercando di ottenere?
Motivazione: