Este artigo apresenta uma estratégia de negociação quantitativa optimizada baseada na Hull Moving Average (HMA), que combina análise multicircular e um mecanismo de stop loss dinâmico. Esta estratégia foi melhorada com base no famoso Hull Suite, acrescentando o comando de estratégia.exit do PineScript v5 para implementar o trailing stop ou o trailing stop de atraso. A estratégia utiliza principalmente as características de rápida reação do HMA para capturar tendências de mercado, enquanto melhora a confiabilidade do sinal através da análise de vários ciclos de tempo.
Hull Moving Average (HMA): o núcleo da estratégia é usar o HMA e suas variantes (EHMA e THMA) para identificar tendências no mercado. O HMA tem uma velocidade de reação mais rápida e menos atraso do que a média móvel tradicional.
Análise multi-ciclo: estratégia para gerar sinais de negociação por meio da comparação de HMAs de diferentes ciclos de tempo. Este método pode reduzir falsos sinais e melhorar a precisão da negociação.
Paragem dinâmica: a estratégia usa um mecanismo de parada de rastreamento, que é ativado após a ganância atingir um determinado ponto, para bloquear efetivamente os lucros e controlar o risco.
Controle de horário de negociação: a estratégia permite que os usuários definam horários específicos de negociação, o que ajuda a evitar a negociação em horários de baixa volatilidade ou falta de liquidez.
Controle de direção: a estratégia oferece opções para escolher a direção de negociação (muito, pouco ou bidirecional), permitindo que ela se adapte a diferentes ambientes de mercado e estilos de negociação.
A estratégia permite que os usuários escolham diferentes variantes da Hull Moving Average (HMA, EHMA, THMA) para se adaptarem a diferentes condições do mercado.
Excelente gestão de risco: através do uso de mecanismos de stop loss dinâmicos, a estratégia pode limitar os perdas potenciais enquanto protege os lucros.
Forte adaptabilidade: métodos de análise multicíclica permitem que a estratégia se adapte a diferentes ambientes de mercado, reduzindo o impacto de falsos sinais.
Boa visualização: a estratégia oferece várias opções de visualização, como gráficos de banda HMA codificados em cores, que ajudam os traders a entenderem as tendências do mercado de forma mais intuitiva.
Alto grau de automação: as estratégias podem ser executadas de forma totalmente automatizada, reduzindo a possibilidade de impactos emocionais humanos e erros operacionais.
Excesso de negociação: devido ao HMA baseado em uma estratégia de reação rápida, um excesso de sinais falsos pode ser gerado no mercado horizontal, levando a um excesso de negociação.
Risco de ponto de salto: estratégias que utilizam técnicas de scalping podem enfrentar riscos de ponto de salto mais elevados, especialmente em mercados com baixa liquidez.
Sensibilidade aos parâmetros: o desempenho da política depende muito da configuração dos parâmetros, e parâmetros inadequados podem causar um mau desempenho da política.
Mudanças nas condições do mercado: em condições de mercado que mudam drasticamente, a estratégia pode precisar de re-otimizar os parâmetros para manter a eficácia.
Dependência da tecnologia: a execução da estratégia depende de uma conexão de rede estável e de uma plataforma de negociação, e falhas tecnológicas podem causar perdas significativas.
Aumentar os indicadores de sentimento do mercado: a combinação de indicadores de sentimento do mercado, como o VIX, a taxa de volatilidade implícita das opções, pode ajudar a estratégia a se adaptar melhor aos diferentes ambientes do mercado.
Introdução de algoritmos de aprendizagem de máquina: o uso de técnicas de aprendizagem de máquina para ajustar dinamicamente os parâmetros de HMA e os níveis de stop loss pode melhorar a adaptabilidade da estratégia.
Aumentar a análise do volume de transações: a combinação de dados de volume de transações pode aumentar a precisão do julgamento de tendências e reduzir os prejuízos causados por falsos avanços.
Optimizar a seleção de um quadro de tempo: encontrar a melhor configuração de análise multicíclica através do re-teste de combinações de diferentes quadros de tempo.
Introdução de um método de partilha de risco: o uso de um método de partilha de risco para distribuir fundos em transações de várias variedades permite controlar melhor o risco do portfólio global.
A HMA Optimized Multi-Cycle Quantified Trading Strategy é um sistema de negociação flexível e eficiente combinado com um stop loss dinâmico. Ele oferece aos traders uma solução de negociação quantitativa completa, combinando as características de resposta rápida da média móvel de Hull, a estabilidade da análise multi-ciclica e o controle de riscos de stop loss dinâmicos. Embora a estratégia se destaque em mercados de mudanças rápidas, ainda é necessário que os traders observem de perto as mudanças nas condições do mercado e ajustem os parâmetros em tempo hábil para manter sua eficácia.
/*backtest start: 2023-07-25 00:00:00 end: 2024-07-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © anotherDAPTrader //Based upon Hull Suite by InSilico and others// //with SCALP exit// //@version=5 strategy('DAP Hull Sweet Scalp v1 Strategy', overlay=true) // Session // session = input(title='Session (Goes flat at end of session!)', defval='1800-1700') //Check if it's in session// is_session(session) => not na(time(timeframe.period, session)) //Call the function Session = is_session(session) //Start and end of the session start = Session and not Session[1] end = not Session and Session[1] //Plot the background color to see the session bgcolor(Session ? color.new(color.white, 0) : na) // trade directions // strat_dir_input = input.string(title='Strategy Direction', defval='long', options=['long', 'short', 'all']) strat_dir_value = strat_dir_input == 'long' ? strategy.direction.long : strat_dir_input == 'short' ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) src = close modeSwitch = input.string('Hma', title='Hull Variation', options=['Hma', 'Thma', 'Ehma']) length = input(55, title='Length(180-200 for floating S/R , 55 for swing entry)') 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.int(40, title='Band Transparency', step=5) //FUNCTIONS //HMA HMA(_src, _length) => ta.wma(2 * ta.wma(_src, _length / 2) - ta.wma(_src, _length), math.round(math.sqrt(_length))) //EHMA EHMA(_src, _length) => ta.ema(2 * ta.ema(_src, _length / 2) - ta.ema(_src, _length), math.round(math.sqrt(_length))) //THMA THMA(_src, _length) => ta.wma(ta.wma(_src, _length / 3) * 3 - ta.wma(_src, _length / 2) - ta.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, length) 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) ///< Ending Filler fill(Fi1, Fi2, title='Band Filler', color=hullColor, transp=transpSwitch) ///BARCOLOR barcolor(color=candleCol ? switchColor ? hullColor : na : na) // Scalp // slPoints = input.int(title='Profit Points Before Stop', minval=0, maxval=1000, step=1, defval=1, confirm=false) slOffset = input.int(title='Then Trailing Stop Loss of ', minval=1, maxval=1000, step=1, defval=1, confirm=false) //trades// // Long Entry Function// if Session and ta.crossover(HULL[0] , HULL[2]) strategy.entry('long', strategy.long) strategy.exit('trailing stop', from_entry='long', trail_points=slPoints, trail_offset=slOffset) // Short Entry Function// if Session and ta.crossunder(HULL[0] , HULL[2]) strategy.entry('short', strategy.short) strategy.exit('trailing stop', from_entry='short', trail_points=slPoints, trail_offset=slOffset) if end strategy.close_all("End of Session - Go FLat")