Come controllare se un ordine è stato chiuso per stop loss - pagina 2

 

Potresti rispondere solo se sai di cosa stai parlando?

Questo è un topic su MT5/mql5, rimuoverò tutti i post irrilevanti.

Non c'è nessun prezzo stoploss nella storia su MT5.

 

Il problema principale in mql5 (conto di copertura) è conoscere il prezzo di Stop Loss, quando una posizione viene chiusa, a causa della mancanza dello storico delle posizioni. Puoi usare HistorySelectByPosition() per trovare il tuo Stop Loss iniziale (Stop Loss dell'ordine iniziale), ma se hai modificato quello Stop Loss successivamente, genera nuovi ordini per farlo, senza lo stesso POSITION_ID, e quindi, non saranno selezionati dalla funzione HistorySelectByPosition(), quindi diventa molto difficile conoscere l'ultimo Stop Loss che hai piazzato.

Non so se può essere considerato un bug, ma se non lo è, dovrebbe esserlo.

Saluti.

Documentation on MQL5: Trade Functions / HistorySelectByPosition
Documentation on MQL5: Trade Functions / HistorySelectByPosition
  • www.mql5.com
Trade Functions / HistorySelectByPosition - Reference on algorithmic/automated trading language for MetaTrader 5
 
Jose Francisco Casado Fernandez:

Il problema principale in mql5 (conto di copertura) è quello di conoscere il prezzo di Stop Loss, quando una posizione viene chiusa, a causa della mancanza dello storico delle posizioni. Puoi usare HistorySelectByPosition() per trovare il tuo Stop Loss iniziale (Stop Loss dell'ordine iniziale)...

No, non puoi o ti ho frainteso.

Lo Stoploss attuale non è da nessuna parte nella storia.

 
Alain Verleyen:

No, non puoi o ti ho frainteso.

Lo stoploss non è da nessuna parte nella storia.

Puoi usare HistorySelectByPosition(), con il tuo POSITION_ID, e poi puoi trovare il primo ordine con quel POSITION_ID, e controllare lo Stop Loss di questo ordine (HistoryOrderGetDouble(ticket, ORDER_SL). Per me ha funzionato, ma
.il problema è quando si modifica lo Stop Loss in seguito.
 
Jose Francisco Casado Fernandez:
Puoi usare HistorySelectByPosition(), con il tuo POSITION_ID, e poi puoi trovare il primo ordine con quel POSITION_ID, e controllare lo Stop Loss di questo ordine (HistoryOrderGetDouble(ticket, ORDER_SL). Per me ha funzionato, ma
.il problema è quando si modifica lo Stop Loss in seguito.

Ok, ora ho capito, hai ragione.

 
Jose Francisco Casado Fernandez:
Puoi usare HistorySelectByPosition(), con il tuo POSITION_ID, e poi puoi trovare il primo ordine con quel POSITION_ID, e controllare lo Stop Loss di questo ordine (HistoryOrderGetDouble(ticket, ORDER_SL). Per me ha funzionato, ma
.il problema è quando si modifica quello Stop Loss in seguito.
E poi, controllare ORDER_POSITION_ID uguale a DEAL_POSITION_ID,
poi controllare DEAL_ENTRY, se OUT, ottenere HystoryDealGetDouble(ticket,DEAL_PRICE)
.

Se DEAL_PRICE è uguale a HistoryOrderGetDouble(ticket,ORDER_SL), allora significa che l'ordine è stato chiuso a causa dello stop loss.

Ecco la mia opinione.

 
Alain Verleyen:

Ok capito ora, hai ragione.

Ok, e sai perché se si modifica lo Stop Loss in seguito, il nuovo ordine generato per farlo non mostra lo stesso POSITION_ID? Sarebbe la soluzione perfetta per questo problema. È un bug? Grazie.
 
Roberto Jacobs:

Se DEAL_PRICE è uguale a HistoryOrderGetDouble(ticket,ORDER_SL), allora significa che l'ordine è stato chiuso a causa dello stop loss.

E lo slippage?
 
Roberto Jacobs:
E poi, controllare ORDER_POSITION_ID uguale a DEAL_POSITION_ID,
poi controllare DEAL_ENTRY, se OUT, ottenere HystoryDealGetDouble(ticket,DEAL_PRICE).

Se DEAL_PRICE è uguale a HistoryOrderGetDouble(ticket,ORDER_SL), allora significa che l'ordine è stato chiuso a causa dello stop loss.

Ecco la mia opnione.

Sì, è quello che dicevo. Ho fatto così e ha funzionato, ma se si modifica lo Stop Loss iniziale, genera un nuovo ordine SENZA lo stesso POSITION_ID. Non so perché. Penso che sia un bug. Saluti.
 
honest_knave:
E lo slippage?

Non c'è bisogno di guardare lo slippage, perché l'ordine è stato chiuso, e il prezzo di chiusura è su HystoryDealGetDouble(ticket, DEAL_PRICE).
Se l' ordine non è stato in chiusura, e si fa un ordine per chiudere, allora si dovrebbe considerare quanto slittamento, in modo che nessun errore requotes.