Come controllare se un ordine è stato chiuso per stop loss
Vedi questo argomento, probabilmente un po' confuso ma puoi trovare l'idea.
Il sistema di trading di MT5 è molto diverso da quello di MT4, quindi devi cambiare il tuo modo di pensare.

- www.mql5.com
Sto scrivendo un EA, modificando il mio EA scritto per MT4. Apro un ordine usando OrderSend.
Semplicemente se ho bisogno di capire (perhasps da History), se l'ordine inviato (a proposito.... devo controllare Order, Deals o Position?), è stato chiuso perché ha raggiunto lo StopLoss.
Ho controllato sui forum, ma non ho trovato quello che mi serve....
PREZZO_ORDINE_CORRENTE | dà solo il prezzo corrente del simbolo dell'ordine |
che non può essere confrontato conORDER_SL. Suppongo che ORDER_PRICE_CURRENT sia solo il prezzo corrente del simbolo e non il prezzo di chiusura dell'ordine.
Grazie a tutti per il vostro supporto.
È questo?
//-------------------------------- ES CIERRE POR SL ---------------------------------------------- bool esCierreSL(int ind, int modoInd= SELECT_BY_TICKET, int modoHist= MODE_TRADES) { bool resp= OrderSelect(ind, modoInd, modoHist)? (StringFind(OrderComment(), "[sl]", 0)>-1): false; return(resp); }
È questo?
La domanda riguarda mql5, il tuo codice è mql4.
Ilcommento dell'ordine non è un modo affidabile di codificare.
La domanda riguarda mql5, il tuo codice è mql4.
Ilcommento dell'ordine non è un modo affidabile di codificare.
Scusa per il necro, ma questo è abbastanza interessante secondo me.
Sto facendo la transizione da mql4 a mql5, e trovo che i cambiamenti dei sistemi di trading e dello storico siano piuttosto impegnativi.
Per sapere se un trade sullo history book è stato chiuso per stop-loss, take-profit o altro:
- in MT4 si poteva confrontare OrderStopLoss(), OrderTakeProfit() e OrderClosePrice(), o semplicemente controllare OrderComment().
- in MT5 l'unico modo possibile mi sembra quello di controllare il commento di una transazione: HistoryDealGetString(tk, DEAL_COMMENT)
È interessante, ma se ho capito bene, è mirato a identificare i cambiamenti di trade basati sulla gestione degli eventi, al volo.
Quindi ci deve essere un programma in ascolto (come un expert advisor in esecuzione su un grafico) altrimenti non viene rilevato nulla.
A mio parere, la rilevazione dei motivi di chiusura di un'operazione deve essere fatta sul book storico perché è (o dovrebbe essere) il modo più sicuro per sapere cosa è successo, dato che è scritto da qualche parte e non catturato dall'aria.
La mia analisi è sbagliata? Cosa ne pensi?

- www.mql5.com
Marco: Sia MT4 che MT5 quando un ordine si chiude per stop-loss o take-profit scrivono [SL price] o [TP price] nel commento (in modi diversi.. ma comunque). | No, non lo fanno. Questo è il tuo broker. Non è una buona idea, i broker possono cambiare i commenti, compresa la completa sostituzione. |
No, non lo fanno. Quello è il vostro broker. |
Ok, entrambi i broker MT4 e MT5 mettono quella stringa sul commento... almeno i pochi che ho testato.
E sono d'accordo, questa non è una buona idea, poiché il commento può essere soggetto a modifiche per mano del broker.
Ma non riesco a vedere come questo potrebbe essere fatto in modo diverso, dal momento che non riesco a trovare altre tracce nel trade history book.
C'è un modo migliore per raggiungere questo obiettivo?
Ho contattato il service desk 2 anni fa (a proposito di MT4).
e mi hanno risposto
Quindi è fatto dal sistema, non dal broker. Non è comunque utile se il broker può poi cambiarlo.
Intendiamoci, non ho notato nessuna occasione in cui il broker abbia cambiato il commento dell'ordine.
Di solito, nel mio codice, è più importante sapere se un trade si è chiuso con profitto o perdita. Quando si usa un trailing stop un trade può colpire lo SL, ma essere ancora in profitto.
Ho contattato il service desk 2 anni fa (a proposito di MT4).
e mi hanno risposto
quindi è fatto dal sistema, non dal broker. Ancora non è utile se il broker può poi cambiarlo però.
Intendiamoci, non ho notato nessuna occasione in cui il broker ha cambiato il commento dell'ordine.
Di solito, nel mio codice, è più importante sapere se un trade si è chiuso con profitto o perdita. Quando si usa un trailing stop un trade può colpire lo SL, ma essere ancora in profitto.
Grazie Keith, è quello che speravo, visto che non ho trovato un workaround migliore.
Credo che entrambi i poster stiano convertendo MQL4 in MQL5
Comunque, basta confrontare il prezzo di chiusura con il prezzo dello stoploss.
Nota: In un conto reale (specialmente ECN), probabilmente il prezzo di trigger ha un divario tra il prezzo stoploss preimpostato, quindi usare "<=" o ">=".
Comunque, basta confrontare il prezzo di chiusura con il prezzo dello stoploss.
Nota: In un conto reale (specialmente ECN), probabilmente il prezzo di trigger ha un gap tra il prezzo stoploss preimpostato, quindi usate "<=" o ">=".
Non è possibile confrontare il prezzo di chiusura con il prezzo di stop loss. Slippage significa che potrebbe chiudere più in alto o più in basso dello stop loss.
Quindi "<=" o ">=" non è utile.

- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Sto scrivendo un EA, modificando il mio EA scritto per MT4. Apro un ordine utilizzando OrderSend.
Semplicemente se ho bisogno di capire (perhasps da History), se l'ordine inviato (a proposito.... devo controllare Order, Deals o Position?), è stato chiuso perché ha raggiunto lo StopLoss.
Ho controllato sui forum, ma non ho trovato quello che mi serve....
PREZZO_ORDINE_CORRENTE
dà solo il prezzo corrente del simbolo dell'ordine
che non può essere confrontato conORDER_SL. Suppongo che ORDER_PRICE_CURRENT sia solo il prezzo corrente del simbolo e non il prezzo di chiusura dell'ordine.
Grazie a tutti per il vostro supporto.
EDIT :
Questo argomento è ora in gran parte obsoleto a causa delle nuove possibilità offerte da MT5 dalla build 1640.
Vedere gli ultimi post dell'argomento per alcuni esempi.