Estratégia de acompanhamento da tendência baseada na média móvel do casco e no filtro de Kalman

Autora:ChaoZhang, Data: 2023-11-01 17:10:49
Tags:

img

Resumo

Esta estratégia combina a média móvel de Hull e o filtro de Kalman para identificar e rastrear tendências de preços, pertencentes a estratégias de rastreamento de tendências.

Estratégia lógica

  • A estratégia utiliza a média móvel Hull (hma) de 24 períodos e a média móvel Triple Hull (hma3) de 24 períodos para construir sinais de negociação.

  • Quando a HMA ultrapassa a HMA3, é gerado um sinal de compra.

  • O filtro Kalman está desativado por padrão. Quando ativado, suaviza o hma e o hma3 para filtrar ruído excessivo e melhorar a qualidade do sinal.

  • O filtro Kalman elimina o ruído aleatório dos sinais através de etapas de previsão e correção. A diferença entre cada medição e a última previsão é tratada como o item de correção para prever a próxima medição com mais precisão. Ao repetir a previsão e correção, o impacto do ruído pode ser reduzido gradualmente para suavizar o sinal.

  • Esta estratégia utiliza o filtro Kalman para melhorar a estabilidade das estratégias de média móvel filtrando flutuações aleatórias e rastreando tendências persistentes.

Vantagens

  • O sistema de médias móveis duplas pode identificar melhor as tendências duradouras em comparação com a média móvel única.

  • A média móvel de Hull atribui mais peso aos preços recentes através de cálculos ponderados, tornando-a mais sensível na captura das alterações de preços.

  • O filtro Kalman pode efetivamente filtrar o ruído aleatório dos sinais, reduzindo os falsos sinais e melhorando a qualidade do sinal.

  • Os parâmetros ajustáveis como o período e o ganho do filtro Kalman permitem que a estratégia se adapte às diferentes condições de mercado.

  • A adoção de técnicas de períodos cruzados gera sinais mais persistentes, evitando ser enganado por flutuações aleatórias excessivas.

  • A interface visual exibe de forma intuitiva os sinais e o estado da tendência para facilitar a operação.

Riscos

  • As médias móveis duplas são propensas a gerar sinais errados em torno dos pontos de virada da tendência, incapazes de capturar reversões em tempo hábil.

  • O atraso das médias móveis pode fazer perder oportunidades de reversões rápidas dos preços.

  • Não é adequado para mercados com fortes flutuações, devendo ser evitado durante fases turbulentas.

  • Os parâmetros do filtro Kalman podem afetar o desempenho da estratégia.

  • Os períodos mais longos têm uma resposta lenta, enquanto os períodos mais curtos são vulneráveis ao ruído.

  • Os períodos de detenção longos/cortos não fixos conduzem a um tempo de inatividade sem posições, reduzindo a eficiência da utilização do capital.

Reforço

  • Tente médias móveis adaptativas que otimizam dinamicamente os parâmetros com base na volatilidade.

  • Incorporar métricas de volatilidade para evitar a negociação durante os mercados agitados e negociar apenas com tendências óbvias.

  • Configurar stop loss para limitar perdas e melhorar o controlo de riscos.

  • Otimizar os parâmetros do filtro Kalman para equilibrar a sensibilidade de rastreamento e o nível de filtragem de ruído.

  • Confirme a validade do sinal com outros indicadores como volume, Bandas de Bollinger para a persistência da tendência.

  • Utilize o aprendizado de máquina para treinar parâmetros e melhorar a robustez e a adaptabilidade da estratégia.

Conclusão

Esta estratégia identifica efetivamente tendências duradouras e melhora a qualidade do sinal por meio de MAs duplos de casco e filtro Kalman. Observe a otimização de parâmetros, a adaptabilidade do mercado e o controle de riscos para lucros constantes. Outras melhorias podem ser alcançadas por meio de aprendizado de máquina e análise quantitativa. Melhorias contínuas formarão um sistema robusto e eficiente de rastreamento de tendências.


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

//@version=4
strategy("Hull Trend with Kahlman Strategy Backtest", shorttitle="HMA-Kahlman Trend Strat", overlay=true)

src       = input(hl2,   "Price Data")
length    = input(24,    "Lookback")
showcross = input(true,  "Show cross over/under")
gain      = input(10000, "Gain")
k         = input(true,  "Use Kahlman")

hma(_src, _length) =>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length) =>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)

kahlman(x, g) =>
    kf = 0.0
    dk = x - nz(kf[1], x)
    smooth = nz(kf[1],x)+dk*sqrt((g/10000)*2)
    velo = 0.0
    velo := nz(velo[1],0) + ((g/10000)*dk)
    kf := smooth+velo
  
a = k ? kahlman(hma(src, length), gain) : hma(src, length)
b = k ? kahlman(hma3(src, length), gain) : hma3(src, length)
c = b > a ? color.lime : color.red
crossdn = a > b and a[1] < b[1]
crossup = b > a and b[1] < a[1]

p1 = plot(a,color=c,linewidth=1,transp=75)
p2 = plot(b,color=c,linewidth=1,transp=75)
fill(p1,p2,color=c,transp=55)
plotshape(showcross and crossdn ? a : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="S", textcolor=color.white, transp=0, offset=-1)
plotshape(showcross and crossup ? a : na, location=location.absolute, style=shape.labelup, color=color.green, size=size.tiny, text="B", textcolor=color.white, transp=0, offset=-1)

longCondition = crossup
if (longCondition)
    strategy.entry("LE", strategy.long)

shortCondition = crossdn
if (shortCondition)
    strategy.entry("SE", strategy.short)
    


Mais.