Tendencia de ATR siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-09-28 11:32:09
Las etiquetas:

Resumen general

Esta estrategia utiliza el indicador Average True Range (ATR) para determinar la dirección de la tendencia.

Estrategia lógica

La estrategia primero calcula el promedio móvil simple (sma) y el promedio móvil exponencial (ema) del precio. Luego calcula el indicador ATR, que es el rango promedio de movimiento del precio en los últimos N días.

La estrategia utiliza la línea media de la EMA, la banda superior (coeficiente EMA + ATR *) y la banda inferior (coeficiente EMA - ATR *) para determinar la dirección de la tendencia.

La lógica principal en el código:

  1. Cálculo de las medias de precios SMA y EMA
  2. Calcular el rango medio del ATR
  3. Calcular las bandas superior e inferior
  4. Determinación de la señal larga: las rupturas de precios por encima de la banda superior
  5. Determinación de la señal corta: las rupturas de precios por debajo de la banda inferior
  6. Establecer el stop loss para cerrar posiciones: las rupturas de precios por debajo de la banda superior para cerrar operaciones largas; las rupturas de precios por encima de la banda inferior para cerrar operaciones cortas.

Al ajustar dinámicamente las posiciones basadas en ATR, puede seguir eficazmente las direcciones de tendencia.

Ventajas

  1. El uso de ATR para determinar la dirección de la tendencia puede capturar eficazmente las tendencias de precios
  2. Las pérdidas de detención basadas en medias móviles pueden controlar razonablemente los riesgos
  3. Lógica estratégica simple y clara, fácil de entender e implementar
  4. Parámetros flexibles y configurables, adaptables a los diferentes entornos del mercado

Los riesgos

  1. El indicador ATR fallará en mercados laterales altamente volátiles
  2. Las configuraciones incorrectas de los parámetros pueden causar operaciones demasiado frecuentes
  3. Las inversiones repentinas pueden invalidar el stop loss
  4. Los costes de negociación más elevados requieren un ajuste para los ajustes de seguimiento

Soluciones:

  1. Pausa de la estrategia o uso de otros indicadores con alta volatilidad
  2. Optimizar los parámetros para reducir la frecuencia de las operaciones
  3. Aumentar la proporción de pérdidas de parada para eventos de datos importantes
  4. Ajustar el rango ATR en función de productos específicos

Direcciones de mejora

  1. Combinar con los indicadores de tendencia para optimizar los parámetros, por ejemplo, añadir MACD para la tendencia
  2. Añadir filtros como Bandas de Bollinger para la entrada
  3. Optimizar los métodos de stop loss, como los indicadores de stop o salida
  4. Optimizar el rango de ATR en función de productos específicos
  5. Añadir la gestión de riesgos como el tamaño de la posición fraccionaria fija
  6. Optimización dinámica de parámetros mediante aprendizaje automático

Resumen de las actividades

La estrategia de seguimiento de tendencias ATR tiene una lógica clara para determinar la dirección de la tendencia utilizando ATR. Es un sistema típico de seguimiento de tendencias. Las ventajas son la simplicidad y la capacidad de seguir las tendencias. Pero también tiene riesgos que requieren optimizaciones para diferentes mercados. En general, tiene un gran potencial y valor como herramienta de negociación cuantitativa.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
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/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

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 = 2008, title = "From Year", minval = 2008)
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 = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   strategy.entry("SALJ", strategy.short, when=bear_cross) 
   strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Más.