Estratégia de fuga de bandas de Bollinger e filtro de volatilidade


Data de criação: 2024-03-08 15:28:05 última modificação: 2024-03-08 15:28:05
cópia: 0 Cliques: 692
1
focar em
1617
Seguidores

Estratégia de fuga de bandas de Bollinger e filtro de volatilidade

Visão geral da estratégia

A estratégia de filtragem de breakouts e flutuações da faixa de Bollinger é uma estratégia de negociação baseada nos indicadores da faixa de Bollinger. Ela usa o Bollinger para determinar a posição e a volatilidade do preço em relação à média móvel, para decidir sobre a abertura e a suspensão de uma posição. Uma característica única da estratégia é que ela usa um filtro de flutuação para evitar a entrada de negociação em momentos de grande flutuação do mercado, detectando a queda e queda de linhas K contínuas.

Princípio da estratégia

O núcleo da estratégia é o cálculo do indicador das faixas de Bollinger. As faixas de Bollinger são compostas por três linhas: a média central é a média móvel simples, e as faixas superiores e inferiores adicionam e subtraem um determinado diferencial padrão com base na média central. O tamanho do diferencial padrão é controlado pelo parâmetro mult.

A estratégia de abertura de posição é baseada na posição do preço de fechamento em relação à faixa de Bollinger. Se a direção de negociação for definida como alta (tradeDirection> = 0), e o preço de fechamento cair abaixo da trajectória por uma certa proporção (lower_breakout_pct), a abertura de posição é maior; Se a direção de negociação for definida como baixa (tradeDirection< = 0), e o preço de fechamento romper a trajetória por uma certa proporção (upper_breakout_pct), a abertura de posição é menor.

Por outro lado, se os acréscimos e quedas de duas linhas K consecutivas ultrapassarem o limiar de volatilidade esperado (Volatility), a estratégia não abrirá uma nova posição, considerando que o mercado atual é muito flutuante. Este filtro de volatilidade pode evitar, em certa medida, um ambiente de mercado muito flutuante.

No que diz respeito à posição horizontal, se o preço de fechamento de uma posição multi-cabeça tocar na área superior*long_win_pct), ou o preço de fechamento de uma posição em aberto tocou perto da trajectória inferior*short_win_pct), a estratégia liquida a posição correspondente com lucro. Além disso, se a perda flutuante da posição for superior à taxa de retirada máxima prevista (max_drawdown_percent), a estratégia também liquida a posição.

Vantagens estratégicas

  1. O Bollinger Band é um indicador técnico bem desenvolvido e amplamente utilizado, que combina informações sobre as médias móveis e a volatilidade dos preços. Usando o Bollinger Band para criar estratégias de negociação, pode-se capturar as mudanças de tendências e flutuações.

  2. A estratégia contém a lógica de abrir e fechar simultaneamente, permitindo a flexibilidade de aproveitamento de oportunidades em mercados binários em aberto. A configuração do ponto de ruptura da faixa de Bollinger faz com que o ponto de entrada da estratégia seja mais confirmatório.

  3. O filtro de volatilidade evita a abertura de posições em mercados altamente voláteis, reduzindo, em certa medida, o risco de negociação frequente e de alavancagem.

  4. A estratégia usa um mecanismo de stop loss e stop loss para controlar ativamente as posições, eliminando as posições quando o preço retrocede para a posição crítica. Isso ajuda a proteger os lucros e controlar a retração.

Risco estratégico

  1. As Bollinger Bands são, em essência, um indicador de atraso, com um certo atraso na reação do mercado. No momento crítico de uma mudança de tendência ou mudança de rumo, a estratégia pode perder o melhor momento de entrada.

  2. A configuração de parâmetros da estratégia não se aplica necessariamente a diferentes condições de mercado. Por exemplo, a configuração do limiar do filtro de taxa de flutuação pode exigir uma diferença em situações de tendência e de choque. Os parâmetros fixos podem causar a impossibilidade de abrir posições ou abrir posições com muita frequência em certas situações.

  3. Embora existam medidas de parada de perdas, quando o mercado apresenta brechas de salto, a estratégia pode não ser executada ao preço predeterminado, resultando em maiores perdas.

  4. A estratégia não estabelece um stop-loss móvel ou um stop-loss de acompanhamento após a abertura da posição, o que pode levar a um retorno parcial dos lucros.

Direção de otimização

  1. Pode-se considerar a introdução de mais indicadores técnicos ou de avaliação 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 a capacidade de tempo de abrir posições.

  2. Para os filtros de taxa de flutuação, pode-se tentar o uso de valores de limiar dinâmicos, que se adaptam de acordo com diferentes variedades ou diferentes períodos de tempo, para melhorar a eficácia da filtragem.

  3. No que diz respeito ao stop loss, pode-se introduzir um mecanismo de stop loss móvel ou de rastreamento de stop loss, para que a estratégia mantenha a posição quando a tendência continua, em vez de liquidar prematuramente. Além disso, pode-se considerar a configuração de diferentes proporções de stop loss para otimizar a relação risco-receita.

  4. A gestão de posições pode ser ainda mais otimizada, ajustando a taxa de abertura de posição de acordo com a intensidade da tendência, a volatilidade e a dinâmica dos indicadores de risco, controlando a retirada. Além disso, também é possível usar melhor o capital através de operações como ativos e perdas.

Resumir

A estratégia de filtragem de ruptura e volatilidade da faixa de Bollinger usa o desenho da faixa de Bollinger sobre a posição e a volatilidade dos preços para construir uma estratégia de negociação bidirecional. A singularidade da estratégia é que o filtro de volatilidade evita a negociação em mercados altamente flutuantes e, ao mesmo tempo, configura condições de parada e perda mais simples.

Código-fonte da estratégia
/*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")