Rilevare l'innesco dello stop nel backtest di OnTradeTransaction

 

Salve,

cerco di rilevare un'esecuzione stop nel mio EA. Purtroppo, ottengo soloDEAL_ENTRY_IN fornito da MqlTradeTransaction passato a OnTradeTransaction.

Questo sembra essere il caso solo nel backtest.

Qualcuno sa come rilevare in modo affidabile un trigger stop in backtest - meglio se insieme al prezzo e al profitto (parziale)?

Grazie a tutti

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
chinaski:

Salve,

cerco di rilevare un'esecuzione stop nel mio EA. Purtroppo, ottengo soloDEAL_ENTRY_IN fornito da MqlTradeTransaction passato a OnTradeTransaction.

Questo sembra essere il caso solo nel backtest.

Qualcuno sa come rilevare in modo affidabile un trigger stop in backtest - meglio se insieme al prezzo e al profitto (parziale)?

Grazie a tutti

In OnTradeTransaction, devi controllare se c'è una transazione con :

trans.order_state = ORDER_STATE_PLACED;

Seguito da un'altra transazione con :

trans.type = TRADE_TRANSACTION_DEAL_ADD;
 
angevoyageur:

In OnTradeTransaction, dovete controllare per :

Seguito da un'altra transazione con :

Ciao Angevoyageur,

per favore dai un'occhiata al mio dump. Questo dump stampa tutte le transazioni in un file. Il mio EA è molto semplice. Compra o vende con stop e target. Sfortunatamente, non riesco a trovare nessuna transazione nel log, che

sono legate allo stop o al target attivato:

20130507 00:26:59:672 entry short at 1.32176 <- entry short
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=2 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_SELL type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.01 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol=EURUSD price=1.3217600 volume=0.00 sl=1.3229200 tp=1.3202000 order=2 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=SELL deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:672 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00

/// before the entry long, the stop or target of entry short should be triggerd.
/// The EA does not allow to enter new trade before latest is closed, simply by check current positions for symbol before open an entry tradde.

20130507 00:26:59:674 entry long at 1.32140 <- entry long
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=3 entry-type=IN trans-type=DEAL_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.01 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=ORDER_DELETE order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol=EURUSD price=1.3214000 volume=0.00 sl=1.3200900 tp=1.3231100 order=3 deal=0 entry-type=IN trans-type=HISTORY_ADD order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00
20130507 00:26:59:674 symbol= price=0.0000000 volume=0.00 sl=0.0000000 tp=0.0000000 order=0 deal=0 entry-type=IN trans-type=REQUEST order_type=BUY deal_type=DEAL_TYPE_BUY type_time=0 expiration=1970.01.01 00:00 price_trigger=0.0000000 profit=0.00

/// As you can see, my entry short shows transaction BUY, SELL, SELL what ever the purpose of this confusing transactions is.
/// No a bit about stop or target orders

Quindi, come ottenere le transazioni di stop e target? Parlo di backtest qui. Non sono sicuro, se questo è anche il caso in condizioni live.

 
chinaski:

Ciao Angevoyageur,

per favore dai un'occhiata al mio dump. Questo dump stampa tutte le transazioni in un file. Il mio EA è molto semplice. Compra o vende con stop e target. Sfortunatamente, non riesco a trovare nessuna transazione nel log, che

sono legate allo stop o al target attivato:

Quindi, come ottenere le transazioni di stop e target? Parlo di backtest qui. Non sono sicuro, se questo è anche il caso in condizioni live.

Ok, scusa se ho frainteso la tua prima domanda, stavo pensando a un ordine pendente (buy stop o sell stop) quando hai detto "triggered stop".

Sei sicuro di aver bisogno di monitorare le transazioni? Se fai solo un'operazione alla volta, puoi semplicemente controllare la tua posizione aperta con PositionSelect(_Symbol).

 
angevoyageur:

