Estratégia de negociação adaptativa de acompanhamento de tendências com base no rompimento de volume impulsionado por Bollinger

BB stdev SMA EMA SMMA WMA VWMA ATR
Data de criação: 2024-12-13 11:43:10 última modificação: 2024-12-13 11:43:10
cópia: 2 Cliques: 420
1
focar em
1617
Seguidores

Estratégia de negociação adaptativa de acompanhamento de tendências com base no rompimento de volume impulsionado por Bollinger

Visão geral

A estratégia é um sistema de negociação de ruptura de momentum baseado nas Bollinger Bands, principalmente para capturar oportunidades de tendência através da relação entre o preço e a trajetória da Bollinger Bands. A estratégia usa um mecanismo de seleção de tipo de linha uniforme adaptável, combinado com o canal de diferença padrão para identificar as características de oscilação do mercado, especialmente adequado para aplicações em ambientes de mercado de alta volatilidade.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes elementos-chave:

  1. A trajectória média da faixa de Bollinger é calculada usando as médias móveis personalizáveis (incluindo SMA, EMA, SMMA, WMA, VWMA).
  2. Determine a posição de subida e descida do carril através do múltiplo da diferença padrão (default 2.0)
  3. A entrada de mais no momento em que o preço entra em rota, indica a formação de uma forte tendência de ruptura.
  4. Quando o preço cai para baixo, a saída para a posição de equilíbrio indica que a tendência ascendente pode ter terminado.
  5. O sistema tem em conta os custos de transação (,1%) e os pontos de deslizamento ( pontos), de modo a ser mais adequado ao ambiente de transação real.

Vantagens estratégicas

  1. Adaptabilidade: a estratégia pode se adaptar a diferentes condições de mercado através da escolha de vários tipos de linha média.
  2. Controle de risco perfeito: fornece um controle de risco claro, com o Bollinger Bandwagon como ponto de parada.
  3. Gestão racional do capital: o método de gestão proporcional da posição evita o risco do número fixo.
  4. Os custos de transação são bem considerados: comissões e slippage são incluídos, e os resultados de retrospectiva são mais próximos da realidade.
  5. Flexibilidade de tempo: é possível escolher um período específico de tempo de negociação através de configuração de parâmetros.

Risco estratégico

  1. Risco de Falso Breakout: Falso sinal de breakout pode ser frequente em mercados com turbulência. Solução: aumentar os indicadores de confirmação ou o mecanismo de admissão de atraso.
  2. Risco de reversão de tendência: pode causar grandes perdas quando um mercado de forte tendência se reverte repentinamente. Solução: Pode ser adicionado um filtro de intensidade de tendência.
  3. Sensibilidade dos parâmetros: diferentes combinações de parâmetros podem levar a grandes diferenças no desempenho da estratégia. Solução: Optimização de parâmetros e testes de robustez.

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

  1. Os indicadores de intensidade da tendência são:
  • Pode ser adicionado um indicador ADX ou similar para filtrar os sinais de um mercado de tendência fraca
  • Isso pode reduzir os danos causados por falsas invasões.
  1. Optimizar o mecanismo de suspensão de perdas:
  • Permite a realização de stop loss dinâmico, como o stop loss de tracking
  • Ajuda a obter maiores receitas se a tendência persistir
  1. Adição de filtros de transação:
  • Sinais de confirmação baseados em volume de transação
  • Evitar transações em um ambiente de baixa liquidez
  1. A melhor forma de se inscrever:
  • Mecanismos que podem aumentar a reincidência
  • Ajuda a obter melhores preços de entrada

Resumir

Trata-se de uma estratégia de acompanhamento de tendências concebida de forma racional e lógica. Capta a dinâmica do mercado através das características dinâmicas da faixa de Bollinger e possui um bom mecanismo de controle de risco. A estratégia é altamente personalizável e pode ser adaptada a diferentes ambientes de mercado através de ajustes de parâmetros.

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

//@version=5
strategy("Demo GPT - Bollinger Bands", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
length = input.int(20, minval=1, title="Length")
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(2.0, minval=0.001, maxval=50, title="StdDev")
offset = input.int(0, "Offset", minval=-500, maxval=500)

// Date range inputs
startYear = input.int(2018, "Start Year", minval=1970, maxval=2100)
startMonth = input.int(1, "Start Month", minval=1, maxval=12)
startDay = input.int(1, "Start Day", minval=1, maxval=31)
endYear = input.int(2069, "End Year", minval=1970, maxval=2100)
endMonth = input.int(12, "End Month", minval=1, maxval=12)
endDay = input.int(31, "End Day", minval=1, maxval=31)

// Time range
startTime = timestamp("GMT+0", startYear, startMonth, startDay, 0, 0)
endTime = timestamp("GMT+0", endYear, endMonth, endDay, 23, 59)

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// Plot
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Strategy logic: Only go long and flat
inDateRange = time >= startTime and time <= endTime
noPosition = strategy.position_size == 0
longPosition = strategy.position_size > 0

// Buy if close is above upper band
if inDateRange and noPosition and close > upper
    strategy.entry("Long", strategy.long)

// Sell/Exit if close is below lower band
if inDateRange and longPosition and close < lower
    strategy.close("Long")