Únete hoy
ProBacktest/probacktest · proorder

FLATAFTER

FLATAFTER es un parámetro de DEFPARAM que cierra todas las posiciones y cancela las órdenes pendientes a partir de una hora determinada cada día en las estrategias de ProBacktest y ProOrder.

Sintaxis

probuilder
DEFPARAM FLATAFTER = HHMMSS

Parámetros

NombreTipoPor defectoDescripción
FLATAFTERliteral de hora (HHMMSS)ningunoHora del día a partir de la cual se cierran todas las posiciones, se cancelan las órdenes pendientes y se bloquean las nuevas órdenes. Reloj de 24 horas, p. ej. 153000 para las 3:30 PM.

Cómo funciona

FLATAFTER se declara una vez con DEFPARAM al principio de la estrategia, antes de cualquier lógica de trading. A partir de la hora indicada, la plataforma cierra la posición que haya abierta, cancela todas las órdenes pendientes y rechaza nuevas órdenes durante el resto de la jornada. El código de la estrategia sigue ejecutándose, simplemente no puede mantener ni abrir operaciones pasado el corte, y la operativa normal se reanuda en la sesión siguiente.

El literal de hora usa el formato HHMMSS en reloj de 24 horas, así que 153000 significa 15:30:00. Se pueden escribir ceros a la izquierda para mayor legibilidad (073000), el valor es numérico en cualquier caso.

El parámetro es la forma estándar de construir estrategias de day trading que nunca deben mantener posiciones de un día para otro. Se combina de forma natural con FLATBEFORE, que bloquea la operativa antes de una hora elegida, de modo que ambas juntas confinan toda la actividad a una ventana intraday fija. Comparado con una lógica de salida hecha a mano basada en TIME, el DEFPARAM también cancela las órdenes pendientes, un paso que el código manual de cierre de posiciones suele olvidar.

Ejemplos

Ejemplo 1, Sin posición después de las 3:30 PM (ProOrder)

probuilder
// Close positions, cancel pending orders and stop trading after 15:30
DEFPARAM FLATAFTER = 153000

La declaración conservada de la referencia oficial. Después de las 3:30 PM no sobrevive ninguna posición ni ninguna orden pendiente, lo que garantiza que la estrategia termina cada día sin posición.

Ejemplo 2, Limitar un sistema de breakout a una ventana de sesión (ProBacktest)

probuilder
// Trade only between 08:00 and 17:00
DEFPARAM FLATBEFORE = 080000
DEFPARAM FLATAFTER = 170000

// Buy a breakout of the highest high of the last 20 bars
IF close crosses over highest[20](high)[1] THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

SET STOP %TRAILING 0.8

FLATBEFORE y FLATAFTER delimitan la sesión. El backtest refleja entonces una estrategia que siempre está fuera de mercado más allá de la ventana de 08:00 a 17:00, incluidas sus órdenes de trailing stop.

Ejemplo 3, Evitar un cierre poco líquido en futuros sobre índices (ProOrder)

probuilder
// Force flat 15 minutes before the cash close
DEFPARAM FLATAFTER = 214500
DEFPARAM CumulateOrders = false

rsiVal = RSI[14](close)

IF rsiVal crosses under 30 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND rsiVal crosses over 60 THEN
  SELL AT MARKET
ENDIF

Haga lo que haga la lógica del RSI, FLATAFTER garantiza que la posición se liquide antes del mercado poco líquido del cierre de sesión.

Errores y trampas habituales

  • Declarado después de la lógica de trading. Todas DEFPARAM líneas deben preceder a cualquier otra instrucción. Colocar FLATAFTER por debajo de un IF bloque o una instrucción de orden provoca un error de compilación.
  • Formato de hora incorrecto. El valor es HHMMSS, no HHMM. Escribir 1530 se interpreta como 00:15:30, no como 15:30:00, lo que cierra la estrategia justo después de medianoche en lugar de a media tarde.
  • Desajuste de marco temporal. El corte se resuelve con granularidad de bar. En un gráfico de 1 hora, un FLATAFTER = 153000 el corte no puede actuar exactamente a las 15:30, por lo que los cortes intraday corresponden a marcos temporales lo bastante finos para representar la hora. El parámetro no tiene sentido en marcos temporales diarios o superiores.
  • Supuestos sobre el reloj y la zona horaria. La hora se interpreta según el reloj que la plataforma aplica a los bars del gráfico. Cuando el mercado organizado del instrumento está en otra zona horaria, verifica el corte efectivo en el gráfico en lugar de dar por supuesta una coincidencia con la hora local.
  • FLATBEFORE, parámetro de DEFPARAM que mantiene la estrategia plana antes de una hora determinada.
  • DEFPARAM, declara los parámetros de la estrategia al principio del código.
  • CumulateOrders, parámetro de DEFPARAM que controla la acumulación de órdenes en la misma dirección.
  • QUIT, detiene la estrategia por completo tras cerrar las posiciones.
  • TIME, hora del bar actual para condiciones de tiempo escritas a mano.
  • CurrentTime, valor de hora real utilizable en condiciones.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • SELL, cierra toda o parte de una posición long.