Estratégia de negociação quantitativa baseada na média móvel de Hull modificada e Ichimoku Kinko Hyo

HMA IKHS WMA
Data de criação: 2024-04-28 13:39:00 última modificação: 2024-04-28 13:39:00
cópia: 11 Cliques: 564
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa baseada na média móvel de Hull modificada e Ichimoku Kinko Hyo

Visão geral

A estratégia combina dois indicadores técnicos, o Hull Moving Average (HMA) modificado e o Equilibrio Primário (Ichimoku Kinko Hyo), com o objetivo de capturar tendências de médio e longo prazo no mercado. A principal idéia da estratégia é usar o sinal de cruzamento do HMA com a linha de referência no equilíbrio primário (Kijun Sen), enquanto combina a nuvem de equilíbrio primário (Kumo) como condição de filtragem para determinar a direção da tendência do mercado e negociar.

Princípio da estratégia

  1. Calculando a média móvel de casco modificada (HMA)
    • Calcule a WMA (média móvel ponderada) e faça um duplo alisamento, obtendo uma HMA corrigida
  2. Calcular indicadores de equilíbrio à primeira vista
    • Calcule a linha de rotação ((Tenkan Sen), a linha de referência ((Kijun Sen), a linha de ascensão ((Senkou Span A) e a linha de descensão ((Senkou Span B)
  3. Geração de sinais de negociação
    • Quando a HMA atravessa a linha de referência e o preço de fechamento está acima da nuvem, gera um sinal de multiplicação
    • Quando o HMA atravessa a linha de referência abaixo e o preço de fechamento está abaixo da nuvem, um sinal de curto-circuito é gerado
  4. Execução de transações
    • Operações de negociação correspondentes com base em sinais de fazer mais ou fazer menos
  5. Sair do negócio
    • Quando o HMA atravessa a linha de referência na direção oposta, saia da posição atual

Vantagens estratégicas

  1. A combinação de HMA e equilíbrio de visão, dois indicadores eficazes de rastreamento de tendências, permite capturar melhor as tendências do mercado
  2. O uso da nuvem de equilíbrio à primeira vista como condição de filtragem pode efetivamente reduzir os sinais falsos e aumentar a probabilidade de sucesso das transações.
  3. O HMA corrigido tem uma velocidade de resposta mais rápida e menor latência em comparação com a média móvel tradicional, permitindo uma reflexão em tempo real das mudanças no mercado.
  4. A lógica da estratégia é clara, fácil de entender e de implementar, para vários mercados e períodos de tempo

Risco estratégico

  1. A estratégia pode gerar mais falsos sinais em momentos de turbulência ou incerteza de tendências no mercado, resultando em transações frequentes e perda de fundos.
  2. A configuração dos parâmetros da estratégia tem uma grande influência sobre os resultados das transações, e diferentes combinações de parâmetros podem levar a diferentes resultados
  3. A estratégia não leva em consideração eventos inesperados e comportamentos irracionais no mercado, que podem representar um risco maior em condições de mercado extremas

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

  1. Introdução de outros indicadores técnicos ou de sentimento de mercado para aumentar a confiabilidade e a estabilidade do sinal
  2. Parâmetros de estratégia de otimização, como a busca de combinações ótimas de parâmetros por métodos como aprendizado de máquina ou algoritmos genéticos
  3. Considere a inclusão de módulos de gestão de risco, como o estabelecimento de um stop loss, gestão de posições, etc., para controlar a abertura de risco da estratégia
  4. Adaptação e otimização de estratégias de acordo com as características de diferentes mercados e períodos de tempo

Resumir

A estratégia, combinando a média móvel de Hull com a correção e o equilíbrio de primeira vista, constrói um sistema de negociação de seguimento de tendências relativamente robusto. A lógica da estratégia é clara, fácil de implementar, mas também possui algumas vantagens. No entanto, o desempenho da estratégia ainda é afetado pelas condições de mercado e configuração de parâmetros, e precisa de mais otimização e melhorias.

Código-fonte da estratégia
/*backtest
start: 2024-04-20 00:00:00
end: 2024-04-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA_X + Ichimoku Kinko Hyo Strategy", shorttitle="HMX+IKHS", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, pyramiding=0)

// Hull Moving Average Parameters
keh = input(12, title="Double HullMA")
n2ma = 2 * wma(close, round(keh/2)) - wma(close, keh)
sqn = round(sqrt(keh))
hullMA = wma(n2ma, sqn)

// Ichimoku Kinko Hyo Parameters
tenkanSenPeriods = input(9, title="Tenkan Sen Periods")
kijunSenPeriods = input(26, title="Kijun Sen Periods")
senkouSpanBPeriods = input(52, title="Senkou Span B Periods")
displacement = input(26, title="Displacement")

// Ichimoku Calculations
highestHigh = highest(high, max(tenkanSenPeriods, kijunSenPeriods))
lowestLow = lowest(low, max(tenkanSenPeriods, kijunSenPeriods))
tenkanSen = (highest(high, tenkanSenPeriods) + lowest(low, tenkanSenPeriods)) / 2
kijunSen = (highestHigh + lowestLow) / 2
senkouSpanA = ((tenkanSen + kijunSen) / 2)
senkouSpanB = (highest(high, senkouSpanBPeriods) + lowest(low, senkouSpanBPeriods)) / 2

// Plot Ichimoku
p1 = plot(tenkanSen, color=color.blue, title="Tenkan Sen")
p2 = plot(kijunSen, color=color.red, title="Kijun Sen")
p3 = plot(senkouSpanA, color=color.green, title="Senkou Span A", offset=displacement)
p4 = plot(senkouSpanB, color=color.orange, title="Senkou Span B", offset=displacement)
fill(p3, p4, color=color.gray, title="Kumo Shadow")

// Trading Logic
longCondition = crossover(hullMA, kijunSen) and close > senkouSpanA[displacement] and close > senkouSpanB[displacement]
shortCondition = crossunder(hullMA, kijunSen) and close < senkouSpanA[displacement] and close < senkouSpanB[displacement]

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long)
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Exit Logic - Exit if HullMA crosses KijunSen in the opposite direction
exitLongCondition = crossunder(hullMA, kijunSen)
exitShortCondition = crossover(hullMA, kijunSen)

if (exitLongCondition)
    strategy.close("Long")
if (exitShortCondition)
    strategy.close("Short")