Estrategia dinámica de seguimiento de stop loss basada en ATR y SMA


Fecha de creación: 2024-03-11 11:55:21 Última modificación: 2024-03-11 11:55:21
Copiar: 0 Número de Visitas: 705
1
Seguir
1617
Seguidores

Estrategia dinámica de seguimiento de stop loss basada en ATR y SMA

Descripción general

La estrategia combina el indicador ATR (Average True Range) y el indicador SMA (Simple Moving Average) para implementar un sistema de negociación de seguimiento de stop loss dinámico. Cuando el precio está por encima del SMA, al mismo tiempo que se establece un stop loss dinámico basado en ATR, el precio de stop loss aumenta continuamente a medida que el precio sube.

Principio de estrategia

  1. Se calcula el SMA de 50 días, cuando el precio de cierre es mayor que el SMA de 50 días.
  2. Calcula el indicador ATR, el ciclo ATR es de 10, multiplicado por un valor clave (el valor por defecto es 3) se obtiene la amplitud de parada nLoss.
  3. Calcula el precio de parada dinámica xATRTrailingStop, con un valor inicial de 0。
    • Cuando el precio de cierre y el precio de cierre anterior son mayores que el precio de cierre anterior, el nuevo precio de cierre es el valor mayor entre el precio de cierre anterior y el precio de cierre anterior.
    • Cuando el precio de cierre y el precio de cierre anterior son menores que el precio de cierre anterior, el nuevo precio de cierre es el valor menor entre el precio de cierre anterior y el precio de cierre anterior.
    • En otros casos, el nuevo precio de pérdida es el precio de cierre final - nLoss o el precio de cierre final + nLoss.
  4. Cuando el precio de cierre cae por debajo del precio de parada dinámica, se hace una posición llena.
  5. Los puntos de parada se indican en diferentes colores, el punto de parada de múltiples cabezas es verde, el punto de parada de cabeza vacía es rojo y el punto de parada de cabeza vacía es azul.

Análisis de las ventajas

  1. El mecanismo de stop loss dinámico puede proteger los beneficios en situaciones de tendencia y reducir el riesgo de retiro. En comparación con el stop loss fijo, el stop loss dinámico es más flexible y puede adaptarse a diferentes condiciones de mercado.
  2. El margen de pérdida se basa en el cálculo del indicador ATR, el ATR puede reflejar muy bien la magnitud de la volatilidad del mercado, por lo que la distancia de pérdida se ajusta automáticamente según la volatilidad de la situación reciente, aumentando el espacio de pérdida cuando aumenta la volatilidad y reduciendo el espacio de pérdida cuando disminuye la volatilidad.
  3. Usar el SMA como base para juzgar la tendencia, puede capturar una tendencia relativamente clara. Abrir más órdenes por encima del SMA, puede intervenir al comienzo de la tendencia y obtener un mayor espacio de ganancias.
  4. Permite a los usuarios configurar los parámetros de ciclo y valor clave de ATR y la flexibilidad de ajustar los parámetros de la política para adaptarse a las características de diferentes variedades y períodos.

Análisis de riesgos

  1. En situaciones de incertidumbre o de volatilidad, esta estrategia puede dar lugar a una mayor frecuencia de posiciones cerradas, lo que aumenta los costos de negociación y reduce las ganancias.
  2. Esta estrategia sólo tiene que ser multilógica, no puede ser rentable en una tendencia bajista, y se enfrenta al riesgo de un mercado unilateral. Se puede considerar la adición de lógica de pronóstico, para lograr un comercio bidireccional.
  3. El punto de parada se basa en el cálculo de ATR, en el momento en que las fluctuaciones en el mercado, el espacio de parada puede ser demasiado grande, lo que aumenta el riesgo. Se puede considerar la configuración de un límite máximo de parada para controlar la pérdida máxima de una sola transacción.
  4. La selección incorrecta de los parámetros puede causar la falla de la estrategia. Por ejemplo, el ATR de ciclo elegido demasiado pequeño, puede causar que el stop loss sea demasiado sensible y se active con frecuencia; el exceso puede no detener el stop loss a tiempo, aumentando las pérdidas.

Dirección de optimización

  1. La adición de la lógica de corto plazo, también puede obtener ganancias en la tendencia bajista, mejorar la adaptabilidad de la estrategia. Se puede abrir una carta en blanco cuando el precio cae por debajo de la SMA, también se utiliza la lógica de stop loss dinámica.
  2. Introducción de gestión de posiciones múltiples, ajustando el tamaño de las posiciones según la intensidad de la tendencia. Aumentar las posiciones cuando la tendencia es fuerte, para aumentar los ingresos; reducir las posiciones cuando la tendencia es débil, para controlar el riesgo.
  3. Optimización de la lógica de stop loss, estableciendo un máximo de stop loss para evitar pérdidas excesivas en situaciones extremas. También se puede considerar el establecimiento de un punto de parada para cerrar la posición activamente después de alcanzar los beneficios esperados, en lugar de mantenerla hasta el stop loss.
  4. Optimización de los parámetros, buscando la configuración óptima de los parámetros a través de diferentes combinaciones de parámetros. Se pueden utilizar métodos de optimización inteligentes como algoritmos genéticos para mejorar la eficiencia de la optimización.
  5. Considere la posibilidad de añadir más filtros, como volúmenes de transacciones, volatilidad y otros indicadores, para un mejor juicio de las tendencias y el riesgo, y mejorar la fiabilidad de la señal.

Resumir

La estrategia se basa en los indicadores ATR y SMA para implementar un sistema de seguimiento de pérdidas dinámicas de la estrategia, que puede ajustar automáticamente la posición de parada en la situación de la tendencia, para proteger los beneficios y controlar el riesgo. La lógica de la estrategia es clara, las ventajas son evidentes, pero también hay algunas limitaciones y puntos de riesgo.

Código Fuente de la Estrategia
/*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")