Come lavorare correttamente in MT5 con OrderSend - pagina 4

 
fxsaber:
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.

 
prostotrader:

Vuoi che ti aiuti ad aggirare questi inconvenienti (per esperienza personale di trading con i robot MT5 su un conto reale)?

Aggiunto

Totalmente gratuito :)

Lo voglio! :)
 
prostotrader:
La gente non vuole pensare da sola, vuole che gli altri lo facciano per loro... Purtroppo, questo è vero.
Per pensare, bisogna avere informazioni a cui pensare. Come si può pensare se non ci sono abbastanza informazioni di base?
 
fxsaber:

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.

 
fxsaber:
Il mio suggerimento

prostotrader:

Usalo.

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.

Qui sotto c'è un esempio

Aggiunto, ed ecco i registri

https://www.mql5.com/ru/forum/38456/page85#comment_2888263

ФОРТС. Вопросы по исполнению
ФОРТС. Вопросы по исполнению
  • www.mql5.com
С большими проблемами удалось это сделать (начальник отдела по работе с профессиональными клиентами ДЦ Открытие Евгений Сергеевич,.
File:
TestOrders.mq5  23 kb
 
Andrey Khatimlianskii:
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)

 
Andrey Khatimlianskii:

Questo è un caso speciale di invio di un ordine limite a uno scambio. E un ordine di mercato nel forex?

Ho detto che non conosco il FOREX
 
Andrey Khatimlianskii:

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)