Bollinger Band Awesome Oscilador Breakout Estratégia de Negociação

Autora:ChaoZhang, Data: 2023-12-12 17:12:35
Tags:

img

Resumo

Esta estratégia combina o indicador Bollinger Bands e o indicador Awesome Oscillator (AO) para implementar um modelo de negociação de ruptura.

Estratégia lógica

  1. Usar as faixas média, superior e inferior das faixas de Bollinger para determinar o canal de preços.
  2. Julgue uma ruptura de canal quando a EMA rápida cruzar a faixa média.
  3. O indicador AO determina a direcção da tendência ascendente ou descendente.
  4. Quando a EMA rápida atravessa a faixa média para cima e o AO é positivo, é gerado um sinal de compra.
  5. Quando a EMA rápida atravessa a faixa média para baixo e o AO é negativo, é gerado um sinal de venda.

Análise das vantagens

  1. O canal BB evita sinais errados.
  2. O indicador AO melhora a precisão dos sinais.
  3. Captura maior lucro no início de uma tendência.

Análise de riscos

  1. Os parâmetros BB incorretos podem causar um canal demasiado largo ou demasiado estreito.
  2. Os parâmetros de AO afetam a precisão.
  3. O sinal de fuga pode ser falso.

Soluções

  1. Otimizar os parâmetros de BB e AO para encontrar a melhor combinação.
  2. Adicione a condição de força para evitar uma fuga falsa.
  3. Combinar com outros indicadores para garantir a fiabilidade.

Orientações de otimização

  1. Optimize os parâmetros do BB para encontrar a faixa de canais adequada.
  2. Otimizar os períodos de AO a longo e curto prazo para melhorar a precisão.
  3. Adicionar volume ou outros filtros para garantir a fiabilidade da fuga.
  4. Optimize a condição de força para reduzir a taxa de falha de fuga.

Conclusão

Esta estratégia considera de forma abrangente o canal de preços, a direção da tendência e o modelo de ruptura. Pode ser mais robusto e lucrativo através da otimização de parâmetros e combinações de indicadores. Seu modelo de ruptura capta oportunidades de tendência iniciais e é muito prático.


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

//@version=3

strategy(shorttitle="BB+AO STRAT", title="BB+AO STRAT", overlay=true)


// === BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// Bollinger Bands Inputs
bb_use_ema = input(false, title="Use EMA for Bollinger Band")
bb_length = input(5, minval=1, title="Bollinger Length")
bb_source = input(close, title="Bollinger Source")
bb_mult = input(2.0, title="Base Multiplier", minval=0.5, maxval=10)
// EMA inputs
fast_ma_len = input(2, title="Fast EMA length", minval=2)
// Awesome Inputs
nLengthSlow = input(34, minval=1, title="Awesome Length Slow")
nLengthFast = input(5, minval=1, title="Awesome Length Fast")




// Breakout Indicator Inputs
bb_basis = bb_use_ema ? ema(bb_source, bb_length) : sma(bb_source, bb_length)
fast_ma  = ema(bb_source, fast_ma_len)

// Deviation

dev = stdev(bb_source, bb_length)
bb_dev_inner = bb_mult * dev

// Upper bands
inner_high = bb_basis + bb_dev_inner
// Lower Bands
inner_low = bb_basis - bb_dev_inner

// Calculate Awesome Oscillator
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
// Calculate direction of AO
AO = xSMA1_SMA2>=0? xSMA1_SMA2 > xSMA1_SMA2[1] ? 1 : 2 : xSMA1_SMA2 > xSMA1_SMA2[1] ? -1 : -2



// === PLOTTING ===

// plot BB basis
plot(bb_basis, title="Basis Line", color=red, transp=10, linewidth=2)
// plot BB upper and lower bands
ubi = plot(inner_high, title="Upper Band Inner", color=blue, transp=10, linewidth=1)
lbi = plot(inner_low, title="Lower Band Inner", color=blue, transp=10, linewidth=1)
// center BB channel fill
fill(ubi, lbi, title="Center Channel Fill", color=silver, transp=90)

// plot fast ma
plot(fast_ma, title="Fast EMA", color=black, transp=10, linewidth=2)

// Calc breakouts
break_down =   crossunder(fast_ma, bb_basis) and close < bb_basis and abs(AO)==2
break_up   =  crossover(fast_ma, bb_basis) and close > bb_basis and abs(AO)==1

// Show Break Alerts
plotshape(break_down, title="Breakout Down", style=shape.arrowdown, location=location.abovebar, size=size.auto, text="Sell", color=red, transp=0)
plotshape(break_up, title="Breakout Up", style=shape.arrowup, location=location.belowbar, size=size.auto, text="Buy", color=green, transp=0)
// === ALERTS ===



strategy.entry("L", strategy.long, when=(break_up and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))


strategy.close("L", when=(break_down and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

// === /PLOTTING ===
barcolor(AO == 2 ? red: AO == 1 ? green : blue )



// eof

Mais.