Detectar la activación del stop en el backtest OnTradeTransaction

 

Hola,

Intento detectar una ejecución de parada en mi EA. Desafortunadamente, sólo obtengoDEAL_ENTRY_IN proporcionado por MqlTradeTransaction pasado a OnTradeTransaction.

Esto parece ser sólo el caso en backtest.

¿Alguien sabe cómo detectar de forma fiable un stop activado en backtest - mejor junto con el precio y el beneficio (parcial)?

Gracias

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:

Hola,

Intento detectar una ejecución de parada en mi EA. Desafortunadamente, sólo obtengoDEAL_ENTRY_IN proporcionado por MqlTradeTransaction pasado a OnTradeTransaction.

Esto parece ser sólo el caso en backtest.

¿Alguien sabe cómo detectar de forma fiable un stop activado en backtest - mejor junto con el precio y el beneficio (parcial)?

Gracias

En OnTradeTransaction, usted tiene que comprobar para :

trans.order_state = ORDER_STATE_PLACED;

Seguido de otra transacción con :

trans.type = TRADE_TRANSACTION_DEAL_ADD;
 
angevoyageur:

En OnTradeTransaction, tiene que comprobar si hay :

Seguido de otra transacción con :

Hola Angevoyageur,

por favor, eche un vistazo a mi volcado. Este volcado imprime TODAS las transacciones en un archivo. Mi EA es muy simple. Compra o vende junto con el stop y el objetivo. Desafortunadamente, no puedo encontrar ninguna transacción en el registro, que

que estén relacionadas con el stop o el objetivo activados:

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

Así que, ¿cómo obtener las transacciones de la parada y el objetivo? Hablo de backtest aquí. No estoy seguro, si este es también el caso en condiciones reales.

 
chinaski:

Hola Angevoyageur,

por favor, eche un vistazo a mi volcado. Este volcado imprime TODAS las transacciones en un archivo. Mi EA es muy simple. Compra o vende junto con el stop y el objetivo. Desafortunadamente, no puedo encontrar ninguna transacción en el registro, que

que estén relacionadas con el stop o el objetivo activados:

Así que, ¿cómo obtener las transacciones de la parada y el objetivo? Hablo de backtest aquí. No estoy seguro, si este es también el caso en condiciones reales.

Ok, lo siento, entendí mal tu primera pregunta, estaba pensando en una orden pendiente (buy stop o sell stop) cuando dijiste "triggered stop".

¿Está seguro de que necesita supervisar las operaciones? Si sólo coloca una operación a la vez, puede simplemente comprobar su posición abierta con PositionSelect(_Symbol).

 
angevoyageur:

Vale, perdona que haya entendido mal tu primera pregunta, estaba pensando en una orden pendiente (stop de compra o stop de venta) cuando decías "stop activado".

¿Está seguro de que necesita supervisar las transacciones? Si sólo realiza una operación a la vez, puede simplemente comprobar su posición abierta con PositionSelect(_Symbol).

Hola,

para comprobar si una posición está abierta o no, ya lo hago.CPositionInfo.Select.

Pero, ¿cómo puedo obtener el precio del stop o del objetivo ejecutado, una vez que el stop o el objetivo se han activado? ¿Hay algún método inteligente?

 
chinaski:

Hola,

para comprobar si una posición está abierta o no, ya lo hago.CPositionInfo.Select.

Pero, ¿cómo obtener el precio del stop o del objetivo ejecutado, una vez que el stop o el objetivo se han activado? ¿Hay algún método inteligente?

¿Por qué no comprobar el historial de operaciones?
 
angevoyageur:
¿Por qué no comprueba el historial de operaciones?

Puede dar más detalles por favor. Necesito el stop ejecutado o el precio objetivo. No tengo el ID de la operación ni el ticket del objetivo o stop activado (no se ha pasado como transacción).

El historial proporcionaDEAL_PRICE pero necesito un número de transacción o ticket. ¿Qué ticket o trato tomar? Gracias.

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:

Puede dar más detalles por favor. Necesito el stop ejecutado o el precio objetivo. No tengo el ID de la operación ni el ticket del objetivo o stop activado (no se ha pasado como transacción).

El historial proporcionaDEAL_PRICE pero necesito un número de transacción o ticket. ¿Qué ticket o trato tomar? Gracias.

Cuando se dispara un sl o tp, se añade un deal con el lado opuesto de su operación. Por ejemplo, usted tiene una posición abierta de COMPRA de 0,25 lotes. Cuando su sl/tp se dispara tendrá una operación de tipo VENTA, puede utilizar OnTradeTransaction para monitorizar eso o simplemente comprobar el historial de operaciones una vez que sepa que su posición está cerrada.

Vea el ejemplo de código aquí.

 
angevoyageur:

Cuando se dispara un sl o un tp, usted tiene una operación añadida con el lado opuesto de su operación. Por ejemplo, usted tiene una posición abierta de COMPRA de 0,25 lotes. Cuando tu sl/tp se dispara tendrás una operación de tipo SELL, puedes usar OnTradeTransaction para monitorear eso o simplemente revisar el historial de operaciones una vez que sepas que tu posición está cerrada.

Vea el ejemplo de código aquí.

Hola angev,

este es mi problema: obviamente no puedo usar OnTradeTransaction. Por favor, vea mis registros de arriba. No hay ninguna orden de stop o de objetivo que aparezca allí - por lo que NO se ha ejecutado ninguna operación relacionada con un stop o un objetivo El volcado se crea para CADA transacción pasada a OnTradeTransaction.

De nuevo, hablo de backtest.

 
chinaski:

Hola angev,

este es mi problema: obviamente no puedo usar OnTradeTransaction. Por favor, vea mis registros de arriba. No hay ninguna orden de stop o de objetivo que aparezca allí - por lo que NO hay ninguna operación relacionada con un stop o un objetivo ejecutado El volcado se crea para CADA transacción pasada a OnTradeTransaction.

De nuevo, hablo de backtest.

Lo único que puedo hacer es probar su código si lo proporciona. No tengo ese problema.
 
angevoyageur:
Lo único que puedo hacer es probar su código si lo proporciona. No tengo tal problema.

Hola angevoyageur,

encontrar adjunto un simple EA que demuestra el problema. El EA abre largo junto con la parada y el objetivo a continuación, a corto, a continuación, a largo y así sucesivamente.

También contiene un método de volcado. Sólo tiene que aplicar EUR.USD 1 minuto 1 semana y ver los volcados de las transacciones en el registro de backtest.

Gracias por la ayuda.

Archivos adjuntos:
tc_ea_trans.mq5  11 kb