Estratégia de acompanhamento de tendências do Super ATR


Data de criação: 2024-02-19 11:41:20 última modificação: 2024-02-19 11:41:20
cópia: 0 Cliques: 669
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências do Super ATR

Visão geral

A estratégia de acompanhamento de tendências do Super ATR é uma estratégia de acompanhamento de tendências baseada no indicador ATR. Ela usa o indicador ATR para medir a volatilidade do mercado e realiza o acompanhamento de tendências com várias vezes o ATR como linha de parada.

Princípio da estratégia

A estratégia começa com o cálculo do indicador ATR, onde o indicador ATR é a média móvel da amplitude de flutuação do preço das ações nos últimos N dias, para representar o risco e a volatilidade do mercado. A estratégia permite que mudemos a maneira de calcular o ATR, podendo escolher o ATR comum ou o SMA.

O valor ATR é então multiplicado por um múltiplo como um caminho de subida e descida, ou seja, calculado em subida:close - Multiplier * ATRCalcular a descida:close + Multiplier * ATR│ que constitui um canal de tendências baseado no indicador ATR │

Em seguida, nós julgamos se o preço atual quebrou o canal para cima ou para baixo. Se o preço quebrou o canal para cima, entramos em uma tendência de queda; se o preço quebrou o canal para baixo, entramos em uma tendência de alta.

Além disso, a estratégia também define uma janela de tempo de negociação, que só é negociado dentro de um período de tempo de data especificada.

Vantagens estratégicas

Esta estratégia de acompanhamento de tendências baseada em canais de indicadores tem as seguintes vantagens:

  1. Ajuste automático da posição de parada usando o indicador ATR para controlar o risco de forma eficaz
  2. Indicador ATR leva em consideração a volatilidade dos preços das ações e a linha de stop loss é mais razoável
  3. A introdução de um portal de acesso para aumentar a precisão de entrada
  4. Permite ajustar a forma como o ATR é calculado, aumentando a flexibilidade da política
  5. Estabelecer uma janela de tempo de negociação para evitar falhas de estratégias de eventos importantes

No geral, é uma estratégia simples e prática de acompanhamento de tendências que permite controlar os riscos de forma eficaz e, ao mesmo tempo, obter melhores resultados.

Análise de Riscos

A estratégia também apresenta alguns riscos, principalmente:

  1. Quando o mercado muda drasticamente, os indicadores ATR podem não reagir às mudanças no mercado, o que leva a um stop loss muito relaxado.
  2. Quando há discordância entre os operadores, os preços podem oscilar dentro do canal, aumentando o risco de transação.
  3. A configuração de multiplicador fixo pode não ser adequada para todas as variedades e precisa ser ajustada para diferentes variedades
  4. O setWindow limita as oportunidades de negociação e, se não estiver configurado, pode perder melhores oportunidades de negociação

Para controlar esses riscos, podemos tomar as seguintes medidas:

  1. Combinado com outros indicadores para avaliar o estado do mercado, evitando a dependência do ATR
  2. Aumentar as condições de filtragem para evitar o risco de introdução de brechas ineficazes em transações
  3. Seleção de múltiplos apropriados de acordo com as características históricas de diferentes variedades
  4. Otimizar e testar os parâmetros do setWindow para garantir que ele seja configurado corretamente

Direção de otimização

A estratégia ainda tem espaço para ser melhorada:

  1. Algoritmos de aprendizagem de máquina podem ser introduzidos para a otimização dinâmica do múltiplo
  2. Leva mais espaço para otimizar o alcance dos canais, combinando com indicadores de emoção
  3. Aumentar o volume de transações ou confirmações de volatilidade para evitar brechas de invalidez
  4. Backtest usando uma estrutura de estratégia baseada em tempo avançada

Com essas otimizações, é possível aumentar ainda mais a estabilidade e a rentabilidade da estratégia.

Resumir

Esta estratégia é uma estratégia de acompanhamento de tendências muito prática. Utiliza o indicador ATR para construir um canal de adaptação e determinar o momento de compra e venda com um rompimento de canal. A estratégia é simples e prática, pode controlar o risco de forma eficaz e é adequada para acompanhar a tendência de linha média.

Código-fonte da estratégia
/*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