Detectar la activación del stop en el backtest OnTradeTransaction - página 4

 
angevoyageur:

Entonces, estamos hablando sólo de backtesting. He probado con mi propio código y obtengo 3 transacciones cuando se dispara un 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 el DEAL_ADD obtengo el precio de la operación, por lo que el SL en mi caso. Todo me parece correcto. Te sugiero que me envíes el código que utilizas, el log del backtest (como archivo) y una captura de pantalla de la configuración del probador de estrategias. Así podré reproducir exactamente la misma prueba que la tuya y analizar el resultado. Puedes enviarme un PM si lo prefieres.

Hola,

¿podríais decirme dónde se almacena exactamente el precio de parada u objetivo ejecutado?

a) MqlTradeTransaction

b) MqlTradeRequest

c) MqlTradeResult

junto con el miembro. ¿En qué servidor de MetaTrader?

Gracias

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:

Por lo tanto, estamos hablando de backtesting solamente. He probado con mi propio código y obtengo 3 transacciones cuando se dispara un 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 el DEAL_ADD obtengo el precio de la operación, por lo que el SL en mi caso. Todo me parece correcto. Te sugiero que me envíes el código que utilizas, el log del backtest (como archivo) y una captura de pantalla de la Configuración del Probador de Estrategias. Así podré reproducir exactamente la misma prueba que la tuya y analizar el resultado. Puedes enviarme un PM si lo prefieres.

Si te refieres a TRADE_TRANSACTION_DEAL_ADD y MqlTradeTransaction.price, este precio es siempre 0.

Incluso si no filtro porTRADE_TRANSACTION_DEAL_ADD, el precio es siempre 0, después de que la orden de entrada sea enviada.

Yo uso

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

y

CTrade.PositionModify // to attach stop and target

y

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

para captar las transacciones.

 
chinaski:

Si te refieres a TRADE_TRANSACTION_DEAL_ADD y MqlTradeTransaction. price, este precio es siempre 0.

Incluso si no filtro paraTRADE_TRANSACTION_DEAL_ADD, el precio es siempre 0, después de que la orden de entrada sea enviada.

Yo uso

y

y

para capturar las transacciones.

Esto es con MqlTradeTransaction.price, no es siempre 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

Hay algo raro en tus resultados, pero no puedo ver qué con el código que proporcionas.

 

Aquí el registro con su 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
 

Hola Angevoyageur,

encontrar adjunto de nuevo simple EA. Esto debería demostrarlo. Solo coloca una orden con stop y objetivo ajustados (parámetro de entrada) y registra cada transacción.

Realmente aprecio su ayuda.

(Tal vez usted también puede mostrar sus transacciones de entrada)

¿Podría también darme la ip del servidor mt?

Archivos adjuntos:
tc_ea_trans.mq5  11 kb
 
chinaski:

Hola Angevoyageur,

encontrar adjunto de nuevo simple EA. Esto debería demostrarlo. Solo coloca una orden con stop y objetivo ajustados (parámetro de entrada) y registra cada transacción.

Realmente aprecio su ayuda.

(Tal vez usted también puede mostrar sus transacciones de entrada)

¿Podría usted también me da mt-servidor ip?

Yo uso el EA que acaba de publicar. MQ demo, Punto de acceso Europa. Backtesting con :


Tomo un extracto al azar del registro :

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

Entonces, ¿todavía tiene un problema para detectar un SL/TP disparado?

Archivos adjuntos:
 
angevoyageur:

Yo uso el EA que acabas de publicar. MQ demo, Punto de acceso Europa. Backtesting con :


Tomo un extracto al azar del registro :

Entonces, ¿todavía tiene problemas para detectar un SL/TP disparado?

Oh. Ya veo. Pude jurar que en mis ejecuciones de ayer no se dio ese precio. Hice una búsqueda de texto para este precio en el registro de backtest.

Pero ahora, puedo ver esta transacción DESPUÉS del registro

"take profit activado"

en mi última ejecución también - junto con el precio de ejecución.

Pido disculpas por todo el tiempo que lleva.

 
chinaski:

Oh. Ya veo. Pude jurar que en mis ejecuciones de ayer no se dio ese precio. Hice una búsqueda de texto para este precio en el registro de backtest.

Pero ahora, puedo ver esta transacción DESPUÉS del registro

...
El registro que te he proporcionado es desde el Visor, cuando lees el registro directamente desde la pestaña Diario del Probador de Estrategias, se muestra en el orden inverso.
 
angevoyageur:
El registro que te he proporcionado es desde el Visor, cuando lees el registro directamente desde la pestaña Diario del Probador de Estrategias, se muestra en el orden inverso.
Normalmente abro el archivo de registro desde la pestaña de registro de backtest, donde el orden es de arriba a abajo. Así que, de hecho, el registro que indica el precio se escribe antes de que ocurra la transacción.
 

Hola Angevoyageur,

"Punto de acceso Europa. Backtesting con :"

¿puede darme la IP completa de este servidor?