Estratégia de negociação de ruptura do canal de bandas de Bollinger

Autora:ChaoZhang, Data: 12 de setembro de 2023 17:05:56
Tags:

Esta estratégia negocia a quebra de preço das Bandas de Bollinger. As bandas definem efetivamente a faixa de oscilação de preços, com as quebras sinalizando potenciais voltas de tendência.

Estratégia lógica:

  1. Calcule a linha média BB, as bandas superior e inferior. A linha média é a SMA de n períodos, a largura da banda é o múltiplo do desvio padrão de n períodos.

  2. Vai longo na banda inferior e curto na banda superior.

  3. Configure stop loss na faixa oposta para controlo de risco.

  4. Paragem de atraso para obter mais lucros, ou paragem fixa.

  5. Aplicar ordens mutuamente exclusivas para evitar simultâneos long/short.

Vantagens:

  1. A ruptura do BB identifica com precisão as mudanças de tendência.

  2. Paradas em bandas permitem a saída da tendência em tempo hábil.

  3. A exclusão mútua evita coberturas na mesma direção.

Riscos:

  1. BB média e desvio de atraso, faltando as melhores entradas.

  2. As serras são comuns em diversos mercados.

  3. Parâmetros estáticos Incapaz de adaptar a variação da volatilidade.

Em resumo, esta estratégia comercializa breakouts BB como um sistema de canal típico.


/*backtest
start: 2022-09-05 00:00:00
end: 2023-09-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Kozlod - BB Strategy - 1 minute", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

// 
// author: Kozlod
// date: 2019-05-27
// RSI - BTCUSDT - 1m
// https://www.tradingview.com/u/Kozlod/
// https://t.me/quantnomad
//

source = close
length = input(45, minval=1)
mult = input(2.5, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(upper)
plot(lower)

buyEntry  = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands",  comment="BBandSE")
else
    strategy.cancel(id="BBandSE")

Mais.