O recurso está a ser carregado... Carregamento...

Estratégia quantitativa de cruzamento de média móvel de casco duplo

Autora:ChaoZhang, Data: 2024-11-29 16:53:05
Tags:HMAMAWMA

img

Resumo

Esta estratégia é baseada nos sinais de cruzamento da Hull Moving Average (HMA). Gerar sinais de negociação quando duas linhas HMA com períodos diferentes cruzam uma a outra.

Princípio da estratégia

O núcleo da estratégia consiste em capturar pontos de reversão da tendência do mercado usando cruzamento de HMA de diferentes períodos. O cálculo da HMA envolve três etapas: primeiro calcular uma WMA de meio período, depois calcular uma WMA de período completo e, finalmente, calcular outra WMA com um período igual à raiz quadrada do período original usando uma combinação especial das duas primeiras WMA. Os sinais de compra são gerados quando a HMA rápida (períodos padrão 9) cruza acima da HMA lenta (períodos padrão 16) e os sinais de venda quando a HMA rápida cruza abaixo da HMA lenta.

Vantagens da estratégia

  1. Resposta rápida ao sinal: A HMA reduz significativamente o atraso das médias móveis tradicionais através do seu método especial de cálculo, capturando as alterações da tendência do mercado mais rapidamente.
  2. Filtragem do ruído: a confirmação do cruzamento entre duas médias móveis filtra efetivamente o ruído do mercado, reduzindo os falsos sinais.
  3. Parâmetros flexíveis: a estratégia permite ajustar os períodos de fila rápida e lenta para se adaptarem aos diferentes ambientes de mercado.
  4. Visualização clara: A estratégia exibe claramente as médias móveis e os sinais de negociação no gráfico para facilitar a análise e otimização.

Riscos estratégicos

  1. Risco de mercado perturbado: os crossovers frequentes nos mercados laterais podem conduzir a excesso de negociação e perdas consecutivas.
  2. Risco de atraso: Embora o HMA tenha menos atraso do que as médias móveis tradicionais, ainda existe algum atraso, potencialmente faltando pontos de entrada ideais.
  3. Sensibilidade dos parâmetros: diferentes combinações de parâmetros podem conduzir a resultados significativamente diferentes das negociações, exigindo uma otimização cuidadosa.
  4. Risco de Falsa Breakout: O mercado pode apresentar falsas breakouts, levando a sinais de negociação incorretos.

Orientações para a otimização da estratégia

  1. Introduzir filtros de tendência: adicionar indicadores ADX ou de força de tendência para negociar apenas tendências claras.
  2. Otimizar o mecanismo de stop loss: conceber stop loss dinâmicos com base no ATR ou na volatilidade.
  3. Adicionar condições de confirmação do comércio: Incorporar indicadores de volume e momento como sinais de confirmação auxiliares.
  4. Adaptação dos parâmetros: Desenvolver mecanismos dinâmicos de ajustamento dos parâmetros com base na volatilidade do mercado.
  5. Optimização da gestão de riscos: adicionar módulos de dimensionamento de posições e gestão de fundos.

Resumo

Esta é uma estratégia de negociação quantitativa baseada em crossovers HMA, fornecendo sinais de negociação mais oportunos, reduzindo o atraso das médias móveis tradicionais.


/*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)

Relacionados

Mais.