Estratégia de Crossover de Média Móvel de Hull


Data de criação: 2024-03-22 14:57:10 última modificação: 2024-03-22 14:57:10
cópia: 2 Cliques: 1150
1
focar em
1617
Seguidores

Estratégia de Crossover de Média Móvel de Hull

Visão geral da estratégia

A estratégia baseia-se no sinal de cruzamento da média móvel de Hull (Hull Moving Average, HMA). A média móvel de Hull é um indicador técnico desenvolvido por Alan Hull para reduzir o atraso da média móvel. A estratégia usa duas linhas de HMA de diferentes períodos, gerando um sinal de compra quando o HMA de menor período atravessa o HMA de maior período de baixo para cima e, ao contrário, gerando um sinal de venda.

Princípio da estratégia

  1. Calcular a média móvel de Hull (HMA)

O processo de cálculo do HMA é o seguinte:

  • A média móvel ponderada (WMA) previamente calculada para o preço (WMA) com um período de metade do comprimento do parâmetro de entrada
  • Calcule o WMA do WMA com um período de length
  • Utilize a fórmula: HMA = 2 * WMA (length) / 2 - WMA (length)
  • Para o resultado acima, calcula-se novamente o WMA, a raiz quadrada do período é o comprimento, obtendo-se o HMA final
  1. Geração de sinais de transação
  • Quando o preço de fechamento passa pela HMA, gera um sinal de compra
  • Quando o preço de fechamento atravessa o HMA, gera um sinal de venda
  1. Execução de transações de acordo com os sinais de transação
  • Sinais de compra: abrir uma posição de capital
  • Sinais de venda: posições em aberto

Vantagens estratégicas

  1. A média móvel de Hull tem menor atraso em comparação com a média móvel simples e a média móvel ponderada, portanto, pode reagir mais rapidamente às mudanças de preço, aumentando a sensibilidade da estratégia.

  2. O sinal é produzido através da interseção de duas linhas HMA de diferentes períodos, o que pode filtrar efetivamente alguns ruídos e falsos sinais, aumentando a confiabilidade do sinal.

  3. Os parâmetros são ajustáveis, e podem ser adaptados a diferentes mercados e variedades de negociação, ajustando os parâmetros de ciclo do HMA.

Risco estratégico

  1. A média móvel de Hull é um indicador atrasado que pode emitir sinais errados nos estágios iniciais de uma reversão de tendência.

  2. A escolha inadequada dos parâmetros pode causar um mau desempenho da estratégia. O ciclo muito longo pode atrasar a resposta da estratégia, e o ciclo muito curto pode causar muitos sinais falsos.

  3. Como todas as estratégias baseadas em um único indicador, esta estratégia pode não funcionar bem em mercados de turbulência, gerando mais falsos sinais e negociações perdedoras.

Direção de otimização

  1. Pode-se considerar a introdução de outros indicadores técnicos ou fatores fundamentais como condições de filtragem, como volume de negociação, indicadores de tendência, etc., para confirmar ainda mais a eficácia do sinal de cruzamento HMA.

  2. Para a otimização de parâmetros, métodos como algoritmos genéticos, pesquisa de grelha e outros podem ser usados para otimizar parâmetros em dados históricos e encontrar o conjunto de parâmetros mais adequado para o mercado atual.

  3. Incorporar mecanismos de stop loss e stop-loss na estratégia para controlar o risco e o lucro de uma única transação.

  4. Considerando a tendência do mercado, pode-se julgar o indicador através da introdução da tendência do mercado, negociar em mercados de tendência e evitar mercados de turbulência.

Resumir

A estratégia de cruzamento de média móvel de Hull é uma estratégia de negociação simples e fácil de usar, que capta as mudanças de preço em tempo útil por meio da capacidade de resposta rápida da HMA. Mas, como todas as estratégias, ela também tem suas limitações, e seu desempenho é afetado pelo tipo de mercado e pela escolha de parâmetros. Na aplicação prática, ela pode ser combinada com outros métodos de análise para confirmar ainda mais os sinais.

Código-fonte da estratégia
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Basic Hull Ma Pack tinkered by InSilico 
strategy("RKTD BETA - Hull Suite by InSilico", overlay=true)

//INPUT
src = input(close, title="Source")
modeSwitch = input("Ehma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(200, title="Length(180-200 for floating S/R , 55 for swing entry)")
lengthMult = input(1.0, title="Length multiplier (Used to view higher timeframes with straight band)")

useHtf = input(false, title="Show Hull MA from X timeframe? (good for scalping)")
htf = input("240", title="Higher timeframe", type=input.resolution)

switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch  = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)

// Alert Messages
longAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "long", "orderType": "market", "close":true}'
shortAlertMessage = '{"base": "BTC", "quote": "USDT", "price": ' + tostring(close) + ', "action": "short", "orderType": "market", "close":true}'

//FUNCTIONS
//HMA
HMA(_src, _length) =>  wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA    
EHMA(_src, _length) =>  ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA    
THMA(_src, _length) =>  wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
    
//SWITCH
Mode(modeSwitch, src, len) =>
      modeSwitch == "Hma"  ? HMA(src, len) :
      modeSwitch == "Ehma" ? EHMA(src, len) : 
      modeSwitch == "Thma" ? THMA(src, len/2) : na

//OUT
_hull = Mode(modeSwitch, src, int(length * lengthMult))
HULL = useHtf ? security(syminfo.ticker, htf, _hull) : _hull
MHULL = HULL[0]
SHULL = HULL[2]

//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800

//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
alertcondition(crossover(MHULL, SHULL), title="Hull trending up.", message="Hull trending up.")
alertcondition(crossover(SHULL, MHULL), title="Hull trending down.", message="Hull trending down.")
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)

// Define Buy and Sell Conditions based on crossovers
buyCondition = crossover(MHULL, SHULL)
sellCondition = crossunder(MHULL, SHULL)

// Plotting the Hull Moving Average (HMA)
plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch)
plot(SHULL, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=transpSwitch)
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)

// Execute Strategy based on Buy and Sell Conditions
strategy.entry("Buy", strategy.long, when=buyCondition, alert_message=longAlertMessage)
strategy.entry("Sell", strategy.short, when=sellCondition, alert_message=shortAlertMessage)

// Additional elements like bar coloring remain unchanged
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)