NextBarOpen
NextBarOpen es un modificador obsoleto de ProBacktest y ProOrder que retrasaba las órdenes a la apertura del siguiente bar, que ahora es el comportamiento por defecto de toda orden a mercado.
Sintaxis
AT MARKET NextBarOpenCómo funciona
En las primeras versiones de la plataforma, NextBarOpen se añadía a una orden a mercado para indicar explícitamente que la orden debía ejecutarse al precio de apertura del bar siguiente y no al precio actual. La intención era modelar una ejecución realista: una señal calculada sobre un bar cerrado solo puede operarse una vez que empieza el bar siguiente.
Ese modelo de ejecución se convirtió después en el único. El código de la estrategia se evalúa una vez por bar, al cierre, y cualquier orden a mercado generada durante esa evaluación se transmite inmediatamente después, ejecutándose en la apertura del bar siguiente. El comportamiento NextBarOpen solía solicitar es ahora el valor por defecto incondicional, lo que hace redundante el modificador.
La posición oficial es que la instrucción ya no es válida y no sirve para nada. El código existente que lleva el modificador documenta una intención que el motor ya garantiza, y el código nuevo nunca debería incluirlo. Cuando la palabra clave aparece en estrategias antiguas encontradas en archivos o foros, se puede eliminar sin cambiar el comportamiento de la estrategia bajo el modelo de ejecución actual.
NextBarOpen no debe confundirse con TomorrowOpen, que es una instrucción distinta relacionada con la temporización de órdenes en bars diarios y sigue siendo una palabra clave separada.
Ejemplos
Ejemplo 1, Entrada heredada con el modificador (ProBacktest)
// legacy code: NextBarOpen is redundant under the current engine
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET NextBarOpen
ENDIFLa orden se ejecuta en la apertura del siguiente bar con o sin el modificador. Esta es la forma que se encuentra en estrategias publicadas antiguas.
Ejemplo 2, Entrada short heredada (ProOrder)
short = close < Average[100](close)
// older strategies attached NextBarOpen to short entries as well
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACT AT MARKET NextBarOpen
ENDIFEl mismo patrón en el lado short. Eliminar la palabra clave final deja la ejecución idéntica, el short se abre al precio de apertura del siguiente bar en cualquier caso.
Ejemplo 3, Migrar código antiguo (ProBacktest)
// before: BUY 2 CONTRACTS AT MARKET NextBarOpen
// after, same behavior:
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET
ENDIFLa forma modernizada. Eliminar NextBarOpen de una estrategia antigua es pura limpieza, no hace falta compensarlo en otra parte del código.
Errores y trampas habituales
- Esperar una diferencia de temporización. Añadir o quitar
NextBarOpenno cambia nada. Todas las órdenes a mercado generadas al cierre de un bar se ejecutan en la apertura del bar siguiente. Las comparaciones de código que atribuyen resultados distintos al modificador están mirando la variable equivocada. - Posible rechazo por los compiladores actuales. La instrucción está documentada como ya no válida. Según la versión de la plataforma, el código que la contiene puede no compilar, así que la migración segura es eliminar la palabra clave en lugar de conservarla por nostalgia.
- Confusión con
TomorrowOpen. Los nombres parecen relacionados, pero las instrucciones no son intercambiables.TomorrowOpenafecta a la colocación de órdenes en bars diarias y sigue siendo una palabra clave activa,NextBarOpenes un modificador inerte. - Suponer que existe la ejecución en el mismo bar. Eliminar el modificador no habilita ejecuciones en el mismo bar. No existe ningún tipo de orden que se ejecute al cierre del bar de la señal, el modelo de apertura del siguiente bar es inherente al motor.
Instrucciones relacionadas
TomorrowOpen, instrucción de temporización de órdenes para bars diarios.MARKET, ejecución inmediata al precio de mercado actual.BUY, abre o amplía una posición long.SELL, cierra parte o toda una posición long.SELLSHORT, abre o amplía una posición short.EXITSHORT, cierra parte o toda una posición short.LIMIT, orden pendiente que se ejecuta a un precio fijado o mejor.STOP, orden pendiente que se activa cuando el precio alcanza un nivel.