Super ATR Tendencia siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-19 11:41:20
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de tendencias Super ATR es una estrategia de seguimiento de tendencias basada en indicadores ATR. Utiliza el indicador ATR para medir la volatilidad del mercado y establece un stop loss basado en múltiples ATR para rastrear tendencias.

Estrategia lógica

La estrategia primero calcula el indicador ATR, que es el promedio móvil de la volatilidad de los precios durante los últimos N días, para representar el riesgo y la volatilidad del mercado.

Luego, las bandas superior e inferior se calculan sobre la base del valor ATR multiplicado por un factor, es decir:close - Multiplier * ATRpara la banda superior;close + Multiplier * ATREsto forma un canal de tendencia basado en ATR.

Luego juzgamos si el precio actual rompe la banda superior o inferior del canal. Si el precio rompe la banda superior, se juzga que entra en una tendencia bajista; si el precio rompe la banda inferior, se juzga que entra en una tendencia alcista. Cuando hay una ruptura de tendencia, hacemos la compra y venta correspondientes.

Además, la estrategia ha establecido una ventana de tiempo de negociación para negociar solo en el intervalo de tiempo de fecha especificado.

Análisis de ventajas

Esta estrategia de seguimiento de tendencias basada en el canal de indicadores tiene las siguientes ventajas:

  1. El uso del indicador ATR para ajustar automáticamente la posición de stop loss controla eficazmente los riesgos
  2. ATR considera la volatilidad de los precios, un stop loss más razonable
  3. Aumentar la precisión de entrada mediante la ruptura del canal
  4. Permite ajustar el método de cálculo del ATR, más flexible
  5. El establecimiento de una ventana de negociación evita el fracaso de la estrategia durante eventos significativos

En general, esta es una tendencia simple y práctica siguiendo una estrategia que puede controlar eficazmente los riesgos y obtener buenos rendimientos.

Análisis de riesgos

Esta estrategia también presenta algunos riesgos:

  1. El mercado puede tener cambios violentos que ATR no puede reaccionar a tiempo, lo que resulta en un stop loss demasiado flojo
  2. El precio puede variar en el canal cuando el sentimiento diverge, aumentando el riesgo comercial
  3. Es posible que el múltiplo fijo no se adapte a todos los productos, por lo que debe ajustarse en consecuencia.
  4. SetWindow limita las oportunidades de negociación, puede perder buenas operaciones si no se establece correctamente

Para controlar estos riesgos, podemos tomar las siguientes medidas:

  1. Combinar otros indicadores para determinar la situación del mercado, evitar depender únicamente del ATR
  2. Añadir filtros para evitar una ruptura no válida que introduzca un riesgo comercial
  3. Seleccionar el multiplicador adecuado según las características históricas de los diferentes productos
  4. Optimizar y probar los parámetros de la ventana para garantizar la configuración adecuada

Optimización

Hay margen para una mayor optimización de esta estrategia:

  1. Introducir algoritmos de aprendizaje automático para optimizar dinámicamente el multiplicador
  2. Incorporar indicadores de sentimiento, etc. para optimizar el rango de canales
  3. Añadir confirmación de volumen o volatilidad para evitar una ruptura no válida
  4. Utilice el marco de estrategia avanzado basado en el tiempo para backtest

Estas optimizaciones pueden mejorar aún más la estabilidad y la rentabilidad de la estrategia.

Conclusión

En general, esta es una estrategia de seguimiento de tendencias muy práctica. Construye un canal adaptativo utilizando el indicador ATR y determina las entradas por rupturas de canal. La estrategia es simple y efectiva para controlar riesgos, adecuada para rastrear tendencias a medio y largo plazo. También propusimos más sugerencias de control de riesgos y optimización para hacer la estrategia más robusta.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('B厂长 @超级趋势精简优化版', overlay=true)
Periods = input(title='ATR周期', defval=10)
src = input(hl2, title='价格数据源')
Multiplier = input.float(title='ATR 乘数', step=0.1, defval=3.0)
changeATR = input(title='更改ATR计算方法', defval=true,tooltip = '默认为art否则sma(ta.tr,ATR周期)')
showsignals = input(title='显示买入/卖出信号', defval=false)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='上涨趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal and showsignals ? up : na, title='买点', text='买点', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='下跌趋势', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal and showsignals ? dn : na, title='卖点', text='卖点', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
FromMonth = input.int(defval=9, title='From Month', minval=1, maxval=12)
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31)
FromYear = input.int(defval=2018, title='From Year', minval=999)
ToMonth = input.int(defval=1, title='To Month', minval=1, maxval=12)
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31)
ToYear = input.int(defval=9999, title='To Year', minval=999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() =>
    time >= start and time <= finish ? true : false
longCondition = buySignal
if longCondition and window()
    strategy.entry('BUY', strategy.long, comment = '做多')
shortCondition = sellSignal
if shortCondition and window()
    strategy.entry('SAL', strategy.short, comment = '做空')

buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na



Más.