Ok, scusa se ho frainteso la tua prima domanda, stavo pensando a un ordine pendente (buy stop o sell stop) quando hai detto "triggered stop".

Sei sicuro che hai bisogno di monitorare la transazione? Se fate solo un'operazione alla volta, potete semplicemente controllare la vostra posizione aperta con PositionSelect(_Symbol).

Ciao,

per controllare se una posizione è aperta o no, lo faccio già.CPositionInfo.Select.

Ma come ottenere lo stop eseguito o il prezzo target, una volta che uno stop o un target è stato attivato? C'è un metodo intelligente?

 
chinaski:

Ciao,

per controllare se una posizione è aperta o no, faccio questo già.CPositionInfo.Select.

Ma come ottenere il prezzo di stop o target eseguito, una volta che uno stop o target è stato attivato? C'è un metodo intelligente?

Perché non controllare la cronologia delle operazioni?
 
angevoyageur:
Perché non controllare la cronologia delle transazioni?

Puoi dare più dettagli per favore. Ho bisogno dello stop eseguito o del prezzo target. Non ho l'id dell'affare o il biglietto del target o dello stop innescato (non passato come transazione).

La cronologia fornisceDEAL_PRICE ma ho bisogno di un deal # o di un ticket. Quale ticket o deal prendere? Grazie.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Deal Properties - Documentation on MQL5
 
chinaski:

Puoi dare più dettagli per favore. Ho bisogno dello stop eseguito o del prezzo target. Non ho l'id dell'affare o il biglietto del target o dello stop innescato (non passato come transazione).

La cronologia fornisceDEAL_PRICE ma ho bisogno di un deal # o di un ticket. Quale ticket o deal prendere? Grazie.

Quando viene attivato uno sl o un tp, hai un deal aggiunto con il lato opposto del tuo trade. Per esempio, hai una posizione aperta di BUY 0.25 lotti. Quando il tuo sl/tp viene attivato avrai un'operazione di tipo SELL, puoi usare OnTradeTransaction per monitorarla o semplicemente controllare lo storico delle operazioni una volta che sai che la tua posizione è chiusa.

Vedi l'esempio di codice qui.

 
angevoyageur:

Quando un sl o un tp viene attivato, hai un accordo aggiunto con il lato opposto del tuo trade. Per esempio, avete una posizione aperta di BUY 0.25 lotti. Quando il tuo sl/tp viene attivato avrai un'operazione di tipo SELL, puoi usare OnTradeTransaction per monitorarla o semplicemente controllare la storia delle operazioni una volta che sai che la tua posizione è chiusa.

Vedi l'esempio di codice qui.

Ciao angev,

questo è il mio problema: ovviamente non posso usare OnTradeTransaction. Si prega di vedere i miei log qui sopra. Nessun ordine stop o target elencato lì - quindi NESSUNA operazione relativa a uno stop o un target eseguito Il dump viene creato per OGNI transazione passata a OnTradeTransaction.

Di nuovo, parlo di backtest.

 
chinaski:

Ciao angev,

questo è il mio problema: ovviamente non posso usare OnTradeTransaction. Si prega di vedere i miei log qui sopra. Nessun ordine stop o target elencato lì - quindi NESSUN affare relativo a uno stop o un target eseguito Il dump viene creato per OGNI transazione passata a OnTradeTransaction.

Di nuovo, parlo di backtest.

L'unica cosa che posso fare è testare il tuo codice se lo fornisci. Non ho un tale problema.
 
angevoyageur:
L'unica cosa che posso fare è testare il tuo codice se lo fornisci. Non ho un tale problema.

Ciao angevoyageur,

trovo allegato un semplice EA che dimostra il problema. L'EA apre long con stop e target poi short, poi long e così via.

E' contenuto anche un metodo di dump. Basta applicare EUR.USD 1 minuto 1 settimana e guardare i dump delle transazioni nel log del backtest.

Grazie per l'aiuto.

File:
tc_ea_trans.mq5  11 kb
Motivazione: