O recurso está a ser carregado... Carregamento...

HMA optimiza estratégias de negociação quantitativas multicíclicas com combinação de stop loss dinâmicos

Autora:ChaoZhang, Data: 2024-07-31 11:28:09
Tags:HMAEHMATHMAWMAEMASMA

HMA优化多周期量化交易策略与动态止损结合

Resumo

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.

Princípios estratégicos

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Vantagens estratégicas

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Risco estratégico

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Estratégias de otimização

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Resumo

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")


Relacionado

Mais informações