Cierre parcial y trailing stop: qué falla y cómo revisarlo
Contenido (5)
- Conclusión: lo que se rompe no es la lógica, sino el "traspaso de estado"
- Por qué se rompe al combinarlos
- No se puede confiar en la "memoria" del EA para el volumen restante
- El lote se "trunca", no se "redondea"
- Escribir el SL en un único punto, al final
- Lista de comprobación de implementación y verificación
- Límites y advertencias
- Resumen
Contenido
- Conclusión: lo que se rompe no es la lógica, sino el "traspaso de estado"
- Por qué se rompe al combinarlos
- No se puede confiar en la "memoria" del EA para el volumen restante
- El lote se "trunca", no se "redondea"
- Escribir el SL en un único punto, al final
- Lista de comprobación de implementación y verificación
- Límites y advertencias
- Resumen
Conclusión: lo que se rompe no es la lógica, sino el "traspaso de estado"
Ni el cierre parcial ni el trailing stop son procesos difíciles por separado. Los fallos aparecen cuando se aplican los dos a la misma posición. En nuestra experiencia de desarrollo, los problemas se concentraron casi siempre en estos tres puntos:
- Gestión del volumen restante: el EA no logra recordar si "ya hizo el cierre parcial"
- Paso de lote: el volumen a cerrar no encaja con el lote mínimo o el paso del broker
- Orden de reasignación del SL: el cierre parcial, el traslado a punto de equilibrio y el trailing se sobrescriben entre sí
Son fallos que rara vez se ven en el backtest y que casi siempre se descubren por primera vez en operativa real.
Comparación de brókers recomendados →
🎁 Descargar EA gratis📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores
* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.
Por qué se rompe al combinarlos
No se puede confiar en la "memoria" del EA para el volumen restante
En MT5, al hacer un cierre parcial el ticket de la posición no cambia; solo disminuye POSITION_VOLUME. Si el estado "cierre parcial realizado" se guarda solo en una variable bool, el valor se pierde al reiniciar el EA, al reconectar el VPS o al cambiar de marco temporal. En el primer tick posterior, el EA vuelve a cerrar la mitad de la posición que quedaba: es el accidente típico.
Como solución, nosotros recorremos el historial de operaciones de esa posición con HistorySelectByPosition() y determinamos la fase del cierre parcial comparando el volumen inicial con el volumen restante actual. Las banderas en memoria quedan solo como apoyo.
El lote se "trunca", no se "redondea"
Si divide 0.03 lotes a la mitad obtiene 0.015. En una cuenta con paso de 0.01, redondear al alza cerraría 0.02, es decir, soltaría más de lo previsto. El volumen a cerrar debe truncarse según SYMBOL_VOLUME_STEP, y además hay que comprobar que el volumen restante tras el cierre sea igual o superior a SYMBOL_VOLUME_MIN. Una posición de 0.01 lotes no se puede dividir; si no se define en la especificación si "no se hace cierre parcial" o "se cierra todo", el EA seguirá devolviendo errores.
Escribir el SL en un único punto, al final
PositionModify() es una función que especifica SL y TP a la vez. Si el proceso de trailing pasa 0 como TP, el TP desaparece. Además, si tras el cierre parcial el traslado del SL a punto de equilibrio y la subida del SL por trailing se ejecutan por separado en el mismo tick, gana el que escribe último. Como resultado, un SL que ya estaba en punto de equilibrio puede bajar de nuevo.
El orden que adoptamos es este:
- Enviar el cierre parcial → volver a seleccionar la posición y comprobar el volumen restante
- Calcular ambos candidatos: el SL de punto de equilibrio y el SL de trailing
- Mover solo hacia el lado "más favorable que el SL actual" (el más alto en compras, el más bajo en ventas)
- Verificar el nivel de stop y el nivel de congelación, y modificar una sola vez volviendo a pasar el valor actual del TP
Lista de comprobación de implementación y verificación
| Punto a verificar | Síntoma cuando falla | Cómo comprobarlo |
|---|---|---|
| ¿La fase del cierre parcial se deduce del historial de operaciones? | Doble cierre parcial tras reiniciar | Volver a adjuntar el EA durante su funcionamiento y observar el cambio del volumen restante |
| ¿El volumen a cerrar se trunca según el paso? | Se cierra más de lo previsto o aparecen errores | Abrir con el lote mínimo y revisar el registro |
| ¿Está definido cómo tratar la división con el lote mínimo? | El cierre falla en cada tick | Probar con 0.01 lotes |
| ¿El SL puede retroceder hacia el lado desfavorable? | Cierre con pérdida tras el SL en punto de equilibrio | Seguir cronológicamente la evolución del SL en el registro |
| ¿La modificación del SL borra el TP? | El take profit no funciona | Mirar la casilla TP de la posición tras el cambio |
| ¿No se mueve el SL si falla el cierre parcial? | El volumen restante y el SL parten de supuestos distintos | Enviar la orden justo antes del cierre del mercado para provocar el fallo |
| ¿Se evita operar en cuentas netting? | Se suma a las posiciones de otros EA | Comprobar el tipo de cuenta |
Si usted es quien utiliza el EA, la revisión más rápida es ejecutarlo en cuenta demo con el lote mínimo y comprobar que su comportamiento no cambia al volver a adjuntar el EA a mitad de operación. Los fundamentos de la configuración están en Cómo configurar un EA.
Límites y advertencias
En el probador de estrategias, la ejecución es instantánea y casi nunca ocurre que solo se ejecute una parte de la orden. Por ello, los fallos relacionados con el cierre parcial apenas se ven en las cifras del backtest. Las diferencias en el modo de ejecución (filling mode) en cuenta real y el comportamiento ante recotizaciones solo se pueden comprobar broker por broker; esa es la realidad.
Tampoco es cierto que añadir un cierre parcial mejore los resultados. En los sistemas de seguimiento de tendencia con baja tasa de acierto, cuyo resultado global depende de unas pocas ganancias grandes (por ejemplo, DONCHIAN ENGINE tiene una tasa de acierto del 34.5% en el backtest), reducir el volumen justo cuando la ganancia se está extendiendo puede rebajar la expectativa matemática. La curva de resultados se suaviza, pero qué se pierde a cambio solo se sabe validándolo EA por EA. Nosotros tampoco hemos podido comprobar todas las combinaciones.
Si va a añadir usted mismo un cierre parcial a una estrategia como DONCHIAN ENGINE, tenga en cuenta que los resultados de la validación original dejan de aplicarse tal cual.
Resumen
- Al combinar cierre parcial y trailing, lo que más se rompe no es la lógica sino el "traspaso de estado"
- La fase del cierre parcial se determina a partir del historial de operaciones y del volumen restante, no de una bandera en memoria
- Trunque el lote según el paso y compruebe que el volumen restante no quede por debajo del lote mínimo
- Concentre la modificación del SL en un único punto, muévalo solo en la dirección favorable y no borre el TP
- Como el backtest apenas lo muestra, haga una prueba de reconexión del EA en cuenta demo
- El cierre parcial suaviza la curva de resultados, pero también puede reducir la expectativa matemática
Otras precauciones de implementación están recopiladas en Conocimientos sobre EA y MT5.
Relacionado
2026-10-29
OnTick vs OnTimer en MQL5: cuándo usar cada uno en un EA
2026-11-01
Por qué un EA que solo opera con velas cerradas no repinta
2026-10-02
Diversificar EAs entre varios brókeres: cómo y por qué
2026-07-26
Qué revela el tiempo medio de posición de un EA
📧 Curso gratuito por email (8 correos) + paquete de 13 indicadores MT5 solo para suscriptores
* Privacidad estrictamente protegida. Puedes darte de baja en cualquier momento.
¿Tienes alguna pregunta sobre EAs o Forex?
Puedes publicarla en el foro de trading de Nattzy (registro gratuito). También son bienvenidas preguntas que vayan más allá de este artículo: configuración de EAs, elección de bróker y más.
Preguntar en Nattzy ↗