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

Estratégia de negociação quantitativa de vários níveis baseada na divergência de tendência das bandas de Bollinger

Autora:ChaoZhang, Data: 2024-12-27 15:52:41
Tags:BBEMASMA- Não.BBDIVTendência

img

Resumo

Esta estratégia é um sistema de negociação quantitativo de vários níveis baseado na divergência de tendência das Bandas de Bollinger e nas mudanças dinâmicas de largura de banda. A estratégia constrói uma estrutura de decisão de negociação completa monitorando a dinâmica de largura das Bandas de Bollinger, as quebras de preços e a coordenação da EMA200.

Princípios de estratégia

A estratégia baseia-se nos seguintes elementos essenciais:

  1. Cálculo das bandas de Bollinger utilizando média móvel de 20 períodos e 2 desvios-padrão
  2. Determinação da força da tendência através de alterações da largura de banda em três pontos temporais consecutivos
  3. Validação de ruptura utilizando a relação corpo de vela/largura de banda
  4. EMA200 como filtro de tendência a médio e longo prazo
  5. Entrada longa quando o preço ultrapassa a faixa superior com condições de largura de banda em expansão
  6. Sair quando o preço ultrapassar a faixa inferior com condições de contração da largura de banda

Vantagens da estratégia

  1. Sistema de sinalização prospectiva que identifica potenciais pontos de virada da tendência
  2. A validação cruzada de vários indicadores técnicos reduz os falsos sinais
  3. Indicador de taxa de variação da largura de banda adapta-se bem à volatilidade do mercado
  4. Lógica clara de entrada e saída, fácil de implementar programaticamente
  5. Mecanismos abrangentes de controlo dos riscos para controlar eficazmente os saques

Riscos estratégicos

  1. Pode gerar trocas frequentes em mercados variados
  2. Possível atraso durante mudanças bruscas de tendência
  3. A otimização de parâmetros enfrenta o risco de sobreajuste
  4. Risco de deslizamento durante períodos de alta volatilidade do mercado
  5. Requer monitorização constante da eficácia do indicador de largura de banda

Orientações para a otimização da estratégia

  1. Introdução de mecanismos de otimização de parâmetros adaptativos
  2. Adicionar volume e outros indicadores auxiliares para validação
  3. Otimizar as condições de stop loss e take profit
  4. Melhorar os padrões quantitativos para a avaliação da força da tendência
  5. Incorporar filtros adicionais do ambiente de mercado

Resumo

A estratégia constrói um sistema de negociação robusto através da divergência de tendência e mudanças dinâmicas de largura de banda.


/*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)


Relacionados

Mais.