Esta estratégia é baseada nos sinais de cruzamento da média móvel de Hull (HMA). A média móvel de Hull é um indicador técnico desenvolvido por Alan Hull, que visa reduzir o atraso das médias móveis tradicionais. A estratégia usa dois HMAs com períodos diferentes. Um sinal de compra é gerado quando o HMA de período mais curto cruza acima do HMA de período mais longo, e um sinal de venda é gerado quando ocorre o oposto.
A HMA é calculada do seguinte modo:
Em comparação com a média móvel simples e a média móvel ponderada, a média móvel Hull tem menos atraso, podendo assim reagir mais rapidamente às alterações de preços, melhorando a capacidade de resposta da estratégia.
Ao utilizar o cruzamento de dois HMA com períodos diferentes para gerar sinais, um grande número de ruídos e falsos sinais pode ser efetivamente filtrado, aumentando a confiabilidade dos sinais.
Os parâmetros são ajustáveis e, ao ajustar os parâmetros de período dos HMA, a estratégia pode ser adaptada a diferentes mercados e instrumentos de negociação.
O Hull Moving Average é um indicador de atraso, que pode gerar falsos sinais nos primeiros estágios de uma inversão de tendência.
A selecção inadequada dos parâmetros pode conduzir a um mau desempenho da estratégia.
Como todas as estratégias baseadas num único indicador, esta estratégia pode não funcionar bem em mercados laterais, gerando mais sinais falsos e perdendo negócios.
Considerar a introdução de outros indicadores técnicos ou fatores fundamentais como filtros, tais como volume de negociação, indicadores de tendência, etc., para confirmar ainda mais a validade dos sinais cruzados da HMA.
Para a otimização de parâmetros, métodos como algoritmos genéticos e pesquisa de grade podem ser usados para encontrar a combinação de parâmetros ideal em dados históricos que melhor se adapte ao mercado atual.
Incorporar mecanismos de stop-loss e take-profit na estratégia para controlar o risco e o retorno de cada negociação.
Considere a tendência do mercado. Introduzindo indicadores para julgar as tendências do mercado, pode-se negociar em mercados de tendência e evitar mercados laterais.
A estratégia Hull Moving Average Crossover é uma estratégia de negociação simples e fácil de usar. Com a característica de resposta rápida do HMA, ele pode capturar mudanças de preço em tempo hábil. No entanto, como todas as estratégias, ele também tem suas limitações e seu desempenho será afetado pelos tipos de mercado e seleção de parâmetros. Na aplicação prática, ele pode ser combinado com outros métodos de análise para confirmar ainda mais os sinais. Ao mesmo tempo, medidas razoáveis de controle de risco, como stop-loss e take-profit, gerenciamento de posição, etc., também são partes indispensáveis para a operação estável 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)