Estrategia de detención de seguimiento ATR basada en el indicador de UT Bot

El autor:¿ Qué pasa?, Fecha: 2024-03-11 11:17:33
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador UT Bot desarrollado por QuantNomad e incorpora la idea de un stop loss de seguimiento. El código original fue escrito por @Yo_adriiiiaan y modificado por @HPotter. La estrategia se utilizará junto con LuxAlgo Smart Money Concepts. Actualmente, la estrategia se encuentra en la fase de prueba.

Principio de la estrategia

Los principios principales de esta estrategia son los siguientes:

  1. Cuando el precio de cierre es superior a la media móvil simple de 50 períodos, se realiza una operación larga.
  2. Para las posiciones largas, se establece un precio de stop loss de seguimiento. El precio de stop loss de seguimiento es del 80% (1-20%) del precio de cierre actual. El precio de stop loss de seguimiento se mueve hacia arriba con los precios en aumento pero no hacia abajo, protegiendo así las ganancias.
  3. Para las posiciones cortas, también se establece un precio de stop loss de seguimiento. El precio de stop loss de seguimiento es del 120% (1+20%) del precio de cierre actual.
  4. El método de cálculo para el precio de la parada de trail ATR es: al moverse hacia arriba, tomar el mayor del precio de la parada de trail ATR anterior y (precio de cierre actual - ATR * Valor clave); al moverse hacia abajo, tomar el menor del precio de la parada de trail ATR anterior y (precio de cierre actual + ATR * Valor clave).
  5. En base a la ruptura del precio de parada de trail ATR, se determina la dirección de la posición actual. Cuando el precio se rompe por encima del precio de parada de trail ATR, se mantiene una posición larga; cuando el precio se rompe por debajo del precio de parada de trail ATR, se mantiene una posición corta; en otros casos, el estado de la posición actual permanece sin cambios.

Análisis de ventajas

  1. El establecimiento del trailing stop puede proteger eficazmente las ganancias, lo que permite a la estrategia obtener más ganancias en los mercados de tendencia.
  2. El establecimiento de stop loss por separado para posiciones largas y cortas puede adaptarse a diferentes condiciones de mercado.
  3. El uso de ATR como referencia para el stop loss permite un ajuste dinámico de la posición de stop loss, lo que la hace más flexible y eficaz.
  4. El parámetro Key Value se proporciona para la optimización del usuario, que se puede ajustar de acuerdo con diferentes variedades y ciclos para mejorar la adaptabilidad.

Análisis de riesgos

  1. En los mercados inestables, las interrupciones frecuentes pueden conducir a transacciones excesivas, aumentando los costos de comisión y reduciendo los rendimientos.
  2. El método de suspensión por porcentaje fijo es relativamente simple y puede no ser capaz de hacer frente bien a las fluctuaciones de precios en algunas condiciones de mercado.
  3. La estrategia sólo considera los paros de trailing y no establece objetivos de ganancias de trailing, que pueden perder algunas oportunidades de ganancia.
  4. La elección de los parámetros tiene un impacto significativo en el rendimiento de la estrategia, y los parámetros inadecuados pueden acarrear mayores riesgos de extracción.

Dirección de optimización

  1. Otros indicadores o condiciones, como el volumen de operaciones y la volatilidad, pueden considerarse para optimizar las condiciones de entrada y mejorar la fiabilidad de la señal.
  2. Para el método de cálculo de la parada posterior, se pueden explorar métodos más complejos y eficaces, como el uso de pérdida de parada parabólica o pérdida de parada dinámica porcentual.
  3. Por ejemplo, puede añadirse un mecanismo de objetivos de utilidad de seguimiento, estableciendo objetivos de utilidad dinámicos basados en ATR o porcentajes para asegurar mejor los beneficios.
  4. La optimización de parámetros se puede realizar para diferentes variedades y ciclos para encontrar las combinaciones de parámetros más adecuadas.

Resumen de las actividades

Basada en el indicador UT Bot, esta estrategia incorpora una lógica de stop de seguimiento, que puede proteger las ganancias en los mercados de tendencia. Al mismo tiempo, la estrategia establece stop-loss por separado para posiciones largas y cortas, lo que la hace altamente adaptable. El uso de ATR como referencia para la parada de seguimiento permite un ajuste dinámico de la posición de stop loss, mejorando la flexibilidad. Sin embargo, esta estrategia puede enfrentar el riesgo de altos costos de transacción debido a frecuentes stop-outs en mercados agitados, y carece de un establecimiento de objetivos de ganancias de seguimiento, lo que puede perder oportunidades de ganancia. Además, la elección de parámetros tiene un impacto significativo en el rendimiento de la estrategia.

En el futuro, la estrategia puede mejorarse optimizando las condiciones de entrada, explorando métodos más complejos de trailing stop, agregando un mecanismo de meta de ganancia de trailing, y optimizando parámetros para diferentes variedades y ciclos, con el fin de obtener rendimientos más estables.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")

Más.