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

Breakout de Bollinger adaptativo com sistema de estratégia quantitativa de média móvel

Autora:ChaoZhang, Data: 2024-11-27 15:55:28
Tags:BBMASMA

img

Resumo

Esta estratégia é um sistema de negociação quantitativo que combina a ruptura das Bandas de Bollinger com tendências de média móvel. O sistema captura automaticamente oportunidades de mercado monitorando as relações de preços com as Bandas de Bollinger enquanto usa uma média móvel de 100 dias para confirmação de tendência. Implementa dimensionamento dinâmico de posições baseado no patrimônio da conta para gerenciamento automático de riscos.

Princípios de estratégia

A lógica central baseia-se nos seguintes elementos-chave:

  1. Utiliza bandas de Bollinger de 20 períodos como canais de volatilidade com 2 desvios-padrão
  2. Emprega a média móvel de 100 dias como confirmação da tendência a médio e longo prazo
  3. Gera sinais longos quando o preço ultrapassa a faixa superior e não estava acima no período anterior
  4. Gera sinais curtos quando o preço ultrapassa a faixa inferior e não estava abaixo no período anterior
  5. Calcula a dimensão da posição de forma dinâmica com base no património líquido da conta corrente
  6. Fechar automaticamente posições em sinais contrários para uma gestão de risco atempada

Vantagens da estratégia

  1. Alta adaptabilidade - As bandas de Bollinger ajustam automaticamente a largura do canal com base na volatilidade do mercado
  2. Risco controlado - Dimensão dinâmica das posições garante a correspondência do risco com o tamanho da conta
  3. Confirmação da tendência - A integração com a média móvel melhora a fiabilidade do sinal
  4. Prevenção de perdas excessivas
  5. Negociação bilateral - Capta tendências ascendentes e descendentes para melhorar a eficiência do capital
  6. Código limpo - Lógica estratégica clara para fácil manutenção e otimização

Riscos estratégicos

  1. Falsas rupturas em mercados variados podem conduzir a perdas consecutivas
  2. Os parâmetros fixos das bandas de Bollinger podem não corresponder a todas as condições de mercado
  3. A ausência de paradas de trailing pode não garantir lucros efetivos
  4. A duração da média móvel pode resultar em sinais atrasados
  5. Custo de negociação não considerado, desempenho ao vivo pode diferir dos backtests

Orientações de otimização

  1. Adicionar filtros de volatilidade para reduzir a frequência de negociação em ambientes de baixa volatilidade
  2. Implementar mecanismos dinâmicos de stop-loss baseados na volatilidade do mercado
  3. Otimizar os parâmetros das bandas de Bollinger com períodos adaptativos
  4. Adicionar filtros de volume e tempo de espera
  5. Incluir indicadores técnicos adicionais para confirmação do sinal
  6. Estabelecer limites máximos de utilização para um controlo reforçado dos riscos

Resumo

Esta estratégia constrói um sistema de negociação quantitativo completo, combinando Bandas de Bollinger e médias móveis. Mantendo uma lógica simples, implementa funcionalidades essenciais, incluindo geração de sinal, gerenciamento de posição e controle de risco. Embora existam áreas para otimização, o design geral é sólido e tem valor prático de aplicação.


/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BB Breakout with MA 100 Strategy", overlay=true)

// Parameter Bollinger Bands
length = input(20, title="BB Length")
stdDev = input(2.0, title="BB Standard Deviation")

// Hitung Bollinger Bands
basis = ta.sma(close, length)
dev = stdDev * ta.stdev(close, length)
upperBB = basis + dev
lowerBB = basis - dev

// Hitung Moving Average 100
ma100 = ta.sma(close, 100)

// Logika untuk sinyal beli dan jual
longCondition = close > upperBB and close[1] <= upperBB[1]
shortCondition = close < lowerBB and close[1] >= lowerBB[1]

// Menentukan ukuran posisi (jumlah lot)
size = strategy.equity / close // Menentukan ukuran posisi berdasarkan ekuitas saat ini

// Eksekusi order
if (longCondition)
    strategy.entry("Long", strategy.long, qty=size)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=size)

// Menutup posisi ketika kondisi terbalik
if (longCondition and strategy.position_size < 0)
    strategy.close("Short")

if (shortCondition and strategy.position_size > 0)
    strategy.close("Long")

// Plotting
plot(upperBB, color=color.red, title="Upper BB")
plot(lowerBB, color=color.green, title="Lower BB")
plot(basis, color=color.blue, title="Basis BB")
plot(ma100, color=color.orange, title="MA 100")

// Menambahkan informasi ke grafik
bgcolor(longCondition ? color.new(color.green, 90) : na, title="Buy Signal Background")
bgcolor(shortCondition ? color.new(color.red, 90) : na, title="Sell Signal Background")


Relacionados

Mais.