Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 201
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Per questi casi, ecco alcune macro ausiliarie.
1. a volte volete determinare all'interno della vostra macro se un parametro è stato impostato o meno. IS_PARAMETER_SET(p) definisce un'espressione che restituisce vero se p è impostato (anche se la variabile stringa ==NULL).
Attenzione: l'espressione è valutata dopo la pre-elaborazione in fase di compilazione!!!, cioè non può essere usata per implementare qualcosa come #ifdef IS_PARAMETER_SET(p) #else (questo vale anche per altre macro sotto)
2. Se avete bisogno di convertire esplicitamente il valore di un parametro in una stringa, per evitare un errore di compilazione con un parametro non specificato, potete usare __EVAL_STR(p). Se p non è specificato o definito esplicitamente con un letterale NULL, restituisce "". Non applicabile a matrici, strutture e classi.
La conversione esplicita di un parametro in un numero è __EVAL_NON_STR(p). Se p non è impostato, restituisce 0. Non funziona quando p è una stringa!
Codice ed esempi di utilizzo:
Il seguente codice sul conto demoRannForex-Server può riprodurre immediatamente questa situazione eseguendo questo consulente.
Risultato.
A proposito, lo script mostra (non sempre la prima volta) un bug nell'esecuzione sincrona di OrderSend.
Dopo che OrderSend viene eseguito per alcune decine/centinaia di millisecondi, il prezzo dell'ordine è quello vecchio, e non quello che è stato piazzato con successo da OrderSend.
Tornando all'argomento dei biglietti identici, possiamo trarre alcune conclusioni.
Se qualcuno è riuscito a riprodurlo su un altro server di trading, per favore condivida il nome.
Stringa di ricerca: Oshibka 010.
Torniamo di nuovo alla questione dell'esecuzione parziale.
1. Si prega di chiarire il punto 3: "Puoi chiudere la posizione che hai formato senza rimuovere l'Esecuzione parziale. Ma se dopo che l'ordine è scattato, si aprirà un trade con un ticket uguale al ticket della posizione che hai chiuso prima. Cioè, ci può essere una situazione in cui si chiude una posizione con un certo biglietto. E poi una posizione appare di nuovo con lo stesso biglietto"
In questo caso, POSITION_IDENTIFIER era uguale a POSITION_TICKET o no?
2. Prima nel thread "POSITION_TICKET != POSITION_IDENTIFIER" hai dimostrato una logica diversa di MT5.
https://www.mql5.com/ru/forum/227423/page2#comment_6543129Conclusioni
Se assumiamo che questo è un comportamento normale di MT5, e non una peculiarità dell'hack del broker, allora
Nella vostra esperienza, c'è un modello generale, in quali casi/modalità di funzionamento si applica MT5?
3. In definitiva, ci sono mai state situazioni reali in cui "POSITION_TICKET != POSITION_IDENTIFIER"?
Quando si chiama una macro, è possibile omettere un parametro (lasciarlo fuori), e a volte si vuole specificatamente permettere a una macro di lavorare con un parametro non specificato.
Quindi risulta che un parametro non specificato in qualsiasi macro è trattato dal compilatore come una stringa vuota?
In un certo senso, sì, anche se forse "come uno spazio vuoto" è una parola migliore. Difficile da articolare chiaramente :-(.
Ma #p si trasforma sicuramente in stringa ==""
In un certo senso, sì, anche se forse "come uno spazio vuoto" è una parola migliore. Difficile da articolare chiaramente :-(.
Ma #p si trasforma sicuramente in stringa ==""
Grazie, sfumatura interessante.
@fxsaber
Cercate questo numero, per favore: https://www.mql5.com/ru/forum/170952/page201#comment_21964923
Torniamo di nuovo alla questione delle prestazioni parziali.
1. Si prega di chiarire il punto 3: "È possibile chiudere una posizione formata senza rimuovere l'opzione di vendita parziale. Ma se dopo che l'ordine è scattato, si aprirà un trade con un ticket uguale al ticket della posizione che hai chiuso prima. Cioè, ci può essere una situazione in cui si chiude una posizione con un certo biglietto. E poi una posizione appare di nuovo con lo stesso biglietto"
In questo caso, POSITION_IDENTIFIER era uguale a POSITION_TICKET o no?
2. Prima, nel ramo "POSITION_TICKET != POSITION_IDENTIFIER" hai dimostrato una logica diversa di MT5.
https://www.mql5.com/ru/forum/227423/page2#comment_6543129Nella vostra esperienza, avete mostrato un modello generale in quali casi/modalità di funzionamento si applica lo schema MT5?
3. In definitiva, ci sono mai state situazioni reali in cui "POSITION_TICKET != POSITION_IDENTIFIER"?
Entrambi i link parlano di diverse implementazioni dell'esecuzione parziale. Questo è determinato dal software del broker, non da MT5.
Non è mai stato riscontrato alcun errore tra il biglietto e l'ID.
Forum sul trading, sistemi di trading automatico e test di strategia
Biblioteche: Uso
fxsaber, 2021.05.01 14:17
GetMicrosecondCount può produrre un valore inferiore a quello della chiamata precedente (senza overflow di ULONG). Esempi di tali situazioni.Ogni linea è ottenuta da diversi EA su tre terminali MT4.
E su MT5 questo genere di cose accade, ma molto meno frequentemente su MT4.
Fate attenzione.