Rilevare l'innesco dello stop nel backtest di OnTradeTransaction - pagina 4

 
angevoyageur:

Quindi, stiamo parlando solo di backtesting. Ho testato con il mio codice e ottengo 3 transazioni quando viene attivato uno stop:

2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_HISTORY_ADD(3)

Con il DEAL_ADD ottengo il prezzo della transazione, quindi lo SL nel mio caso. Tutto mi sembra corretto. Ti suggerisco di mandarmi il codice che usi, il log del backtest (come file) e uno screenshot di Strategy tester Settings. Poi posso riprodurre esattamente lo stesso test del tuo e analizzare il risultato. Puoi mandarmi un PM se preferisci.

Salve,

potete dirmi dove viene memorizzato esattamente lo stop o il prezzo target eseguito:

a) MqlTradeTransaction

b) MqlTradeRequest

c) MqlTradeResultato

insieme al membro. Quale server MetaTrader?

Grazie.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5
 
angevoyageur:

Quindi, stiamo parlando solo di backtesting. Ho testato con il mio codice e ottengo 3 transazioni quando viene attivato uno stop:

2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_ORDER_DELETE(2)
2013.05.15 10:22:27    Core 1    2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_HISTORY_ADD(3)

Con il DEAL_ADD ottengo il prezzo della transazione, quindi lo SL nel mio caso. Tutto mi sembra corretto. Ti suggerisco di mandarmi il codice che usi, il log del backtest (come file) e uno screenshot di Strategy tester Settings. Poi posso riprodurre esattamente lo stesso test del tuo e analizzare il risultato. Puoi mandarmi un PM se preferisci.

Se intendete TRADE_TRANSACTION_DEAL_ADD e MqlTradeTransaction.price, questo prezzo è sempre 0.

Anche se non filtro perTRADE_TRANSACTION_DEAL_ADD, il prezzo è sempre 0, dopo l'invio dell'ordine di entrata.

Io uso

CTrade.Buy(...)  // place entry

e

CTrade.PositionModify // to attach stop and target

e

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
  {
...
}

per catturare le transazioni.

 
chinaski:

Se intendi TRADE_TRANSACTION_DEAL_ADD e MqlTradeTransaction.price, questo prezzo è sempre 0.

Anche se non filtro perTRADE_TRANSACTION_DEAL_ADD, il prezzo è sempre 0, dopo l'ordine di entrata inviato.

Io uso

e

e

per catturare le transazioni.

Questo è con MqlTradeTransaction.price, non è sempre 0.

2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   stop loss triggered buy 0.10 EURUSD 1.30163 sl: 1.29663 tp: 1.30663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal #47  sell 0.10 EURUSD at 1.29663 done (based on order #47)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   deal performed [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   order performed sell 0.10 at 1.29663 [#47  sell 0.10 EURUSD at 1.29663]
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   ----------------TRANSACTION START---------------------------
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Symbol : EURUSD  event : TRADE_TRANSACTION_DEAL_ADD(6)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Order #47   type : ORDER_TYPE_BUY(0)  state : ORDER_STATE_STARTED(0)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Deal #47  type : DEAL_TYPE_SELL(1)
2013.05.15 10:22:27     Core 1  2013.05.10 16:20:37   Price = 1.29663 Volume = 0.1 SL = 0.0 TP = 0.0 Activation price = 0.0

C'è qualcosa di strano nei tuoi risultati, ma non riesco a vedere cosa con il codice che fornisci.

 

Qui il log con il tuo EA tc_ea_trans :

