Le persone non solo pensano, ma condividono anche le loro soluzioni. Gli sviluppatori tacciono su questo, purtroppo.
Non un solo esempio nella documentazione su questo argomento. E questo con la funzione principale.
Io sostengo. Se fosse scritto da qualche parte che OrderSend() aspetta una risposta dal server e cosa succede dopo, non ci sarebbe bisogno di inventarsi dei workaround per controllare.
C'è un eccellente articolo sugli ordini, le offerte e le posizioni e il lavoro con loro e la loro cache che dettaglia tutto. Tuttavia, evita completamente i processi che avvengono quando si inviano gli ordini stessi.
Cosa succede se l'evento OnTrade() viene attivato prima che l'elaborazione OnTick() sia terminata. A volte il tempo è fondamentale. Aspettare finché non raggiunge OnTrade() può essere problematico. Inoltre, la funzione OrderSend() stessa è progettata in modo che io possa ottenere informazioni sui suoi risultati direttamente sul posto. O non lo è?
Oleg Shenker: E cosa succede se l'evento OnTrade() viene attivato prima che l'elaborazione OnTick() sia finita. A volte il tempo è fondamentale. Aspettare che si verifichi l'evento OnTrade() può essere problematico. Inoltre, la funzione OrderSend() stessa è progettata in modo che io possa ottenere informazioni sui suoi risultati direttamente sul posto. O non lo è?
OrderSend() è una funzione assolutamente sincrona - se viene ricevuto un biglietto, tutto viene eseguito.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Purtroppo, solo attraverso una stampella - una variabile globale del terminale.
E attraverso stampelle aggiuntive per garantire che la variabile principale sia cancellata in caso di crash, per esempio.
Quindi la mia variante con l'attesa di una transazione nella storia è più affidabile e più semplice. Ma è comunque una stampella.
Non ho controllato, ma forse dopo OrderSend TUTTI gli EA ricevono l'evento corrispondente perOnTradeTransaction.
Allora tutto è risolto senza stampelle e per più EAs sullo stesso simbolo.
Vuoi che ti aiuti ad aggirare questi inconvenienti (per esperienza personale di trading con i robot MT5 su un conto reale)?
Aggiunto
Totalmente gratuito :)
La gente non vuole pensare da sola, vuole che gli altri lo facciano per loro... Purtroppo, questo è vero.
Le persone non solo pensano, ma condividono anche le loro soluzioni. Gli sviluppatori tacciono su questo, purtroppo.
Non un solo esempio nella documentazione su questo argomento. E questo con la funzione principale.
Io sostengo. Se fosse scritto da qualche parte che OrderSend() aspetta una risposta dal server e cosa succede dopo, non ci sarebbe bisogno di inventarsi dei workaround per controllare.
C'è un eccellente articolo sugli ordini, le offerte e le posizioni e il lavoro con loro e la loro cache che dettaglia tutto. Tuttavia, evita completamente i processi che avvengono quando si inviano gli ordini stessi.
Il mio suggerimento
Usalo.
E cosa succede se l'evento OnTrade() viene attivato prima che l'elaborazione OnTick() sia finita. A volte il tempo è fondamentale. Aspettare che si verifichi l'evento OnTrade() può essere problematico. Inoltre, la funzione OrderSend() stessa è progettata in modo che io possa ottenere informazioni sui suoi risultati direttamente sul posto. O non lo è?
OrderSend() è una funzione assolutamente sincrona - se viene ricevuto un biglietto, tutto viene eseguito.
Qui sotto c'è un esempio
Aggiunto, ed ecco i registri
https://www.mql5.com/ru/forum/38456/page85#comment_2888263
Non eseguito, ma inviato al server MT5.
No. Per lo scambio - è andato allo scambio (potrebbe non aver adempiuto :) ), per il FOREX non so
Aggiunto
Cioè (per lo scambio), se si ottiene un biglietto nella funzione OrderSend((), significa che l'ordine è accettato dallo scambio
Aggiunto
Vedere l'immagine (ci sono stati cambiamenti nel 1375)
Questo è un caso speciale di invio di un ordine limite a uno scambio. E un ordine di mercato nel forex?
Non una volta in questo thread. Solo sulla sincronia di MT5 e OrderSend.
Quindi la risposta non si adatta.
No. Per Exchange - è andato a Exchange (forse non si è realizzato :) ), per FOREX non so
Aggiunto
Cioè (per lo scambio), se si ottiene un biglietto nellafunzione OrderSend((), significa che l'ordine è accettato dallo scambio
Aggiunto
Vedere l'immagine (ci sono stati cambiamenti nel 1375)