Estratégia de acompanhamento de supertendências em vários períodos de tempo


Data de criação: 2024-01-15 11:35:47 última modificação: 2024-01-15 11:35:47
cópia: 0 Cliques: 556
1
focar em
1617
Seguidores

Estratégia de acompanhamento de supertendências em vários períodos de tempo

Visão geral

A estratégia é uma estratégia que utiliza o indicador ATR para construir um canal de tendência dinâmica de múltiplos períodos de tempo, permitindo o rastreamento de tendências. A estratégia gera um sinal quando o preço quebra o canal, capturando uma tendência maior através do ajuste constante do canal.

Princípio da estratégia

A estratégia usa o indicador ATR para construir um canal de tendência ascendente e um canal de tendência descendente. Concretamente, a linha de canal ascendente é o preço de fechamento menos N vezes o indicador ATR; a linha de canal descendente é o preço de fechamento mais N vezes o indicador ATR. O valor de N pode ser ajustado por meio de parâmetros.

Quando o preço quebra o canal de alta, gera um sinal de compra; quando o preço quebra o canal de baixa, gera um sinal de venda. O canal se ajusta de acordo com a última dinâmica de preços, permitindo o acompanhamento de tendências.

Além disso, a estratégia também define uma variável de tendência para determinar se a tendência atual é ascendente ou descendente. A variável de tendência é usada em conjunto com a linha de canal para evitar a geração de sinais errados.

Vantagens estratégicas

  • A utilização de canais dinâmicos para acompanhamento de tendências
  • Evitar a corrida de alta e baixa e reduzir o risco de reversão
  • Parâmetros de canal ajustáveis e adaptáveis
  • Configuração de quadros de tempo múltiplos mais flexível

Risco estratégico

  • A vigilância excessiva pode aumentar o risco de perdas
  • Parâmetros de canal mal definidos, menos ou mais sinais errados
  • Requer maior capacidade de programação para ajustar parâmetros

Métodos de otimização:

  • Reduzir adequadamente o número de ATRs para reduzir o rastreamento
  • Parâmetros de otimização para encontrar a melhor combinação de parâmetros
  • Aumentar as estratégias de suspensão de perdas e reduzir as perdas individuais

Direção de otimização da estratégia

  • Adição de filtros em outros indicadores para garantir a fiabilidade do sinal
  • Aumentar as estratégias de suspensão de prejuízos e reduzir os riscos
  • Optimizar os parâmetros para encontrar o melhor parâmetro
  • Otimizar o tempo de entrada e saída, aumentar a taxa de ganho

Resumir

Esta estratégia é, em geral, uma boa estratégia de acompanhamento de tendências. Ela é capaz de se ajustar dinamicamente e, consequentemente, evitar a perseguição de altos e baixos.

Código-fonte da estratégia
/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('超级趋势精简优化版', 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.close('BUY',comment = '卖出')
buy1 = ta.barssince(buySignal)
sell1 = ta.barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na