Tendencia de ATR siguiendo la estrategia basada en el canal de desviación estándar

El autor:¿ Qué pasa?, Fecha: 2024-01-05 16:34:27
Las etiquetas:

img

Resumen general

Esta estrategia llamada ATR Trend Following Strategy es una estrategia de trading basada en el Average True Range (ATR) para stop loss y canal de desviación estándar para señales de entrada. Es adecuada para productos financieros con tendencias obvias, como índices, forex y materias primas.

La lógica de la negociación

La estrategia utiliza el indicador ATR para establecer el precio de stop loss. ATR refleja la volatilidad del mercado y se puede utilizar para establecer dinámicamente la distancia de stop loss. La estrategia calcula el valor de ATR basado en el período de entrada del usuario ATR y el multiplicador, y utiliza el valor de ATR multiplicado por el multiplicador como distancia de stop loss.

ATR Line = Prior ATR Line ± nLoss (nLoss = nATRMultip * ATR value)  

If close > ATR Line, adjust ATR Line up to close - nLoss
If close < ATR Line, adjust ATR Line down to close + nLoss

De esta manera, la línea ATR puede ajustarse dinámicamente en función de la fluctuación de los precios para alcanzar la tendencia después de la parada de pérdida.

Además de ATR trailing stop, la estrategia también utiliza el canal de desviación estándar para determinar las señales de entrada.

Middle Line = ATR Trailing Stop Line   
Upper Band = Middle Line + n * Standard Deviation
Lower Band = Middle Line - n * Standard Deviation

Ir largo cuando el precio rompe la línea media hacia arriba.

Ventajas

La mayor ventaja de esta estrategia es que utiliza el indicador ATR para establecer el stop loss dinámicamente en función de la volatilidad del mercado, lo que permite la tendencia después del stop loss y un control eficaz del riesgo.

Además, el uso del canal de desviación estándar para las señales de entrada evita la apertura frecuente de posiciones debido a pequeñas fluctuaciones de precios.

Riesgos y soluciones

El principal riesgo es que si la distancia de stop loss es demasiado grande, no puede controlar el riesgo de manera efectiva, pero si es demasiado pequeña, puede ser fácilmente detenida por el ruido del mercado.

Otro riesgo son los parámetros de canal de desviación estándar inadecuados que conducen a una frecuencia de entrada demasiado alta/baja.

Oportunidades de mejora

La estrategia puede mejorarse en los siguientes aspectos:

  1. Optimizar el período ATR y el multiplicador para lograr un mejor efecto de stop loss.

  2. Optimizar los parámetros del canal de desviación estándar para mejores señales de entrada.

  3. Añadir otros indicadores para filtrar, por ejemplo, media móvil, patrones de velas, etc., para ayudar a juzgar la dirección de la tendencia y mejorar la rentabilidad.

  4. Optimizar la lógica de entrada y salida, por ejemplo, abrir posiciones solo después de confirmar el patrón de candlestick cuando el precio alcanza las bandas de canal.

Resumen de las actividades

La estrategia alcanza la tendencia después de la parada de pérdida basada en el indicador ATR y utiliza el canal de desviación estándar para las señales de entrada. Sus ventajas se encuentran en una buena capacidad de control de riesgos para el comercio de tendencias. Los riesgos y las mejoras también se analizan claramente. La estrategia vale la pena más pruebas y optimización y tiene valor comercial práctico.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version = 2
strategy(title="Average True Range Strategy", overlay = true)
nATRPeriod = input(11) //Hur många perioder ATR är på
nATRMultip = input(0.5) //Hur många gånger nuvarande ATR multipliceras med
xATR = atr(nATRPeriod)
nLoss = nATRMultip * xATR
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 = 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))) 

stdev3 = 14*stdev(xATR, nATRPeriod)
band1 = xATRTrailingStop+stdev3 //Översta stdev bandet
band2 = xATRTrailingStop-stdev3 //Nedersta stdev bandet


// Datum och tid
FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2013, title = "From Year", minval = 2013)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2017)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start 
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest slut
startTimeOk()  => true
initial_capital = 100000

take = close > xATRTrailingStop

if( startTimeOk() ) and (pos == 1)
//if (pos == 1) 
    strategy.entry("Long", strategy.long, comment = "KOP")
    strategy.exit("Long", when = take)
   
if( startTimeOk() ) and (pos == -1)
//if (pos == -1)
    strategy.entry("Short", strategy.short, comment = "SALJ")
   
barcolor(pos == -1 ? red: pos == 1 ? green : blue )
plot(xATRTrailingStop, color=red, title="ATR Trailing Stop") //Mittersta linjen som är triggerlinjen för köp/sälj
plot(band1, color=red)
plot(band2, color=blue)



Más.