Tendencia de ATR siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-09-21 15:13:47
Las etiquetas:

Resumen general

Esta estrategia utiliza el rango verdadero promedio (ATR) para capturar las tendencias de precios y establece paradas basadas en ATR para seguir la tendencia.

Cómo funciona

  1. Calcular el valor de ATR.

  2. Determinar el nivel de stop loss basado en el ATR.

  3. Introduzca largo / corto cuando el precio rompe el nivel de parada.

  4. Bloquear las ganancias ajustando las paradas dinámicamente.

Ventajas

  • ATR ajusta automáticamente las paradas, sin necesidad de intervención manual
  • Lógica sencilla e intuitiva, fácil de implementar
  • Ayuda a evitar quedarse atrapado, stop loss oportuno
  • Ganancias de las tendencias del ciclismo
  • Frecuencia de negociación controlada mediante parámetros ATR

Los riesgos

  • Los parámetros de ATR pobres pueden hacer que las paradas sean demasiado sueltas o apretadas
  • Incapacidad para identificar eficazmente el final de la tendencia
  • Existe un cierto retraso de tiempo
  • Las inversiones pueden reducir las ganancias

Direcciones de optimización

  • Optimizar el parámetro del período ATR
  • Prueba de diferentes múltiplos ATR para la distancia de parada
  • Añadir filtros para detectar la inversión de tendencia
  • Explorar el aprendizaje automático para la optimización de parámetros
  • Considerar mecanismos adicionales de obtención de beneficios

Conclusión

La estrategia captura de manera efectiva las tendencias utilizando ATR y bloquea las ganancias con paradas dinámicas. Los parámetros de ajuste fino pueden mejorar el rendimiento. Pero el retraso de ATR no se puede eliminar por completo.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title="ATR Strategy", overlay = true,  commission_type=strategy.commission.percent,commission_value=0.075)
//credits to HPotter for the orginal code
nATRPeriod = input(5)
nATRMultip = input(3.5)
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss),
                    iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.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))) 
color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 

strategy.entry("Long", strategy.long, when = barbuy) 
strategy.entry("Short", strategy.short, when = barsell) 

barcolor(barbuy? color.green:color.red)



Más.