Domande di OrderSend() - pagina 7

 

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:

  • azione
  • simbolo
  • volume
  • tipo
  • tipo_riempimento

Puoi anche specificare campi magici e di commento.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 

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?

 
voix_kas:

...

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.

Il valore restituito è

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.
 
voix_kas: Mando una richiesta di compravendita usandoOrderSend. Questa funzione restituisce true.

2. analizzare ilretcode (MqlTradeResult). La variabile ha il valoreTRADE_RETCODE_DONE.

Questa situazione garantisce l'esecuzione effettiva di un ordine sul server?

retcode può restituire qualcosa di diverso da RETCODE_DONE :). Ma se un server di trade restituisce esattamenteTRADE_RETCODE_DONE (ordine eseguito), allora perché dovremmo controllare qualcos'altro? A mio modesto parere, in questa situazione le funzioni OnTrade, OnTradeTransaction duplicherebbero semplicemente il retcode.
 
fyords:

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?

 
Yedelkin:
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?

Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
Документация по MQL5: Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера
  • www.mql5.com
Стандартные константы, перечисления и структуры / Коды ошибок и предупреждений / Коды возврата торгового сервера - Документация по MQL5
 
voix_kas: A giudicare dalla lista dei"Trade 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.

Posso chiederti quali attacchi usi personalmente?

C'è anche "Posto". Sono loro (Placed/Done) che controllo dal punto di vista dell'invio riuscito della richiesta.
 
Può citare un codice specifico?
 
voix_kas: Può citare un codice specifico?
No, non posso darvi un codice specifico. In primo luogo, è stato sigillato nelle classi da un anno, e in secondo luogo, devi cercarlo... Hai chiesto - Che tipo di raccoglitore sto usando? - Ho risposto sinceramente.
 
voix_kas:

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.

Motivazione: