Estrategia de seguimiento de tendencias Super ATR


Fecha de creación: 2024-02-19 11:41:20 Última modificación: 2024-02-19 11:41:20
Copiar: 0 Número de Visitas: 669
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias Super ATR

Descripción general

La estrategia de seguimiento de tendencias de SuperATR es una estrategia de seguimiento de tendencias basada en el indicador ATR. Utiliza el indicador ATR para medir la volatilidad del mercado y realiza el seguimiento de tendencias con varias veces el ATR como línea de parada.

Principio de estrategia

La estrategia primero calcula el indicador ATR, donde el indicador ATR es el promedio móvil de la amplitud de la fluctuación de los precios de las acciones en los últimos N días, para representar el riesgo y la volatilidad del mercado. La estrategia nos permite cambiar el método de cálculo del ATR, y puede elegir el método de cálculo del ATR o SMA.

Luego se multiplica por un múltiplo de la escala de ATR como la escala de la vía, es decir, se calcula la escala:close - Multiplier * ATR; cálculo de la baja:close + Multiplier * ATREsto constituye un canal de tendencias basado en el indicador ATR.

Luego, evaluamos si el precio actual ha roto el canal de subida y bajada. Si el precio ha roto el canal de subida, se considera que ha entrado en una tendencia descendente; si el precio ha roto el canal de bajada, se considera que ha entrado en una tendencia ascendente.

Además, la estrategia establece ventanas de tiempo de negociación que solo se negocian durante el período de tiempo de la fecha indicada.

Ventajas estratégicas

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

  1. Utiliza el indicador ATR para ajustar automáticamente la posición de parada y controlar el riesgo de manera efectiva
  2. El índice ATR tiene en cuenta la volatilidad de los precios de las acciones y la línea de stop loss es más razonable
  3. El uso de la brecha de acceso a la entrada aumenta la precisión de la entrada
  4. Permite ajustar la forma en que se calcula el ATR, lo que aumenta la flexibilidad de las políticas
  5. Establecer ventanas de tiempo de negociación para evitar que las estrategias de eventos importantes fallen

En general, es una estrategia de seguimiento de tendencias sencilla y práctica que permite controlar el riesgo de manera efectiva y obtener mejores ganancias.

Análisis de riesgos

La estrategia también presenta algunos riesgos, principalmente:

  1. En caso de cambios bruscos en el mercado, los indicadores ATR pueden no reaccionar a tiempo a los cambios en el mercado, lo que hace que los parados sean demasiado flexibles.
  2. Cuando hay discrepancias en el mercado, los precios pueden oscilar en el canal, aumentando el riesgo de transacción.
  3. La configuración de multiplicadores fijos puede no ser adecuada para todas las variedades y requiere ajustes para diferentes variedades
  4. setWindow limita las oportunidades de negociación, y si no está bien configurado, puede perderse una oportunidad de negociación mejor

Para controlar estos riesgos, podemos tomar las siguientes medidas:

  1. Combinar otros indicadores para determinar el estado del mercado y evitar la dependencia de un solo indicador ATR
  2. Aumentar las condiciones de filtración para evitar el riesgo de introducción de brechas no válidas
  3. Selección de los multiplicadores adecuados según las características históricas de las diferentes variedades
  4. Optimice y pruebe los parámetros de setWindow para asegurarse de que su configuración sea razonable

Dirección de optimización

La estrategia aún tiene espacio para ser optimizada:

  1. Puede introducir algoritmos de aprendizaje automático para optimizar la dinámica de multiplicación
  2. La combinación de indicadores de emoción con el uso de palancas libres para optimizar el alcance del canal
  3. Aumentar el volumen de operaciones o confirmaciones de fluctuaciones para evitar una ruptura de invalidez
  4. Backtest con un marco de políticas basado en el tiempo avanzado

Con estas optimizaciones, se puede mejorar aún más la estabilidad y la rentabilidad de la estrategia.

Resumir

Esta estrategia es una estrategia de seguimiento de tendencias muy práctica. Utiliza el indicador ATR para construir un canal de adaptación y determinar el momento de comprar o vender con una ruptura en el canal. La estrategia es sencilla de usar, controla el riesgo de manera efectiva y es adecuada para seguir tendencias de línea media.

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