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.
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.
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.
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.
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.
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)