Únete hoy
ProBacktest/probacktest · proorder

$TRAILING

La instrucción $TRAILING establece un trailing stop como una distancia monetaria fija en la divisa del instrumento con SET STOP $TRAILING en ProBacktest y ProOrder.

Sintaxis

probuilder
SET STOP $TRAILING x

Parámetros

NombreTipoPor defectoDescripción
xnumériconingunoDevolución máxima permitida desde el mejor precio desde la entrada, expresada en la divisa del instrumento negociado.

Cómo funciona

$TRAILING se combina con SET STOP solo. Se comporta como SET STOP $LOSS con una diferencia: el precio de referencia avanza como un trinquete. En una posición long el stop se arrastra por debajo del precio máximo alcanzado desde la entrada, a una distancia equivalente a x unidades de divisa dado el position size, y nunca baja. En una posición short se desplaza por encima del precio mínimo alcanzado. Cuando el precio retrocede toda la distancia, la posición se cierra.

El importe monetario se traduce en una distancia de precio a través del position size y el valor del punto del instrumento, por lo que el mismo x produce un recorrido de precio más ajustado en una posición mayor. El ajuste persiste para la posición actual y todas las futuras hasta que otra SET STOP la llamada lo anula, y un valor de 0 lo desactiva.

El efecto práctico es un límite a cuánto beneficio abierto puede devolver la operación, medido en términos relevantes para la cuenta en lugar de en puntos o porcentaje.

Ejemplos

Ejemplo 1, Entrada en retroceso con un trailing de 100 unidades monetarias (ProBacktest)

probuilder
// Moving averages framing the pullback
i1 = Average[100](close)
i2 = Average[5](close)

// Uptrend pullback with three rising lows
tradeinitiate = Close > i1 AND Close < i2 AND Low[3] > Low[2] AND Low[2] > Low[1] AND Low[1] > Low

IF NOT LongOnMarket AND tradeinitiate THEN
    BUY 1 CONTRACTS AT MARKET
    // Give the trade at most 100 of retracement from its best price
    SET STOP $TRAILING 100
ENDIF

La estrategia compra retrocesos en una tendencia alcista. Desde la entrada en adelante el stop sigue el precio más alto alcanzado y sale tras un retroceso por valor de 100 unidades monetarias.

Ejemplo 2, Trailing monetario en un breakout short (ProOrder)

probuilder
support = Lowest[20](low)
IF NOT ShortOnMarket AND close crosses under support[1] THEN
    SELLSHORT 1 CONTRACT AT MARKET
ENDIF
// The stop trails above the lows, exit after a 75 currency-unit bounce
SET STOP $TRAILING 75

En el lado short el trailing sigue al precio hacia abajo; solo un rebote por valor de 75 unidades monetarias en contra de la posición activa la salida.

Ejemplo 3, Primero stop monetario estático, trailing tras la activación (ProOrder)

probuilder
DEFPARAM CumulateOrders = false

IF NOT OnMarket AND close crosses over Highest[20](high)[1] THEN
    BUY 1 CONTRACT AT MARKET
    // Fixed risk while the breakout proves itself
    SET STOP $LOSS 120
ENDIF

// Once the trade is 100 ahead in money terms, switch to a trail
IF LongOnMarket AND (close - TRADEPRICE) * POINTVALUE / POINTSIZE >= 100 THEN
    SET STOP $TRAILING 60
ENDIF

Una salida en dos fases expresada íntegramente en dinero: un límite de riesgo estático de 120 en la entrada, sustituido por una devolución trailing de 60 una vez que el beneficio abierto alcanza 100. La conversión usa POINTVALUE y POINTSIZE para convertir el movimiento del precio en divisa para una posición de un contrato.

Errores y trampas habituales

  • Emparejamiento de SET incorrecto. $TRAILING es una instrucción de stop y se combina con SET STOP solo. No hay SET TARGET $TRAILING; los objetivos de beneficio usan $PROFIT.
  • Dinero, no puntos. SET STOP $TRAILING 100 permite una devolución equivalente a 100 unidades monetarias, no a 100 puntos. La variante en puntos es PTRAILING, y confundir ambos cambia la distancia del stop según el valor del punto del instrumento.
  • El position size reescala el trailing. Como la distancia monetaria se reparte entre la posición, duplicar la cantidad reduce a la mitad la separación de precio. Los cambios de tamaño pueden convertir un trailing cómodo en uno dentro del ruido normal de las barras.
  • Una sola ranura de stop. $TRAILING, %TRAILING, $LOSS, PLOSS y BREAKEVEN sobrescriben el mismo stop interno; solo el más reciente SET STOP está activa. Alternar entre ellas en cada bar produce salidas erráticas.
  • Granularidad del backtest. ProBacktest actualiza el nivel del trailing a partir de los datos de la barra. La ejecución real hace el seguimiento tick a tick, por lo que las salidas reales pueden diferir ligeramente de las del backtest en barras rápidas.
  • %TRAILING, trailing stop como porcentaje del precio de la posición.
  • PTRAILING, trailing stop como distancia en puntos.
  • TRAILING, resumen de la familia del trailing stop.
  • $LOSS, stop loss estático como un importe monetario fijo.
  • $PROFIT, take profit como importe fijo de dinero.
  • BREAKEVEN, mueve el stop o el objetivo al precio de entrada.
  • STOP, órdenes stop pendientes y la familia SET STOP.
  • POINTVALUE, valor en divisa de un punto, usado en la conversión de dinero a precio.
  • LONGONMARKET, verdadero mientras hay una posición long abierta.