Bollinger Band Awesome Oscillator stratégie de négociation de rupture

Auteur:ChaoZhang est là., Date: 2023-12-12 17:12:35 Je suis désolé
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur Bollinger Bands et l'indicateur Awesome Oscillator (AO) pour mettre en œuvre un modèle de négociation de rupture.

La logique de la stratégie

  1. Utilisez les bandes intermédiaires, supérieures et inférieures des bandes de Bollinger pour déterminer le canal de prix.
  2. Jugez une rupture de canal lorsque l'EMA rapide traverse la bande médiane.
  3. L'indicateur AO détermine la direction de la tendance haussière ou baissière.
  4. Lorsque l'EMA rapide franchit la bande moyenne vers le haut et que l'AO est positif, un signal d'achat est généré.
  5. Lorsque l'EMA rapide franchit la bande moyenne vers le bas et que l'AO est négatif, un signal de vente est généré.

Analyse des avantages

  1. Le canal BB évite les mauvais signaux.
  2. L'indicateur AO améliore la précision des signaux.
  3. Capture un plus grand profit au début d'une tendance.

Analyse des risques

  1. Des paramètres BB incorrects peuvent entraîner un canal trop large ou trop étroit.
  2. Les paramètres d'AO affectent la précision.
  3. Le signal d'évasion peut être une fausse évasion.

Les solutions

  1. Optimiser les paramètres de BB et AO pour trouver la meilleure combinaison.
  2. Ajoutez une condition de force pour éviter une fausse fuite.
  3. Combiner avec d'autres indicateurs pour assurer la fiabilité.

Directions d'optimisation

  1. Optimiser les paramètres BB pour trouver une plage de canaux appropriée.
  2. Optimiser les périodes d'AO à long et à court terme pour améliorer la précision.
  3. Ajouter du volume ou d'autres filtres pour assurer la fiabilité de la rupture.
  4. Optimisez la résistance pour réduire le taux de fausse rupture.

Conclusion

Cette stratégie prend en considération le canal de prix, la direction de la tendance et le modèle de rupture. Elle peut être plus robuste et rentable grâce à l'optimisation des paramètres et aux combinaisons d'indicateurs.


/*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

Plus de