
La estrategia de doble ATR es una estrategia de trading de corta línea basada en el indicador de la amplitud real media (ATR). La estrategia establece dos líneas de alto riesgo de ATR rápido y una de baja riesgo de ATR lento al mismo tiempo, para determinar la entrada y la salida en función de la intersección de las dos líneas de alto riesgo. La estrategia es simple y fácil de entender, responde rápidamente y es adecuada para mercados de alta volatilidad.
La estrategia utiliza principalmente el indicador ATR para establecer dos líneas de parada de pérdidas. Una es la línea ATR rápida, con un ciclo ATR corto, multiplicado por pequeño, de rápida respuesta; la otra es la línea ATR lenta, con un ciclo ATR largo, multiplicado por grande, que actúa como un filtro.
La lógica de operación específica es: calcular la línea ATR rápida y la línea ATR lenta; si el precio de la línea rápida es más alto que el de la línea lenta, se detendrá con la línea rápida, o se detendrá con la línea lenta. El color Kline indica la línea de parada actualmente en uso, el verde y el azul indican la parada con la línea rápida, el rojo y el amarillo indican la parada con la línea lenta.
La estrategia de doble ATR para detener el seguimiento de pérdidas tiene las siguientes ventajas:
La estrategia también tiene sus riesgos:
Se pueden reducir estos riesgos mediante la optimización de los ciclos ATR, la adaptación de la multiplicación de ATR y la combinación de filtros de otros indicadores.
Las direcciones en las que se puede optimizar aún más la estrategia de parada de pérdidas de seguimiento de doble ATR incluyen:
La estrategia de detención de pérdidas de seguimiento de doble ATR es fácil de entender y implementar en general, especialmente adecuada para escenarios de alta volatilidad, y permite un control de riesgo eficaz. El espacio de optimización también es grande, y se puede mejorar mediante el ajuste de parámetros, la adición de filtros, etc. Es una estrategia de línea corta recomendable.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ceyhun
//@version=4
strategy("ATR Trailing Stop Strategy by ceyhun", overlay=true)
/////////notes////////////////////////////////////////
// This is based on the ATR trailing stop indicator //
// width addition of two levels of stops and //
// different interpretation. //
// This is a fast-reacting system and is better //
// suited for higher volatility markets //
//////////////////////////////////////////////////////
SC = input(close, "Source", input.source)
// Fast Trail //
AP1 = input(5, "Fast ATR period", input.integer) // ATR Period
AF1 = input(0.5, "Fast ATR multiplier", input.float) // ATR Factor
SL1 = AF1 * atr(AP1) // Stop Loss
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) and SC[1] < nz(Trail1[1], 0), min(nz(Trail1[1], 0), SC + SL1), iff(SC > nz(Trail1[1], 0), SC - SL1, SC + SL1)))
// Slow Trail //
AP2 = input(10, "Slow ATR perod", input.integer) // ATR Period
AF2 = input(2, "Slow ATR multiplier", input.float) // ATR Factor
SL2 = AF2 * atr(AP2) // Stop Loss
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) and SC[1] < nz(Trail2[1], 0), min(nz(Trail2[1], 0), SC + SL2), iff(SC > nz(Trail2[1], 0), SC - SL2, SC + SL2)))
// Bar color for trade signal //
Green = Trail1 > Trail2 and close > Trail2 and low > Trail2
Blue = Trail1 > Trail2 and close > Trail2 and low < Trail2
Red = Trail2 > Trail1 and close < Trail2 and high < Trail2
Yellow = Trail2 > Trail1 and close < Trail2 and high > Trail2
// Signals //
Bull = barssince(Green) < barssince(Red)
Bear = barssince(Red) < barssince(Green)
Buy = crossover(Trail1, Trail2)
Sell = crossunder(Trail1, Trail2)
TS1 = plot(Trail1, "Fast Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.blue : color.yellow, linewidth=2)
TS2 = plot(Trail2, "Slow Trail", style=plot.style_line,color=Trail1 > Trail2 ? color.green : color.red, linewidth=2)
fill(TS1, TS2, Bull ? color.green : color.red, transp=90)
plotcolor = input(true, "Paint color on chart", input.bool)
bcl = iff(plotcolor == 1, Blue ? color.blue : Green ? color.lime : Yellow ? color.yellow : Red ? color.red : color.white, na)
barcolor(bcl)
if Buy
strategy.entry("Buy", strategy.long, comment="Buy")
if Sell
strategy.entry("Sell", strategy.short, comment="Sell")