Bollinger Bands Breakout com estratégia de filtro de volatilidade

Autora:ChaoZhang, Data: 2024-03-08 15:28:05
Tags:

img

Estratégia geral

A estratégia Bollinger Bands Breakout with Volatility Filter é uma estratégia de negociação baseada no indicador Bollinger Bands. Ela utiliza Bollinger Bands para determinar a posição e a volatilidade do preço em relação à média móvel, decidindo assim os pontos de entrada e saída. Um aspecto único desta estratégia é que emprega um filtro de volatilidade, que evita entrar em negociações durante a alta volatilidade do mercado, detectando a taxa de mudança de velas consecutivas. Além disso, a estratégia define condições para tirar lucros e parar perdas para proteger lucros e controlar riscos.

Princípios de estratégia

O núcleo da estratégia é o cálculo do indicador Bollinger Bands. As Bandas de Bollinger consistem em três linhas: a linha do meio é uma média móvel simples, enquanto as bandas superior e inferior são definidas em um certo desvio padrão acima e abaixo da linha do meio, respectivamente.

As condições de entrada da estratégia baseiam-se na posição do preço de fechamento em relação às Bandas de Bollinger. Se a direção do comércio for definida como longa (tradeDirection>=0) e o preço de fechamento romper abaixo da faixa inferior por uma certa porcentagem (lower_breakout_pct), uma posição longa é aberta; se a direção do comércio for definida como curta (tradeDirection<=0) e o preço de fechamento romper acima da faixa superior por uma certa porcentagem (upper_breakout_pct), uma posição curta é aberta. Os parâmetros percentuais de ruptura permitem que o preço atravesse ligeiramente as Bandas de Bollinger antes de entrar em uma posição para confirmar a tendência.

Por outro lado, se a taxa de mudança de dois velas consecutivas exceder o limite de volatilidade pré-definido (Volatilidade), a volatilidade do mercado atual é considerada alta e a estratégia não abrirá novas posições.

Em termos de posições de saída, se o preço de fechamento de uma posição longa atingir perto da faixa superior (área superior) do valor de uma posição longa, o preço de fechamento da posição longa deve ser igual ou superior a um valor de uma posição longa.long_win_pct), ou o preço de encerramento de uma posição curta atinge perto da faixa inferior (lower+area)Além disso, se a perda não realizada de uma posição exceder a porcentagem máxima de retirada pré-estabelecida (max_drawdown_percent), a estratégia também fechará a posição para parar as perdas.

Vantagens da estratégia

  1. As Bandas de Bollinger são um indicador técnico maduro e amplamente utilizado que incorpora informações sobre médias móveis e volatilidade de preços.

  2. A estratégia inclui tanto a lógica de entrada longa como a lógica de entrada curta, permitindo a captura flexível de oportunidades em mercados de alta e baixa.

  3. O filtro de volatilidade evita a abertura de posições em mercados extremamente voláteis, reduzindo, até certo ponto, os riscos associados a negociações frequentes e alavancagem.

  4. A estratégia emprega mecanismos de take-profit e stop-loss para gerir ativamente as posições e fechá-las quando os preços retrocederem para níveis-chave.

Riscos estratégicos

  1. As bandas de Bollinger são essencialmente um indicador atrasado e têm um certo atraso em reagir ao mercado.

  2. As configurações de parâmetros da estratégia podem não ser universalmente aplicáveis a diferentes condições de mercado. Por exemplo, a definição do limite do filtro de volatilidade pode precisar ser diferenciada em mercados de tendência e osciladores. Parâmetros fixos podem fazer com que a estratégia não possa abrir posições ou abra com muita frequência em certas condições de mercado.

  3. Embora existam medidas de stop-loss, quando o mercado está em falta, a estratégia pode não ser capaz de ser executada ao preço pré-estabelecido, levando a perdas maiores.

  4. A estratégia não estabelece stop-loss ou break-even stop após a abertura de posições, o que pode levar a algumas perdas de lucro.

Orientações de otimização

  1. Considerar a introdução de mais indicadores técnicos ou de avaliações do estado do mercado, como ATR, indicadores de tendência, indicadores de volatilidade, etc., como condições de filtragem da estratégia para melhorar a qualidade e o calendário das entradas.

  2. Para o filtro de volatilidade, tentar adotar limiares dinâmicos que se adaptem a diferentes instrumentos ou prazos para melhorar a eficácia da filtragem.

  3. Em termos de stop-loss e take-profit, introduzir mecanismos de trailing stop ou break-even stop para permitir que a estratégia mantenha posições quando a tendência continuar, em vez de fechar posições prematuramente.

  4. Otimizar ainda mais a gestão de posições ajustando dinamicamente o tamanho de entrada com base na força da tendência, volatilidade, nível de risco e outros indicadores para controlar os drawdowns.

Resumo

A estratégia Bollinger Bands Breakout com Filtro de Volatilidade aproveita a caracterização da posição de preço e volatilidade por Bollinger Bands para construir uma estratégia de negociação de duas vias. O aspecto único desta estratégia é o filtro de volatilidade que evita a negociação em mercados extremamente voláteis, ao mesmo tempo em que estabelece condições relativamente simples de take-profit e stop-loss.


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")


Mais.