Estratégia de rastreamento de tendências com base na média móvel de velocidade de Hall e no filtro de Kalman


Data de criação: 2023-11-01 17:10:49 última modificação: 2023-11-01 17:10:49
cópia: 0 Cliques: 1160
1
focar em
1617
Seguidores

Estratégia de rastreamento de tendências com base na média móvel de velocidade de Hall e no filtro de Kalman

Visão geral

Esta estratégia combina as médias móveis de Hall e as ondas de Carman para identificar e acompanhar as tendências de preços, e é uma estratégia de acompanhamento de tendências. Ela usa as médias móveis de Hall de dois períodos diferentes para construir sinais de negociação e trabalha com as ondas de Carman para suavizar o processamento, com o objetivo de melhorar a qualidade do sinal e a estabilidade da estratégia.

Princípio da estratégia

  • A estratégia usa uma média móvel de Hall de 24 períodos, hm, e uma média móvel de Hall de três períodos, hm3, para construir um sinal de negociação.

  • Quando a hma é colocada acima da hma3, gera um sinal de compra; quando a hma é colocada abaixo da hma3, gera um sinal de venda.

  • A estratégia é desativar o filtro de Kalman por defeito e, depois de ativar o filtro de Kalman, fazer o tratamento de Kalman para hma e hma3 para filtrar o excesso de ruído e melhorar a qualidade do sinal.

  • As ondas de Kalman eliminam o ruído aleatório do sinal através de uma etapa de previsão e correção. A diferença entre cada medição e a previsão anterior é usada como um ponto de correção para prever com mais precisão o próximo valor de medição. A previsão e correção repetidas podem reduzir gradualmente o impacto do ruído, tornando o sinal mais suave.

  • A estratégia usa o filtro de Carman para aumentar a estabilidade da estratégia de média móvel, excluindo os efeitos de flutuações aleatórias e acompanhando tendências contínuas.

Vantagens estratégicas

  • Os sistemas de médias móveis duplas são mais capazes de identificar tendências contínuas do que as médias móveis simples.

  • A média móvel de Hall é calculada de forma ponderada, dando maior peso aos preços recentes e captando as mudanças de preços de forma mais sensível.

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

  • Os parâmetros da estratégia podem ser ajustados, e a duração do ciclo e os ganhos da onda de Kalman podem ser ajustados de acordo com o mercado e adaptados a diferentes situações.

  • A estratégia usa a técnica de construção de sinais de ciclo intermédio para identificar tendências mais duradouras e evitar ser enganado por demasiadas oscilações aleatórias.

  • A interface visual mostra o estado dos sinais e tendências de forma intuitiva, facilitando a operação.

Risco estratégico

  • As estratégias de média móvel dupla são fáceis de produzir sinais errados em pontos de mudança de tendência e não conseguem capturar a mudança em tempo hábil.

  • As médias móveis estão atrasadas e podem perder oportunidades de uma rápida reversão.

  • Não é indicado para situações de forte oscilação, deve ser evitado durante a fase de subida de vibração.

  • A configuração dos parâmetros do filtro de Kalman afeta o desempenho da estratégia, e um ganho excessivo pode filtrar um sinal eficaz.

  • A configuração de ciclo longo não responde com precisão, enquanto a configuração de ciclo curto é facilmente afetada pelo ruído e precisa de ajustes de parâmetros de acordo com o mercado.

  • O tempo de detenção de posições em aberto não é fixo, existem fases de ausência de posse, reduzindo a eficiência do uso de fundos.

Direção de otimização

  • Pode-se experimentar o uso de parâmetros de otimização dinâmica de média móvel adaptativa, ajustando a duração do ciclo de acordo com a taxa de flutuação.

  • Compartilhe os indicadores de volatilidade para avaliar a situação, evite a negociação em mercados de turbulência e negocie apenas quando a tendência for clara.

  • Pode-se definir uma estratégia de parada de perdas para evitar a expansão dos prejuízos e aumentar a capacidade de controle de risco.

  • Otimizar os parâmetros de filtragem de Kármán, equilibrando a sensibilidade de rastreamento e o grau de filtragem de ruído.

  • Em combinação com outros indicadores, a eficácia do sinal é confirmada, como o indicador de quantidade de energia, a persistência da tendência da faixa de Bryn.

  • Os parâmetros de treinamento podem ser usados por meios como a aprendizagem de máquina para tornar as estratégias mais robustas e adaptáveis.

Resumir

Esta estratégia pode ser eficaz para identificar tendências persistentes e melhorar a qualidade do sinal através de dupla média móvel de Hall e de ondas de Kalman. No entanto, é necessário prestar atenção à otimização de parâmetros, adaptação ao mercado e controle de risco para obter um rendimento estável.

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