Cette stratégie utilise l'indicateur Bollinger Bands pour déterminer si les prix sont dans une période de consolidation, et les ruptures pour déterminer les entrées et les sorties.
La stratégie calcule d'abord la moyenne mobile simple de 20 jours du prix de clôture comme la bande moyenne des bandes de Bollinger, et 2 fois l'écart type comme la largeur de bande.
Lorsque les prix se situent entre les bandes supérieures et inférieures de Bollinger, il est considéré comme une période de consolidation. Lorsqu'un signal de rupture est détecté, allez long. Lorsque les prix tombent à nouveau en dessous de la bande inférieure, fermez la position.
Le stop loss est réglé à 2 fois l'indicateur ATR.
Les principaux avantages de cette stratégie sont les suivants:
Il y a aussi des risques:
Les contre-mesures:
Quelques façons d'améliorer la stratégie:
La stratégie est simple et directe, profitant de l'accumulation d'énergie lors des consolidations.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Consolidation Breakout Strategy", shorttitle="CBS", overlay=true) // Parameters length = input(20, title="Bollinger Bands Length") mult = input(2.0, title="Bollinger Bands Multiplier") risk = input.float(1, title="Risk per Trade (%)") / 100 // Calculate Bollinger Bands basis = ta.sma(close, length) dev = mult * ta.stdev(close, length) upper = basis + dev lower = basis - dev // Entry Conditions consolidating = ta.crossover(close, upper) and ta.crossunder(close, lower) // Exit Conditions breakout = ta.crossover(close, upper) or ta.crossunder(close, lower) // Risk Management atrVal = ta.atr(14) stopLoss = atrVal * input.float(2, title="Stop Loss Multiplier", minval=0.1, maxval=5) // Entry and Exit Conditions longEntry = breakout and close > upper shortEntry = breakout and close < lower if (longEntry) strategy.entry("Long", strategy.long) if (shortEntry) strategy.entry("Short", strategy.short) if (longEntry and close < basis - stopLoss) strategy.close("Long Exit") if (shortEntry and close > basis + stopLoss) strategy.close("Short Exit") // Plot Entry and Exit Points plotshape(consolidating, style=shape.triangleup, location=location.belowbar, color=color.rgb(30, 255, 0), title="Entry Signal") plotshape(breakout, style=shape.triangledown, location=location.abovebar, color=color.rgb(255, 0, 0), title="Exit Signal")