Cuando una operación se cierra por Stop Loss, el volumen se duplica; si se cierra por Take Profit, se utiliza el volumen mínimo. Para determinar si una operación se realizó tras la activación de Stop Loss o Take Profit, se utiliza OnTradeTransaction.
En la versión build 1625, se añadió una excelente enumeración llamada ENUM_DEAL_REASON:
| ENUM_DEAL_REASON | Descripción del motivo |
|---|---|
| ... | ... |
| DEAL_REASON_SL | La operación se ejecutó como resultado de la activación del Stop Loss |
| DEAL_REASON_TP | La operación se ejecutó como resultado de la activación del Take Profit |
| ... | ... |
Esto se puede verificar en OnTradeTransaction.
En otras palabras, es una manera muy sencilla y confiable de determinar si una operación resultó de un Take Profit o un Stop Loss.
Actualmente (build 1626), este Asesor Experto solo se puede verificar en una prueba en vivo, ejecutándolo en un gráfico o en modo depuración con datos reales (F5 en el editor de MetaEditor). Utilicé el siguiente truco:
En OnTradeTransaction, determinamos si fue el Take Profit o el Stop Loss el que se activó:
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { if(deal_reason==DEAL_REASON_SL) ExtLot*=2.0; else if(deal_reason==DEAL_REASON_TP) ExtLot=m_symbol.LotsMin(); }
Publicaciones relacionadas
- Crea tu Asesor Experto: Señales de Trading con Líneas de Reunión y Estocástico en MQL5
- MACD y Línea de Señal: Estrategia para MetaTrader 4
- Crea tu Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas de la Mañana/Atardecer y CCI
- Cómo Crear un Asesor Experto con MQL5: Señales de Trading Basadas en Estrellas y Estocástico
- Señales de Trading con MQL5: Patrones de Estrellas y MFI