Estratégia de negociação quantitativa multinível baseada na divergência de tendência da Banda de Bollinger

BB EMA SMA stdev BBDIV Trend
Data de criação: 2024-12-27 15:52:41 última modificação: 2024-12-27 15:52:41
cópia: 4 Cliques: 457
1
focar em
1617
Seguidores

Estratégia de negociação quantitativa multinível baseada na divergência de tendência da Banda de Bollinger

Visão geral

Esta estratégia é um sistema de negociação quantitativa multinível baseado na divergência de tendências das Bandas de Bollinger e em mudanças dinâmicas de largura de banda. Esta estratégia cria uma estrutura completa de tomada de decisões de negociação monitorando as mudanças dinâmicas na largura da Banda de Bollinger, os rompimentos de preços e a coordenação da média móvel EMA200. A estratégia adota um mecanismo de rastreamento de volatilidade adaptável, que pode capturar efetivamente pontos de inflexão nas tendências de mercado.

Princípio da estratégia

O núcleo da estratégia é baseado nos seguintes elementos-chave:

  1. As Bandas de Bollinger são calculadas usando uma média móvel de 20 períodos e 2 vezes o desvio padrão
  2. Determine a intensidade da tendência alterando a largura de banda em três pontos de tempo consecutivos
  3. Combinando a relação entre a entidade da linha K e a taxa de largura de banda para determinar a eficácia do avanço
  4. Usando EMA200 como um filtro de tendência de médio a longo prazo
  5. Entre no mercado e opere longo quando o preço ultrapassar a faixa superior e atender às condições de expansão da largura de banda
  6. Quando o preço cair abaixo da banda inferior e atender às condições de contração da largura de banda, feche a posição

Vantagens estratégicas

  1. O sistema de sinalização é prospectivo e pode detectar potenciais pontos de inflexão de tendência com antecedência
  2. Validação cruzada de vários indicadores técnicos, reduzindo significativamente os sinais falsos
  3. O indicador de taxa de mudança de largura de banda tem boa adaptabilidade às flutuações do mercado
  4. A lógica de entrada e saída é clara e fácil de implementar programaticamente
  5. O mecanismo de controle de risco é perfeito e pode controlar efetivamente o rebaixamento

Risco estratégico

  1. Negociações frequentes podem ocorrer em mercados voláteis
  2. Pode ocorrer atraso quando as tendências mudam repentinamente
  3. A otimização de parâmetros tem o risco de overfitting
  4. Pode haver risco de deslizamento durante períodos de alta volatilidade do mercado
  5. A eficácia dos indicadores de largura de banda precisa ser monitorada em tempo hábil

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

  1. Introdução de um mecanismo de otimização de parâmetros adaptativos
  2. Adicione indicadores auxiliares, como volume de negociação, para verificar
  3. Otimizar as configurações de stop loss e take profit
  4. Melhorar os critérios de julgamento quantitativo da força da tendência
  5. Adicionar mais filtros de ambiente de mercado

Resumir

A estratégia constrói um sistema de negociação robusto por meio da divergência de tendência das Bandas de Bollinger e mudanças dinâmicas de largura de banda. A estratégia tem bom desempenho em mercados de tendência, mas ainda precisa ser melhorada em mercados voláteis e otimização de parâmetros. No geral, essa estratégia tem bom valor prático e espaço para expansão.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BBDIV_Strategy", overlay=true)

// Inputs for Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Multiplier")

// Calculate Bollinger Bands
basis = ta.sma(close, length)
deviation = mult * ta.stdev(close, length)
upperBB = basis + deviation
lowerBB = basis - deviation

// Calculate Bollinger Band width
bb_width = upperBB - lowerBB
prev_width = ta.valuewhen(not na(bb_width[1]), bb_width[1], 0)
prev_prev_width = ta.valuewhen(not na(bb_width[2]), bb_width[2], 0)

// Determine BB state
bb_state = bb_width > prev_width and prev_width > prev_prev_width ? 1 : bb_width < prev_width and prev_width < prev_prev_width ? -1 : 0

// Assign colors based on BB state
bb_color = bb_state == 1 ? color.green : bb_state == -1 ? color.red : color.gray

// Highlight candles closed outside BB
candle_size = high - low
highlight_color = (candle_size > bb_width / 2 and close > upperBB) ? color.new(color.green, 50) : (candle_size > bb_width / 2 and close < lowerBB) ? color.new(color.red, 50) : na

bgcolor(highlight_color, title="Highlight Candles")

// Plot Bollinger Bands
plot(upperBB, title="Upper BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(lowerBB, title="Lower BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(basis, title="Middle BB", color=color.blue, linewidth=1, style=plot.style_line)

// Calculate EMA 200
ema200 = ta.ema(close, 200)

// Plot EMA 200
plot(ema200, title="EMA 200", color=color.orange, linewidth=2, style=plot.style_line)

// Strategy logic
enter_long = highlight_color == color.new(color.green, 50)
exit_long = highlight_color == color.new(color.red, 50)

if (enter_long)
    strategy.entry("Buy", strategy.long)

if (exit_long)
    strategy.close("Buy")

// Display profit at close
if (exit_long)
    var float entry_price = na
    var float close_price = na
    var float profit = na

    if (strategy.opentrades > 0)
        entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
        close_price := close
        profit := (close_price - entry_price) * 100 / entry_price * 2 * 10 // Assuming 1 pip = 0.01 for XAUUSD
        label.new(bar_index, high + (candle_size * 2), str.tostring(profit, format.mintick) + " USD", style=label.style_label_up, color=color.green)