- Quadrado
- Estratégia quantitativa de cruzamento de média móvel de casco duplo
Estratégia quantitativa de cruzamento de média móvel de casco duplo
Autora:
ChaoZhang, Data: 2024-11-29 16:53:05
Tags:
HMAMAWMA
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
- 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.
- 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.
- 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.
- 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
- Risco de mercado perturbado: os crossovers frequentes nos mercados laterais podem conduzir a excesso de negociação e perdas consecutivas.
- 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.
- Sensibilidade dos parâmetros: diferentes combinações de parâmetros podem conduzir a resultados significativamente diferentes das negociações, exigindo uma otimização cuidadosa.
- 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
- Introduzir filtros de tendência: adicionar indicadores ADX ou de força de tendência para negociar apenas tendências claras.
- Otimizar o mecanismo de stop loss: conceber stop loss dinâmicos com base no ATR ou na volatilidade.
- Adicionar condições de confirmação do comércio: Incorporar indicadores de volume e momento como sinais de confirmação auxiliares.
- Adaptação dos parâmetros: Desenvolver mecanismos dinâmicos de ajustamento dos parâmetros com base na volatilidade do mercado.
- 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.