En un artículo anterior hablé sobre un argumento poco conocido de la función ApplyStop ya que no figura ni en el propio manual de Amibroker (ActivationFloor) y en ese mismo artículo mencioné la posibilidad de replicar mediante código la función ApplyStop.
En este artículo os mostraré el código que lo replica y representaremos gráficamente los puntos de entrada, salida, así como la línea de STOP.
Primero repasamos la sintaxis del código para refrescar sus funcionalidades y tener a mano una guía de interpretación:

Los argumentos de los tipos stopTypeLoss y stopTypeProfit así como stopTypoeNBar me resultan más sencillos de entender, por lo que me parece más interesante que estudiemos el argumento stopTypeTrailing.
La interpretación de este tipo es establecer un stop de precios dinámico que se mueva en la dirección de nuestras expectativas de tal manera que si el trade evoluciona favorablemente, el stop se mueva con el precio, y en el caso que el precio se gire posteriormente, el stop quede invariable salvando parte de las ganancias.
En la imagen se pueden ver las evoluciones de operaciones favorable desde su inicio hasta el cierre definitivo:

- La flecha junto con el círculo de color verde representan la apertura y precio de entrada de la operación respectivamente
- La flecha de color y el círculo de color rojo representan el cierre y el precio de cierre
- Mientras que la línea de color roja se sitúa a un 3% de máximos de la vela, siempre y cuando éstos suban (los precios se muevan en la dirección de nuestro trade)
Es por eso que encontramos períodos, como por ejemplo, a finales de Octubre y Noviembre, donde esa línea permanece estática ya que los precios de nuestro activo, han comenzado a descender
👨💻 El Código AFL Completo y Explicado
Veamos su código AFL mediante ApplyStop:
En algunas fuentes, como libros o incluso en la web de Amibroker he encontrado intentos de replicar la función ApplyStop mediante código:

O bien en la propia web de Amibroker.
Pero si profundizamos en los resultados que ofrecen de ambas estrategias, he descubierto que realmente no son los mismos, existen algunas diferencias y se deben a que código deja abierta o mejor dicho, no contempla una posibilidad.
Si se produce un GAP en la apertura de la vela de salida y el precio queda fuera del rango abarcado por el trailstop, la posición no debería cerrarse en el precio del trailstop, sino que debería cerrarse en la propia apertura.
Veamos este caso en un ejemplo:

El 17 de setiembre se abrió una operación larga en DJI.
Días más tarde, el 31 de octubre, el mercado abrió con un enorme hueco bajista situando al precio por debajo de nuestro nivel de STOP. El círculo rojo muestra dónde cerró la operación que en este caso particular, lo hizo por debajo de la línea de stop.
El código que muestro a continuación, replica la función ApplyStop:
🏁 Conclusiones
En este artículo hemos conseguido dos objetivos importantes:
1. Replicar ApplyStop mediante código AFL
Hemos demostrado que es posible reproducir el comportamiento de la función ApplyStop utilizando un bucle que recorre las barras. Además, nuestro código corrige un problema que la función nativa no gestiona correctamente: los gaps de apertura.
Cuando el precio abre por debajo del nivel de stop (gap bajista), la posición debe cerrarse al precio de apertura, no al nivel del stop. Este detalle puede marcar diferencias significativas en los resultados de un backtest.
2. Representación gráfica completa
Hemos añadido visualización de:
- 🟢 Flechas y círculos verdes para las entradas
- 🔴 Flechas y círculos rojos para las salidas
- 📉 Línea de trailing stop dinámica
Esta representación visual permite verificar de un vistazo si el sistema está funcionando como esperamos.
¿Por qué es útil saber replicar ApplyStop?
- ✅ Mayor control sobre la lógica exacta del stop
- ✅ Posibilidad de añadir condiciones personalizadas
- ✅ Gestión correcta de gaps y casos especiales
- ✅ Debugging más sencillo al ver cada paso del código
- ✅ Base para crear stops más complejos (trailing + breakeven, múltiples niveles, etc.)
Dominar tanto la función ApplyStop como su réplica en código te da flexibilidad total para implementar cualquier estrategia de gestión de riesgo en tus sistemas.
Funcionalidad principal:
- Permite activar stops solo después de alcanzar un nivel específico de beneficio
- Especialmente útil con stopTypeTrailing para proteger ganancias en sistemas de tendencia
- Con stopTypeLoss, el comportamiento puede ser contraintuitivo (se activa con beneficio pero se calcula desde precio de compra)
Recomendaciones:
- Prueba exhaustivamente antes de usar en real
- Especialmente útil para trailing stops condicionales
- Con stops de pérdida, verifica el comportamiento con tus datos específicos
La conclusión a la que he llegado con esta funcionalidad es que, a diferencia de otras funciones, no me ha resultado fácil de entender, he tenido que realizar varias pruebas para comprobar sus impactos, de ahí que haya muchas dudas y pocas respuestas en el foro.
Por último, por sí solo no parece que tenga mucha utilidad, por lo que para poder sacar el máximo partido a la función, habría que definir diferentes setups de salida una vez alcanzado el punto de equilibrio.
🎓 ¿Quieres Dominar AmiBroker Completamente?
ApplyStop es solo una de las funciones avanzadas que puedes dominar y personalizar en AmiBroker.
Si quieres:
- ✅ Programar stops avanzados y gestión de riesgo profesional
- ✅ Entender cada línea de código de tus sistemas
- ✅ Hacer backtests precisos sin sorpresas en producción
- ✅ Crear visualizaciones gráficas personalizadas
- ✅ Evitar los errores típicos que invalidan tus resultados
Nuestro Curso de AmiBroker desde Cero te enseña TODO lo que necesitas saber.
Más de 200 inversores ya dominan AmiBroker gracias a este curso estructurado paso a paso.

Este artículo fue cortesía de Juan Carlos Sobrino para MKTSignals.













0 comentarios