Estratégia Bollinger Breakout Stop-Loss

Autora:ChaoZhang, Data: 2023-10-27 16:50:24
Tags:

img

Resumo

Esta estratégia gera sinais de negociação com base no indicador Bollinger Bands e gerencia posições usando stop-loss/take-profit. Monitora a quebra das bandas superior e inferior da Bollinger Bands, vai longo quando o preço quebra acima da banda superior, vai curto quando o preço quebra a banda inferior e sai quando o preço quebra as bandas em reverso usando ordens de stop-loss.

Estratégia lógica

A estratégia utiliza as faixas média, superior e inferior do indicador Bollinger Bands. A faixa do meio é a média móvel, a faixa superior é a faixa do meio mais 2 desvios padrão e a faixa inferior é a faixa do meio menos 2 desvios padrão.

Primeiro, ele calcula as bandas de Bollinger do meio, superior e inferior. Em seguida, verifica se o preço quebra acima da faixa superior ou abaixo da faixa inferior. Se o preço quebra acima da faixa superior, ele vai longo. Se o preço quebra abaixo da faixa inferior, ele vai curto. Também se o preço quebra as bandas no inverso, ele sai de posições usando ordens de stop-loss.

Especificamente, a lógica estratégica é:

  1. Calcular Bandas de Bollinger Bandas médias, superiores e inferiores
  2. Se o preço ultrapassar a faixa superior, vá long
  3. Se o preço for abaixo da faixa inferior, vá curto
  4. Se já for longo, feche longo quando o preço ultrapassar a faixa inferior
  5. Se já estiver em curto, fechar em curto quando o preço ultrapassar a faixa superior

Isso permite capturar tendências quando o preço faz grandes movimentos, limitando as perdas usando stop-loss.

Vantagens

  • Usar Bandas de Bollinger para sinais de entrada capta tendências após breakouts
  • Sinais claros de longo/curto prazo, regras simples
  • Limites da estratégia de stop-loss para perda máxima por transação
  • Ajustabilidade dos parâmetros para otimizar a estratégia

Riscos

  • As trocas freqüentes de pequenas perdas de stop-loss podem prejudicar o P/L global
  • A regulação de parâmetros inadequada pode causar muitos sinais ou trocas perdidas
  • Considera apenas o preço, sem outros indicadores para confirmação
  • O valor da posição em risco deve ser calculado de acordo com o método de classificação da posição em risco.

Pode otimizar através da combinação de indicadores, ajustando unidades de stop-loss etc.

Oportunidades de melhoria

  • Combine outros indicadores como volume, médias móveis para confirmar sinais
  • Otimizar os parâmetros de Bollinger para diferentes mercados
  • Ajustar a distância de stop-loss perto do breakout para evitar hipersensibilidade
  • Negociar apenas após as tendências se desenvolverem, como regras de Turtle Trading
  • Optimização automática de parâmetros através de algoritmos de aprendizagem de máquina

Conclusão

Esta é uma tendência relativamente simples seguindo uma estratégia baseada em Bandas de Bollinger. Pode tomar posições rapidamente quando o preço quebra e usa stop-loss para controlar o risco. Mas confiar apenas no preço pode causar julgamentos errados, enquanto o stop-loss sensível pode aumentar a frequência de negociação. Podemos melhorá-lo ainda mais através de ajuste de parâmetros, combinação de indicadores, ajuste de paradas, etc. No geral, fornece uma estrutura de negociação quantitativa simples e confiável.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ROBO_Trading

//@version=5
strategy(title = "Bollinger Stop Strategy", shorttitle = "BBStop", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 10000, default_qty_value = 100, commission_value = 0.1)

//Settings
long = input(true)
short = input(true)
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
source = input(close)
showbb = input(true, title = "Show Bollinger Bands")
showof = input(true, title = "Show Offset")
startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", inline = "time1")
finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", inline = "time1")

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

//Show indicator
offset = showof ? 1 : 0
colorBasis = showbb ? color.gray : na
colorUpper = showbb ? color.blue : na
colorLower = showbb ? color.blue : na
colorBands = showbb ? color.blue : na
p0 = plot(basis, "Basis", color = colorBasis, offset = offset)
p1 = plot(upper, "Upper", color = colorUpper, offset = offset)
p2 = plot(lower, "Lower", color = colorLower, offset = offset)
fill(p1, p2, title = "Background", color = colorBands, transp = 90)

//Trading
truetime = true
if basis > 0 and truetime
    if long
        strategy.entry("Long", strategy.long, stop = upper, when = truetime)
    if short
        strategy.entry("Short", strategy.short, stop = lower, when = truetime)
    if long == false
        strategy.exit("Exit", "Short", stop = upper)
    if short == false
        strategy.exit("Exit", "Long", stop = lower)
if time > finalTime
    strategy.close_all()

Mais.