La stratégie de consolidation des bandes de Bollinger est une stratégie innovante qui identifie les phases de consolidation à faible volatilité à l'aide des bandes de Bollinger. Lorsque le marché entre dans une période de volatilité, les bandes de Bollinger convergeront, ce qui indique une opportunité d'entrer sur le marché.
La stratégie repose principalement sur les bandes de Bollinger pour détecter quand les prix entrent dans une phase de consolidation de faible volatilité. La bande du milieu des bandes de Bollinger est une moyenne mobile des prix de clôture. Les bandes supérieure et inférieure sont compensées par deux écarts types au-dessus et en dessous de la bande du milieu. Lorsque la volatilité diminue, la distance entre les bandes supérieure et inférieure se rétrécit sensiblement.
Pour prouver davantage la diminution de la volatilité, nous vérifions si la moyenne mobile des valeurs ATR a une tendance à la baisse. La diminution de la moyenne ATR corrobore également du côté que la volatilité diminue. Lorsque les deux conditions sont remplies simultanément, nous déterminons que les bandes de Bollinger ont montré une convergence significative, ce qui est une excellente opportunité d'achat.
Après avoir acheté, nous activons une stratégie de stop loss mobile avec une distance de stop loss deux fois supérieure à la valeur ATR.
Le plus grand avantage de cette stratégie est qu'elle peut déterminer avec précision quand le marché entre dans une phase de consolidation à faible volatilité et identifier la meilleure opportunité d'achat.
En outre, la stratégie utilise également un stop loss mobile pour contrôler activement les risques. Cela maximise la réduction des pertes même lorsque le sentiment du marché est défavorable.
Le principal risque de la stratégie est que l'indicateur Bollinger Bands ne peut pas déterminer avec précision les changements de volatilité des prix 100% du temps. Lorsque Bollinger Bands estime à tort que la volatilité a diminué, notre timing d'entrée peut être défavorable. À ce stade, le stop loss mobile joue un rôle important et peut quitter le commerce le plus tôt possible.
En outre, la définition de divers paramètres dans la stratégie aura également une incidence sur les résultats.
Nous pouvons envisager d'ajouter d'autres indicateurs pour confirmer les signes de virage sur les indicateurs de tendance lorsque les bandes de Bollinger convergent. Par exemple, lorsque les bandes de Bollinger convergent, nous exigeons également que la différence MACD soit passée de positive à négative, ou que le RSI se soit retiré de la zone de surachat. Cela peut encore améliorer la précision des signaux d'achat.
Une autre direction consiste à tester l'impact de différents paramètres sur les résultats, tels que les périodes de Bollinger Bands, ATR et le multiplicateur du stop loss mobile.
La stratégie de consolidation des bandes de Bollinger utilise les bandes de Bollinger pour déterminer le moment de la diminution de la volatilité des prix et utilise un stop loss mobile pour contrôler efficacement les risques. Il s'agit d'une stratégie de rupture à long terme relativement stable.
/*backtest start: 2023-02-15 00:00:00 end: 2024-02-21 00:00:00 period: 1d basePeriod: 1h 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/ // © DojiEmoji //@version=4 strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1) // Timeframe { backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time) USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)") backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time) within_timeframe = true // } // Indicator: BOLL bands { BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)") BOLL_src = close BOLL_center = sma(BOLL_src, BOLL_length) BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length) BOLL_upper = BOLL_center + BOLL_sDEV_x2 BOLL_lower = BOLL_center - BOLL_sDEV_x2 plot(BOLL_center, "Basis", color=#872323, offset = 0) BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50) BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50) fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85) // } // ATR and volatility Indicator { ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL avg_volat = sma(ATR_x2, BOLL_length) //} // Trailing stop loss { var entry_price = float(0) var trailing_SL_buffer = float(0) var stop_loss_price = float(0) trail_profit_line_color = color.green UPDATE_ATR_TSL = false if strategy.position_size == 0 or not within_timeframe // make TSL line less visible trail_profit_line_color := color.black stop_loss_price := close - trailing_SL_buffer else if strategy.position_size > 0 if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer trailing_SL_buffer := ATR_x2 stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer) plot(stop_loss_price,color=trail_profit_line_color) // } IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)") IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)") // Main: if within_timeframe // ENTRY: if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY) if strategy.position_size == 0 entry_price := close trailing_SL_buffer := ATR_x2 stop_loss_price := close - ATR_x2 strategy.entry("Long",strategy.long, comment="enter") if strategy.position_size > 0 strategy.entry("Long",strategy.long, comment="+") // EXIT: if strategy.position_size > 0 if low <= stop_loss_price if close > entry_price strategy.close("Long", comment="take profit") else if low <= entry_price strategy.close("Long", comment="stop loss") if strategy.position_size == 0 entry_price := 0