Esta estrategia utiliza dos paradas de ATR con parámetros diferentes para establecer niveles de stop loss dinámicos - una parada rápida y una parada lenta. Establece posiciones largas basadas en las rupturas de precios de los diferentes niveles de parada y sale de las posiciones utilizando las paradas posteriores.
La estrategia utiliza el indicador ATR para calcular dos niveles de stop loss. La parada rápida utiliza el ATR de 5 períodos multiplicado por 0,5 como la distancia de parada. La parada lenta utiliza el ATR de 10 períodos multiplicado por 3 como la distancia de parada. Cuando el precio se rompe por encima del nivel de parada rápida, se establece una posición larga. Cuando el precio continúa rompiendo por encima del nivel de parada lenta, la parada se ajusta al nivel de parada lenta. Si el precio baja, el nivel de parada se ajusta en función de las relaciones de cruce.
La lógica es:
Calcular la parada rápida Trail1: ATR de 5 períodos * 0,5
Calcular la parada lenta de la pista2: ATR de 10 períodos * 3
Cuando el precio se rompe por encima de Trail1, establecer una posición larga
Cuando el precio continúa rompiendo por encima de Trail2, ajuste la parada a Trail2
Si el precio baja al romper Trail1, ajusta la parada de regreso a Trail1
Si el precio continúa bajando al romper Trail2, ajusta la parada a Trail2
Finalmente, si el precio alcanza el nivel de stop, salga de la posición con stop loss
De esta manera, la estrategia puede maximizar la ganancia durante las tendencias alcistas con las paradas posteriores mientras se detienen rápidamente las pérdidas cuando la tendencia se invierte.
Los niveles de suspensión de pérdidas dinámicas de ATR se establecen en función de la volatilidad del mercado
El mecanismo de doble parada equilibra entre las pérdidas de detención y las tendencias de seguimiento
Dirección larga se alinea con la tendencia al alza general, mayor rentabilidad
Lógica sencilla y clara, fácil de entender e implementar
Las reglas estrictas de stop loss limitan las pérdidas de manera efectiva
Los parámetros ATR incorrectos pueden causar que las paradas sean demasiado anchas o demasiado apretadas.
La dirección larga tiene sesgo direccional, propensa a detenerse en los picos del mercado
Las reglas de doble parada son complejas, pueden fallar si no se establecen correctamente
No hay filtros como los cruces de EMA, pueden causar malas operaciones.
No hay gestión de posiciones ni de riesgos, riesgos de sobreventa
Estos riesgos pueden reducirse optimizando los parámetros de ATR, añadiendo filtros y aplicando la gestión de riesgos.
Optimizar las combinaciones de parámetros ATR para obtener los mejores resultados
Añadir filtros como EMA para calificar las señales de entrada
Incorporar indicadores como el RSI de Stoch para obtener ventaja adicional
Añadir la lógica de reingreso para optimizar la gestión de la posición
Optimizar las reglas de gestión de riesgos para limitar las pérdidas de parada por operación
Incorporar análisis a nivel de mercado para evitar errores de dirección
Considere estrategias de tiempo más rápido como por hora
Extensión a la estrategia universal de múltiples mercados
Implementar un motor de negociación de alto rendimiento
Con estas mejoras, la estrategia puede ser más sólida, estable y rentable.
La estrategia utiliza paradas ATR claras para entradas y salidas largas. Las ventajas se encuentran en sus estrictas reglas de stop loss para limitar las pérdidas mientras se siguen las tendencias. Tiene riesgos de sesgo direccional que se pueden reducir a través de optimizaciones como mejores parámetros, agregar filtros y mejorar la gestión de riesgos.
/*backtest start: 2023-10-25 00:00:00 end: 2023-11-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("ATR Trailing Stop Strategy (Long Position Only)", overlay=true) SC = input(close, "Source", input.source) // Fast Trail AP1 = input(5, "Fast ATR period", input.integer) AF1 = input(0.5, "Fast ATR multiplier", input.float) SL1 = AF1 * atr(AP1) Trail1 = 0.0 Trail1 := iff(SC > nz(Trail1[1], 0) and SC[1] > nz(Trail1[1], 0), max(nz(Trail1[1], 0), SC - SL1), iff(SC < nz(Trail1[1], 0), SC + SL1, na)) // Slow Trail AP2 = input(10, "Slow ATR period", input.integer) AF2 = input(3, "Slow ATR multiplier", input.float) SL2 = AF2 * atr(AP2) Trail2 = 0.0 Trail2 := iff(SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0), max(nz(Trail2[1], 0), SC - SL2), iff(SC < nz(Trail2[1], 0), SC + SL2, na)) Green = Trail1 > Trail2 and close > Trail2 and low > Trail2 Buy = crossover(Trail1, Trail2) plotshape(Buy, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small) strategy.entry("Buy", strategy.long, when = Buy) var float trailingStopPrice = na if (Trail2 > trailingStopPrice) trailingStopPrice := Trail2 if (crossover(Trail1, Trail2)) trailingStopPrice := Trail2 strategy.exit("Exit", from_entry = "Buy", stop=trailingStopPrice)