Il grande e terribile MT4 per sempre (o come strategizzare una transizione) - pagina 12
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
Sarebbe bello aggirare questo punto a livello di MT4Orders.
I backup degli ordini stanno avvenendo ora, purtroppo. Molto probabilmente a causa di questo.
https://www.mql5.com/ru/forum/93352/page40#comment_13943845?
https://www.mql5.com/ru/forum/93352/page40#comment_13943845?
Sfortunatamente, il backtracking avviene anche con questa stampella.
Non so più da che parte fare il debug.
Sfortunatamente, il backtracking avviene anche con questa stampella.
Non so più da che parte fare il debug.
Ecco la ragione (non che non ce ne siano altre).
P.6 è il più sgradevole. Come aggirare questo bug di MT5 - non l'ho capito.
Ecco la ragione (non che non ce ne siano altre).
P.6. è il più sgradevole. Come aggirare questo bug di MT5 - non l'ho capito.
Il controllo degli ordini "mancanti" funzionerebbe qui. Ma non funzionerebbe.
Devo aver sbagliato qualcosa.
Un controllo dell'ordine mancante funzionerebbe qui. Non funziona.
Anch'io devo aver fatto qualcosa di sbagliato.
Al punto 7. "L'ordine mancante appare, ma non c'è ancora una posizione.
Al punto 7. Il "missing" viene trovato, ma la posizione è ancora mancante.
Significa che il ciclo su MT4Orders::OrdersTotal() non vedrà né l'ordine né la posizione?
Pensavo che questo punto fosse risolto: o l'ordine/posizione è nella lista, o l'ordine è "mancante". Come può accadere una terza cosa?
Questo significa che il ciclo MT4Orders::OrdersTotal() non vedrà né l'ordine né la posizione?
In tutti i punti, tranne il punto 6 e il punto 7, mostra che una posizione è visibile.
Pensavo che questo punto fosse appena risolto: o l'ordine/posizione è nella lista, o l'ordine è "mancante". Come può esserci un terzo?
Immaginate che il vostro EA raggiunga la posizione 6 senza sapere nulla del fatto che c'era un ordine. In questo caso non c'è modo per lui di sapere che la situazione corrisponde all'ordine mancante.
Immaginate che il vostro EA arrivi al punto 6 senza sapere nulla dell'esistenza di un ordine. In questo caso non c'è modo per lui di sapere che la situazione corrisponde all'ordine mancante.
Non posso immaginare una tale situazione se i limiti sono utilizzati a una certa distanza dal prezzo (non nello spread).
Avrà sempre il tempo di vedere l'ordine del set nella lista. E successivamente l'ordine diventerà "mancante", o si trasformerà in una posizione.
Ammetto che una tale situazione è possibile se un altro EA ha lanciato un ordine al prezzo corrente e questo ha iniziato immediatamente a riempirsi (punto 6).
Ma questo ancora non spiega perché il primo EA smette di vedere il suo ordine (con il suo mago) nella lista di MT4Orders::OrdersTotal().
È stato sorprendentemente facile riprodurre la situazione su un EA live - nel momento in cui uno degli ordini è stato eseguito, l'EA ha perso di vista anche l'altro.
Ma quando si cerca di costruire un semplice esempio per la riproduzione, tutto funziona bene. Sembra che io abbia davvero creato un bug da qualche parte nei meandri del mio codice.
Ecco dalla documentazione:
"l'ordine in cui queste transazioni arrivano nel terminale non è garantito, quindi non potete basare il vostro algoritmo di trading sull'attesa che alcune transazioni commerciali arrivino dopo che altre sono arrivate. " https://www.mql5.com/ru/docs/event_handlers/ontradetransaction
E per esperienza, le transazioni TRADE_TRANSACTION_ORDER_DELETE, TRADE_TRANSACTION_DEAL_ADD, TRADE_TRANSACTION_HISTORY_ADD possono arrivare in qualsiasi ordine.
Quindi, abbiamo situazioni in cui non c'è ancora un accordo o un ordine nella storia, ma l'ordine esiste già. O viceversa, l'ordine è ancora lì, ma l'affare è già stato eseguito. Ma la situazione in cui l'ordine è contemporaneamente nell'attivo e nella storia è difficilmente possibile.
In realtà, questo è il motivo per cui abbiamo rifiutato di usare la classe CTrade- ha tutte queste insidie.
Il modo per combattere questo problema è che ogni EA tiene una lista dei suoi ordini e controlla il loro stato. Compresi gli stati "non standard" - "ordine inviato ma non ancora funzionante" (qui possono raddoppiare) o "ordine cancellato ma non ancora nella storia". Aiuta anche a lavorare sullo stesso simbolo allo stesso tempo quando si fa il netting.