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
I campi da riempire sono diversi da
SCAMBIO DI SIMBOLI
Esecuzione dello scambio
differiscono dai campi a
SIMBOLO_COMMERCIO_MERCATO_DI_ESECUZIONE
Esecuzione di ordini sul mercato
???
l'aiuto ha un esempio solo per il mercato
Esecuzione del mercato
Un ordine di compravendita per aprire una posizione nella modalità di esecuzione del mercato (Market Execution mode). Richiede la specificazione di 5 campi:
Puoi anche specificare campi magici e di commento.
Ho letto la documentazione, ho cercato nel forum... Completamente confuso. Per favore, se non ti dispiace, spiegami in N+1 volte.
1. Sto inviando una richiesta di trading usandoOrderSend. Questa funzione restituisce true.
Analizziamo ilretcode (MqlTradeResult). La variabile ha il valoreTRADE_RETCODE_DONE.
Questa situazione garantisce l'effettiva esecuzione dell'ordine sul server? O c'è ancora bisogno di eseguire alcuni controlli in OnTrade, OnTradeTransaction? Allora che senso ha analizzareil retcode se non serve a niente?
Cioè la necessità di OnTrade e OnTradeTransaction quando si usaOrderSendAsync() mi è chiara.
Sono necessari quando si usa la funzioneOrderSend()? Aspetta incondizionatamente l'esecuzione/rifiuto dell'ordine sul server prima di inviare il codice successivo all'Expert Advisor?
...
Sono necessari quando si usaOrderSend()? Aspetta incondizionatamente l'esecuzione/rifiuto dell'ordine sul server prima di inviare l'esecuzione del successivo codice EA?
Se non mi sbaglio, OrderSend non aspetta l'esecuzione dell'ordine, segnala solo che l'ordine era corretto ed è stato inviato al server.
Se il controllo di base delle strutture (controllo del puntatore) ha successo, restituisce true - non indica la riuscita dell'esecuzione dell'operazione commerciale. Per ottenere una descrizione più dettagliata del risultato dell'esecuzione della funzione, analizzate i campi della struttura del risultato.
2. analizzare ilretcode (MqlTradeResult). La variabile ha il valoreTRADE_RETCODE_DONE.
Questa situazione garantisce l'esecuzione effettiva di un ordine sul server?
Se non mi sbaglio, OrderSend non aspetta che l'ordine venga eseguito, ma segnala solo che l'ordine è stato vero e inviato al server delle code.
In questo caso, il solo "vero" sarebbe stato sufficiente. Ma gli sviluppatori hanno fornito un retcode che dovrebbe memorizzareil "Trade serverreturn code".
Cioè, dopo che la funzione OrderSend() funziona , vedoTRADE_RETCODE_DONE nella seconda linea dicodice e provo a cambiare, per esempio, una posizione appena aperta (che logicamente dovrebbe esistere) nella terza linea di codice. Tuttavia, PositionSelect restituisce false. L'iterazione viene ripetuta. Di conseguenza, una posizione doppia viene aperta per errore.
Come possiamo proteggerci da questa situazione?
1. Essere guidati solo dal retcode e "dimenticare"OnTrade?
2. Guidato solo daOnTrade e dimenticare il retcode?
retcode può restituire non solo RETCODE_DONE :) Ma se un server di trade restituisce esattamenteTRADE_RETCODE_DONE (ordine eseguito), allora perché dovrei controllare qualcos'altro? A mio modesto parere, in questa situazione le funzioni OnTrade, OnTradeTransaction duplicherebbero semplicemente il retcode.
A giudicare dalla lista di"Trading server return codes", c'è solo un'incertezza possibile nel modo di esecuzione della richiesta di mercato:TRADE_RETCODE_LOCKED. E qui, forse, non possiamo fare a meno di OnTrade.
Mi permetta di chiederle quale connessione usa personalmente?
Posso chiederti quali attacchi usi personalmente?
Come ci si può assicurare contro una tale situazione?
1. Usare solo il retcode e "dimenticare"OnTrade?
2. Devo usare soloOnTrade e non usare il retcode?
È più affidabile seguire OnTrade, ma si può anche farne a meno - analizzare la transazione completata (ResultDeal()).
Ci sarà presto un articolo su questo argomento.