Únete hoy
ProBacktest/probacktest · proorder

LongTriggered

LongTriggered en ProBacktest y ProOrder devuelve verdadero cuando una entrada long se ejecutó en un bar determinado. Úsalo para detectar ejecuciones de órdenes pendientes bar a bar.

Sintaxis

probuilder
LongTriggered
probuilder
LongTriggered[N]

Parámetros

NombreTipoPor defectoDescripción
Nentero0Desplazamiento de bar respecto al bar actual. 0 es el bar actual, 1 es el bar anterior, y así sucesivamente.

Cómo funciona

Cada vez que una estrategia abre una posición long, ProBacktest y ProOrder registran la ejecución en el bar en el que ocurrió. LongTriggered lee ese registro: devuelve true en un bar en el que se ejecutó una entrada long y false en todos los demás. El índice opcional desplaza la consulta hacia el pasado, así que LongTriggered[1] pregunta si una entrada long se ejecutó en el bar anterior.

La diferencia con LongOnMarket importa sobre todo con las órdenes pendientes. Una entrada stop o limit puede ejecutarse intrabar y su stop de protección o su objetivo también pueden activarse dentro del mismo bar. En ese caso LongOnMarket ya ha vuelto a ser false cuando el código se ejecuta en el cierre del bar, y la operación sería invisible para las comprobaciones de estado de la posición. LongTriggered sigue devolviendo verdadero para ese bar, por lo que la estrategia puede reaccionar a la ejecución aunque la posición ya no exista.

El flag está vinculado únicamente a las entradas. Las salidas, los stops alcanzados y los targets alcanzados no lo activan. Para las entradas short la contrapartida es ShortTriggered.

Ejemplos

Ejemplo 1, Conteo de entradas long (ProOrder)

probuilder
// increment a counter each time a long entry fills
if LongTriggered then
  buycount = buycount + 1
endif

Cada barra en la que se ejecutó una entrada long incrementa buycount en uno. El contador puede entonces condicionar la lógica posterior, por ejemplo limitar el número de entradas por sesión.

Ejemplo 2, Pausa tras una ejecución reciente (ProBacktest)

probuilder
// entry signal: close crosses above the 50-bar average
signal = close crosses over Average[50](close)

// skip new entries on the bar right after a fill
IF signal AND NOT LongTriggered[1] AND NOT LongOnMarket THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

LongTriggered[1] comprueba si una entrada long se ejecutó en el bar anterior. La condición impide entradas seguidas en bars consecutivos, un filtro de enfriamiento sencillo.

Ejemplo 3, Detección de una entrada y salida en el mismo bar (ProOrder)

probuilder
// pending entry above the prior high, protective stop attached
IF NOT OnMarket THEN
  BUY 1 CONTRACT AT high[1] STOP
  SET STOP PLOSS 20
ENDIF

// a fill happened this bar but no position remains:
// the stop was hit within the same bar
IF LongTriggered AND NOT LongOnMarket THEN
  stoppedSameBar = 1
ENDIF

Cuando LongTriggered es verdadero mientras LongOnMarket es falso en la misma bar, la entrada y su stop se ejecutaron ambos dentro de esa bar. La bandera stoppedSameBar puede usarse entonces para quedarse al margen o ajustar la siguiente entrada.

Errores y trampas habituales

  • El índice por defecto es el bar actual. LongTriggered sin corchetes significa LongTriggered[0]. El código que pretenda comprobar la bar anterior debe escribir LongTriggered[1] explícitamente. Suponer que la forma simple mira una bar atrás es un malentendido frecuente.
  • Confundirlo con LongOnMarket. LongOnMarket informa del estado de la posición abierta, LongTriggered informa del evento de ejecución de entrada. Una operación que se abre y se cierra dentro de una misma bar muestra LongTriggered = TRUE y LongOnMarket = FALSE en ese bar.
  • Solo entradas. El indicador nunca reacciona por sí solo a las salidas ni a los stops alcanzados. Detectar un cierre por stop en el mismo bar requiere combinarlo con una comprobación del estado de la posición, como en el Ejemplo 3.
  • Índice negativo o no entero. N debe ser un entero no negativo. Pasar un desplazamiento negativo o un valor fraccionario no es válido, no existe adelanto hacia barras futuras.
  • ShortTriggered, el indicador equivalente para las entradas short.
  • LONGONMARKET, verdadero mientras hay una posición long abierta.
  • SHORTONMARKET, verdadero mientras hay una posición short abierta.
  • ONMARKET, verdadero mientras hay alguna posición abierta.
  • BUY, abre una posición long.
  • MARKET, ejecución inmediata al precio de mercado actual.
  • TRADEPRICE, el precio de entrada de la posición actual.
  • TRADEINDEX, el índice de bar de la entrada de la posición actual.