2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   take profit triggered buy 0.01 EURUSD 1.31553 sl: 1.31503 tp: 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #331  sell 0.01 EURUSD at 1.31603 done (based on order #331)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31603 [#331  sell 0.01 EURUSD at 1.31603]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   price corrected from 1.31609 to 1.31604, deviation: 10 (instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559)(1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   instant sell 0.01 EURUSD at 1.31604 sl: 1.31659 tp: 1.31559 (1.31604 / 1.31609 / 1.31604)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal #332  sell 0.01 EURUSD at 1.31604 done (based on order #332)
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   deal performed [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   order performed sell 0.01 at 1.31604 [#332  sell 0.01 EURUSD at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31609 sl: 1.31659 tp: 1.31559 [done at 1.31604]
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_DEAL_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.31603 00 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 deal=331 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
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_ORDER_DELETE
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.01 sl=0.0000000 tp=0.0000000 order=331 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 prof
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   TRADE_TRANSACTION_HISTORY_ADD
2013.05.15 18:43:48     Core 1  2013.05.02 08:39:15   trans=symbol=EURUSD price=1.3160300 volume=0.00 sl=0.0000000 tp=0.0000000 order=331 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 profi
 

Ciao Angevoyageur,

trova allegato di nuovo semplice EA. Questo dovrebbe dimostrarlo. Mette solo un ordine con stop e target stretti (param di input) e registra ogni transazione.

Apprezzo molto il tuo aiuto.

(Forse puoi anche mostrare le tue transazioni di ingresso)

Potresti anche darmi l'ip di mt-server?

File:
tc_ea_trans.mq5  11 kb
 
chinaski:

Ciao Angevoyageur,

trova allegato di nuovo semplice EA. Questo dovrebbe dimostrarlo. Mette solo un ordine con stop e target stretti (param di input) e registra ogni transazione.

Apprezzo molto il tuo aiuto.

(Forse puoi anche mostrare le tue transazioni di ingresso)

Potresti anche darmi l'ip di mt-server?

Io uso l'EA che hai appena postato. MQ demo, punto di accesso Europa. Backtesting con :


Prendo un estratto a caso dal log:

2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   take profit triggered buy 0.01 EURUSD 1.31751 sl: 1.31681 tp: 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #107  sell 0.01 EURUSD at 1.31821 done (based on order #107)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed sell 0.01 at 1.31821 [#107  sell 0.01 EURUSD at 1.31821]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   requote 1.31823 / 1.31836 / 1.31823 (instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.31836 sl: 1.31906 tp: 1.31766 [requote (1.31823/1.31836)]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 (1.31827 / 1.31840 / 1.31827)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal #108  buy 0.01 EURUSD at 1.31840 done (based on order #108)
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   deal performed [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   order performed buy 0.01 at 1.31840 [#108  buy 0.01 EURUSD at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   CTrade::OrderSend: instant buy 0.01 EURUSD at 1.31840 sl: 1.31770 tp: 1.31910 [done at 1.31840]
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.31821 00 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 deal=107 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
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.01 sl=0.0000000 tp=0.0000000 order=107 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 prof
2013.05.15 21:54:11     Core 1  2013.05.01 20:02:15   trans=symbol=EURUSD price=1.3182100 volume=0.00 sl=0.0000000 tp=0.0000000 order=107 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 profi

Quindi, hai ancora un problema nel rilevare uno SL/TP innescato?

File:
 
angevoyageur:

Uso l'EA che hai appena postato. MQ demo, punto di accesso Europa. Backtesting con :


Prendo un estratto a caso dal log:

Quindi, hai ancora un problema nel rilevare un SL/TP innescato?

Oh, capisco. Potrei giurare che nelle mie corse di ieri non c'era questo prezzo dato. Ho fatto una ricerca testuale di questo prezzo nel log del backtest.

Ma ora, posso vedere questa transazione DOPO il logentry

"take profit attivato"

anche nella mia ultima esecuzione - insieme al prezzo di esecuzione.

Mi scuso per tutto il tempo che ci vuole.

 
chinaski:

Oh, capisco. Potrei giurare che nei miei giri di ieri non c'era questo prezzo dato. Ho fatto una ricerca testuale di questo prezzo nel log del backtest.

Ma ora, posso vedere questa transazione DOPO il logentry

...
Il log che ti ho fornito è dal Viewer, quando leggi il log direttamente dalla scheda Strategy Tester Journal, viene visualizzato in ordine inverso.
 
angevoyageur:
Il log che ti ho fornito è dal Viewer, quando leggi il log direttamente dalla scheda Strategy Tester Journal, viene visualizzato nell' ordine inverso.
Io di solito apro il logfile dalla scheda backtest log, dove l'ordine è dall'alto verso il basso. Quindi, di fatto, la voce di registro che indica il prezzo viene scritta prima che la transazione si verifichi.
 

Ciao Angevoyageur,

"Punto di accesso Europa. Backtesting con :"

puoi darmi l'IP completo di questo server?