Crossover de média móvel dupla combinado com estratégia quantitativa de média móvel de Hull

HMA MA WMA
Data de criação: 2024-11-29 16:53:05 última modificação: 2024-11-29 16:53:05
cópia: 2 Cliques: 514
1
focar em
1617
Seguidores

Crossover de média móvel dupla combinado com estratégia quantitativa de média móvel de Hull

Visão geral

Esta estratégia baseia-se no sinal de cruzamento da Hull Moving Average (HMA). A HMA é um indicador de média móvel avançada que reduz a latência por meio de uma combinação especial de média móvel ponderada (WMA) para fornecer um sinal de tendência de mercado mais rápido e suave.

Princípio da estratégia

O núcleo da estratégia é o uso de cruzamentos de HMA de diferentes períodos para capturar o ponto de transição da tendência do mercado. O processo de cálculo do HMA inclui três etapas: primeiro, calcula-se o WMA de meio ciclo, depois o WMA de ciclo completo, e finalmente, através de uma combinação especial desses dois WMAs, calcula-se novamente o WMA de um ciclo como a raiz quadrada do ciclo original. Quando o HMA rápido (default 9 cycles) atravessa o HMA lento (default 16 cycles) para cima, gera-se um sinal de multiplicação; quando o HMA rápido atravessa o HMA lento para baixo, gera-se um sinal de vazio.

Vantagens estratégicas

  1. A resposta do sinal é rápida: a HMA reduz significativamente a latência das médias móveis tradicionais por meio de um método de cálculo especial, que permite capturar as mudanças de tendências do mercado mais rapidamente.
  2. Filtragem de ruído: através da confirmação cruzada de duas linhas uniformes, pode-se filtrar eficazmente o ruído do mercado, reduzindo os falsos sinais.
  3. Flexibilidade de parâmetros: a estratégia permite ajustar os parâmetros de ciclo das linhas rápidas e lentas para se adaptar a diferentes condições de mercado.
  4. Claridade de visualização: A estratégia mostra claramente as duas linhas médias e os sinais de negociação no gráfico, facilitando a análise e otimização.

Risco estratégico

  1. Risco de choque de mercado: em um cenário de choque horizontal, o cruzamento frequente pode levar a overtrading e a perdas contínuas.
  2. Risco de atraso: Apesar de o HMA ter um atraso menor em relação à linha média tradicional, existe um certo atraso e pode perder o melhor ponto de entrada.
  3. Sensibilidade de parâmetros: diferentes combinações de parâmetros podem levar a resultados de transações muito diferentes, o que requer uma otimização de parâmetros cuidadosa.
  4. Risco de Falso Breakout: O mercado pode ter um falso breakout, que pode levar a um sinal de negociação errado.

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

  1. Introdução de filtros de tendência: ADX ou indicadores de força de tendência podem ser adicionados e só são negociados quando há uma tendência clara.
  2. Otimização de mecanismos de parada: desenhe uma parada dinâmica, como uma estratégia de parada baseada no ATR ou na taxa de flutuação
  3. Adição de condições de confirmação de transações: combinação de indicadores de volume de transação, de movimento, etc. como sinais auxiliares de confirmação.
  4. Adaptação de parâmetros: Desenvolvimento de mecanismos de ajuste de parâmetros dinâmicos com base na volatilidade do mercado.
  5. Optimização de gestão de risco: adição de módulos de gestão de posições e gestão de fundos.

Resumir

Trata-se de uma estratégia de negociação quantitativa baseada em cruzamentos de HMA, que fornece sinais de negociação mais oportunos, reduzindo o atraso das médias móveis tradicionais. A estratégia é concebida de forma simples, fácil de entender e implementar, mas na aplicação real requer atenção à adaptabilidade e gestão de risco ao ambiente de mercado.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-28 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Hull Moving Average Crossover", overlay=true)


fastLength = input.int(9, "Fast HMA Length", minval=1)
slowLength = input.int(16, "Slow HMA Length", minval=1)


hma(src, length) =>
    wma1 = ta.wma(src, length / 2)
    wma2 = ta.wma(src, length)
    ta.wma(2 * wma1 - wma2, math.floor(math.sqrt(length)))


fastHMA = hma(close, fastLength)
slowHMA = hma(close, slowLength)


plot(fastHMA, color=color.blue, title="Fast HMA")
plot(slowHMA, color=color.red, title="Slow HMA")


longCondition = ta.crossover(fastHMA, slowHMA)
shortCondition = ta.crossunder(fastHMA, slowHMA)


if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)


plotshape(longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)
plotshape(shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small)