Únete hoy
ProBacktest/probacktest · proorder

QUIT

QUIT en ProBacktest y ProOrder detiene inmediatamente un sistema de trading, cerrando las posiciones abiertas y cancelando las órdenes pendientes. Sintaxis y advertencias sobre el reinicio.

Sintaxis

probuilder
QUIT

Cómo funciona

Cuando la ejecución llega a una sentencia QUIT, el sistema de trading se apaga en esa bar. Cualquier posición abierta se cierra a mercado, todas las órdenes stop y limitadas pendientes se cancelan, y la estrategia deja de procesar más bars. El apagado es definitivo desde el punto de vista del código: ninguna instrucción puede reiniciar un sistema detenido, por lo que reanudar la operativa requiere relanzar la estrategia manualmente desde la plataforma.

En ProBacktest el efecto es el mismo en simulación. La prueba termina en la bar en la que se ejecuta QUIT y el historial restante se ignora, lo que resulta útil para modelar un límite de capital estricto.

QUIT casi siempre va envuelto en una condición. Los patrones habituales son un suelo de equity leído de STRATEGYPROFIT, una hora de apagado leída de las constantes de reloj como CurrentHour, o una comprobación del estado de la posición construida con ONMARKET, LONGONMARKET o SHORTONMARKET. Actúa como la última línea de defensa después de las protecciones por operación, como los stops y los objetivos.

Ejemplos

Ejemplo 1, Apagar a las 22:00 estando short (ProOrder)

probuilder
// Stop the system at 22:00 if a short position is still open
IF ShortOnMarket AND CurrentHour = 22 THEN
  QUIT
ENDIF

En la primera bar de la hora 22:00 con una posición short abierta, la posición se cierra y el sistema se detiene. Este es el primer ejemplo de la referencia oficial.

Ejemplo 2, Interruptor de corte por equity (ProOrder)

probuilder
// Terminate the strategy once it has lost 200 units of account currency
IF StrategyProfit < -200 THEN
  QUIT
ENDIF

STRATEGYPROFIT sigue el resultado acumulado del sistema. Una vez que la pérdida supera las 200 unidades monetarias, QUIT cierra todas las posiciones y detiene la operativa de forma permanente.

Ejemplo 3, Límite de drawdown desde el pico de equity (ProBacktest)

probuilder
// Track the equity high-water mark
ONCE peakEquity = 0
equity = StrategyProfit
IF equity > peakEquity THEN
  peakEquity = equity
ENDIF

// Stop the test after a 500-unit drawdown from the peak
IF peakEquity - equity >= 500 THEN
  QUIT
ENDIF

En lugar de un suelo de pérdida fijo, el interruptor de corte se activa con un drawdown medido desde la mejor equity alcanzada, una forma habitual de modelar en un backtest un límite de riesgo al estilo de un fondo.

Errores y trampas habituales

  • Sin reinicio programático. Una vez que se ejecuta QUIT, el sistema queda detenido definitivamente. No hay ninguna instrucción que lo rearme; reiniciar significa relanzar la estrategia manualmente. Una condición que se active con demasiada facilidad puede dejar un sistema en real fuera de línea sin avisar.
  • Salida a mercado, con slippage. QUIT cierra la posición abierta a precio de mercado. En condiciones rápidas la ejecución puede ser notablemente peor que el último precio cotizado, por lo que la pérdida realizada puede superar el umbral que provocó el apagado.
  • Un QUIT sin condición detiene el sistema en la primera bar. Colocado fuera de cualquier bloque IF, QUIT se ejecuta inmediatamente y la estrategia nunca opera. Debe situarse siempre detrás de una condición.
  • Los backtests truncados distorsionan las estadísticas. En ProBacktest, QUIT finaliza la simulación antes de tiempo. Comparar ejecuciones en las que una versión se detiene a mitad de los datos con una versión que llega hasta el final no es una comparación equivalente; comprueba el número de bars realmente operadas.
  • STRATEGYPROFIT, beneficio acumulado del sistema en la divisa de la cuenta.
  • CurrentHour, hora de la bar actual, útil para apagados programados.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • SHORTONMARKET, verdadero mientras hay una posición short abierta.
  • LONGONMARKET, verdadero mientras hay una posición long abierta.
  • FLATAFTER, fuerza a la estrategia a quedarse sin posiciones después de una hora dada cada día.
  • FLATBEFORE, fuerza a la estrategia a quedarse sin posiciones antes de una hora dada cada día.
  • SELL, cierra una posición long abierta.
  • EXITSHORT, cierra una posición short abierta.