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
Mentre aspettiamo un articolo su questo argomento, capisco bene il concetto generale di analisi delle operazioni commerciali.
Cioè, più o meno, dopo aver inviato un ordine senza analizzare il retcode, vietiamo le operazioni di trading nel ciclo di lavoro (OnTick()) usando il flag "AllowTrade".
Il divieto di commercio viene sbloccato in OnTrade() solo dopo che il numero dell'ordine è stato trovato e sono state fatte alcune analisi sul suo destino.
Abbiamo due domande:
1. Qual è il biglietto d'ordine da controllare in OnTrade? Quali sono gli stati finali nella sua vita?
2. So che la coda degli eventi Tick (OnTick) può "cadere". Cioè se arriva un altro evento Tick e la funzione OnTick (dal Tick precedente) non ha ancora finito il suo lavoro, l'evento corrente sarà "abbandonato", cioè non sarà processato. C'è un approccio simile con gli eventi commerciali (OnTrade)? Cioè, è possibile che, per esempio, nel ciclo principale metto un divieto di commercio e l'evento OnTrade sull'ordine appena inviato "cade", perché al momento del suo arrivo starò ancora elaborando qualcosa nello stesso tick dell'invio dell'ordine di commercio corrispondente?
Non ho trattato questo argomento, ma ecco cosa dice il Manuale:
Non ho trattato questo argomento, ma ecco cosa dice il Manuale:
Generalmente inteso. Comepapaklass ha già sottolineato e detto nell'articolohttps://www.mql5.com/ru/articles/232:
C'è solo un modo garantito per scoprire esattamente cosa è cambiato su un conto commerciale. Questo modo è quello di ricordare lo stato del commercio e la storia del commercio e confrontare il nuovo stato con quello salvato.
Un altro blocco di servizi nell'Expert Advisor. :(
In realtà, la domanda è questa. Possiamo ridurre la dimensione del codice senza analizzare tutte le variabili (ordini/trade/posizioni), e concentrarci solo sul numero di ordine ottenuto dal risultato di OrderSend? O questo numero può essere non unico/non riflesso nella storia?
Naturalmente. Se una richiesta di compravendita ha portato alla ricezione di un biglietto d'ordine, allora questo biglietto è unico, e l'intero destino dell'ordine può essere tracciato da esso.
Qui potete vedere come viene usato il biglietto d'ordine nella storia: MQL5 Reference / Trading Functions / HistoryOrderGetInteger
Naturalmente. Se una richiesta di compravendita ha prodotto un ticket d'ordine, quel ticket è unico e può essere usato per tracciare l'intero destino dell'ordine.
Una variabile di tipo MqlTradeResult è solitamente azzerata prima di essere utilizzata. Quindi il campo Result.order contiene un valore zero. Non ho mai visto questo campo prendere un valore diverso dopo l'invio infruttuoso della richiesta di scambio.
voix_kas: Если не возражаете, хотелось бы углубиться в вопрос интерпритации кодов возврата. Из 30 задекларированных вариантов ответа (будем надеятся, что с недекларированными мы не столкнёмся) 24 - указывают на явный отказ в размещении ордера. Остальные 6:
1. TRADE_RETCODE_PLACED Supponiamo che non ci siano ordini pendenti. Questa risposta è possibile durante il trading di mercato (SYMBOL_TRADE_EXECUTION_MARKET)?
TRADE_RETCODE_DONE Non si può controllare più nulla. Tutto è andato esattamente come richiesto dall'Expert Advisor.
3. TRADE_RETCODE_DONE_PARTIAL Presumo che questa risposta sia la stessa di TRADE_RETCODE_DONE data la modalità ORDER_FILLING_IOC.
4. TRADE_RETCODE_ORDER_CHANGED Significa un rifiuto inequivocabile del nostro ordine commerciale?
5. TRADE_RETCODE_LOCKED Penso che questo sia il caso peggiore. Cosa dobbiamo fare in questo caso? Suggerisco che il numero d'ordine non è ancora disponibile. Il flusso commerciale è occupato. Non possiamo commerciare, e non è chiaro come dovremmo sapere se il flusso commerciale è sbloccato.
6. TRADE_RETCODE_FROZEN Questo significa un rifiuto inequivocabile del nostro ordine commerciale?
Si prega di commentare ogni voce.
Purtroppo le mie conoscenze non sono sufficienti per un commento completo su ogni punto. Beh, se succede qualcosa, i miei colleghi lo correggeranno.
1. Una volta il forum ha menzionato una situazione in cui un conto di trading può essere aperto con un sub-broker. In questo caso il sub-broker può inviare la richiesta di compravendita per un'ulteriore elaborazione (al broker) e inviare TRADE_RETCODE_PLACED al terminale del cliente. Non si sa se il broker alla fine elaborerà una tale richiesta di scambio.
2. Sì, lo penso anch'io. L'unica cosa che dobbiamo ricordare è che le informazioni su questo ordine saranno ricevute nel database del terminale in modo asincrono.
Penso che stiamo parlando dell'esecuzione parziale di una richiesta di compravendita nei modi ORDER_FILLING_IOC e ORDER_FILLING_RETURN.
4. https://www.mql5.com/ru/forum/1111/page124#comment_18407
5. Non so assolutamente nulla di questo codice. Tecnicamente, si scopre che la richiesta non è stata elaborata a causa di alcune ragioni interne del broker. Non è chiaro se verrà elaborato in seguito. Io stesso equiparo questo codice al rifiuto di una richiesta di scambio.
6. https://www.mql5.com/ru/forum/1111/page123#comment_18372
...E in generale - prova a fare una ricerca per parole chiave nel forum. Puoi trovare molte altre informazioni :)
Purtroppo, non ho abbastanza conoscenze per commentare pienamente ogni punto. Beh, semmai i colleghi lo correggeranno.
1. Una volta il forum ha menzionato una situazione in cui un conto di trading può essere aperto con un sub-broker. In questo caso il sub-broker può inviare la richiesta di compravendita per un'ulteriore elaborazione (al broker) e inviare TRADE_RETCODE_PLACED al terminale del cliente. Non si sa se il broker alla fine elaborerà una tale richiesta di scambio.
2. Sì, lo penso anch'io. L'unica cosa che dobbiamo ricordare è che le informazioni su questo ordine saranno ricevute nel database del terminale in modo asincrono.
Penso che stiamo parlando dell'esecuzione parziale di una richiesta di compravendita nei modi ORDER_FILLING_IOC e ORDER_FILLING_RETURN.
4. https://www.mql5.com/ru/forum/1111/page124#comment_18407
5. Non so assolutamente nulla di questo codice. Tecnicamente, si scopre che la richiesta non è stata elaborata a causa di alcune ragioni interne del broker. Non è chiaro se verrà elaborato in seguito. Io stesso equiparo questo codice al rifiuto di una richiesta di scambio.
6. https://www.mql5.com/ru/forum/1111/page123#comment_18372
...E in generale - prova a fare una ricerca per parole chiave nel forum. Potete trovare molte più informazioni :).
Qui abbiamo quanto segue: 26 dei 30 codici (compresi TRADE_RETCODE_ORDER_CHANGED e TRADE_RETCODE_FROZEN) rappresentano il rifiuto esplicito della richiesta (non genera un ordine).
TRADE_RETCODE_DONE e TRADE_RETCODE_DONE_PARTIAL - ordine creato garantito.
Come eseguire correttamente TRADE_RETCODE_PLACED (non in sospeso) e TRADE_RETCODE_LOCKED è una domanda. I commenti di MQ su questi due codici sarebbero apprezzati.