HMA otimiza estratégia de negociação quantitativa multiperíodo e a combina com stop loss dinâmico

HMA EHMA THMA WMA EMA SMA
Data de criação: 2024-07-31 11:28:09 última modificação: 2024-07-31 11:28:09
cópia: 1 Cliques: 797
1
focar em
1617
Seguidores

HMA otimiza estratégia de negociação quantitativa multiperíodo e a combina com stop loss dinâmico

Visão geral

Este artigo apresenta uma estratégia de negociação quantitativa optimizada baseada na Hull Moving Average (HMA), que combina análise de múltiplos períodos e um mecanismo de stop loss dinâmico. Esta estratégia é baseada no famoso Hull Suite.

Princípio da estratégia

  1. Hull Moving Average (HMA): O núcleo da estratégia é o uso da HMA e suas variantes (EHMA e THMA) para identificar tendências de mercado. A HMA tem uma velocidade de reação mais rápida e menos atraso em comparação com a média móvel tradicional.

  2. Análise de múltiplos períodos: estratégia para gerar sinais de negociação através da comparação de HMA de diferentes períodos de tempo. Esta abordagem pode reduzir os falsos sinais e melhorar a precisão da negociação.

  3. Stop loss dinâmico: uma estratégia que utiliza um mecanismo de trailing stop, ativado quando o lucro atinge um determinado número de pontos, para bloquear efetivamente os lucros e controlar o risco.

  4. Controle de período de negociação: a estratégia permite que o usuário defina um período de negociação específico, o que ajuda a evitar negociações em períodos de baixa volatilidade ou falta de liquidez.

  5. Controle de direção: A estratégia oferece a opção de escolher a direção de negociação (dois-direção, longo-direção ou longo-direção), permitindo-lhe adaptar-se a diferentes ambientes de mercado e estilos de negociação.

Vantagens estratégicas

  1. Flexível: a estratégia permite que os usuários escolham diferentes variantes de Hull Moving Average (HMA, EHMA, THMA) para se adaptar a diferentes condições de mercado.

  2. Excelente gestão de risco: a estratégia permite limitar as perdas potenciais, protegendo os lucros, através da utilização de mecanismos de parada dinâmica.

  3. Adaptabilidade: A análise de múltiplos ciclos permite 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 o gráfico de faixas HMA codificado por cores, para ajudar os comerciantes a entender melhor as tendências do mercado.

  5. Alto grau de automação: a estratégia pode ser executada de forma totalmente automatizada, reduzindo a possibilidade de influência emocional humana e erros operacionais.

Risco estratégico

  1. Excesso de negociação: devido à estratégia baseada em HMA de reação rápida, pode haver excesso de falsos sinais no mercado horizontal, resultando em excesso de negociação.

  2. Risco de derrapagem: uma estratégia que utiliza a técnica de scalping e pode ter um risco de derrapagem mais elevado, especialmente em mercados com menos liquidez.

  3. Sensibilidade de parâmetros: o desempenho da estratégia é altamente dependente da configuração de parâmetros, e os parâmetros inadequados podem causar um mau desempenho da estratégia.

  4. Alterações nas condições de mercado: em situações de mudanças drásticas nas condições de mercado, a estratégia pode precisar de re-otimizar os parâmetros para se manter eficaz.

  5. Dependência de tecnologia: a execução da estratégia depende de uma conexão de rede e plataforma de negociação estáveis, e falhas técnicas podem causar grandes perdas.

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

  1. Aumentar os indicadores de sentimento de mercado: A combinação de indicadores de sentimento de mercado, como o VIX, a taxa de flutuação implícita de opções, pode ajudar a estratégia a se adaptar melhor a diferentes ambientes de mercado.

  2. Introdução de algoritmos de aprendizagem de máquina: uso de técnicas de aprendizagem de máquina para ajustar dinamicamente os parâmetros de HMA e os níveis de parada, o que pode melhorar a adaptabilidade da estratégia.

  3. Aumentar a análise de volume de transação: a combinação de dados de volume de transação pode aumentar a precisão do julgamento de tendências e reduzir os prejuízos causados por falsas rupturas.

  4. Optimizar a escolha do período de tempo: encontrar a melhor configuração de análise de múltiplos períodos, testando diferentes combinações de períodos de tempo.

  5. Introdução do método de nivelamento de risco: o uso de um método de nivelamento de risco para distribuir fundos em transações de várias variedades permite um melhor controle do risco da carteira de investimentos em geral.

Resumir

A estratégia de negociação de quantificação de múltiplos períodos da HMA, combinada com o stop loss dinâmico, é um sistema de negociação flexível e eficiente. Ela oferece aos comerciantes uma solução de negociação quantitativa abrangente, combinando as características de resposta rápida da média móvel Hull, a estabilidade da análise de múltiplos períodos e o controle de risco do stop loss dinâmico.

Código-fonte da estratégia
/*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")