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.
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.
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.
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.
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.
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.
As bandas de Bollinger são essencialmente um indicador atrasado e têm um certo atraso em reagir ao mercado.
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.
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.
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.
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.
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.
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.
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.
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")