
La stratégie est un système de trading de rupture combinant les bandes de Bollinger, les indicateurs relativement faibles (RSI) et les lignes K lisses (Heikin Ashi). Grâce à l’utilisation combinée de multiples indicateurs techniques, le bruit du marché est filtré efficacement pour capturer les opportunités de rupture à forte probabilité. La stratégie utilise le concept de suivi de tendance et de trading dynamique pour entrer en jeu après la confirmation de la rupture, en utilisant le renversement de la ligne K lisses et l’exagération du RSI comme signal de sortie.
La logique centrale de la stratégie est basée sur la synergie des trois indicateurs techniques suivants:
Les conditions d’entrée doivent être remplies en même temps :
Les conditions de sortie sont les suivantes:
Suggestions de contrôle des risques :
La stratégie a permis de construire un système de suivi des tendances relativement complet grâce à la combinaison des bandes de Brin, du RSI et de la ligne K lisse. La logique de la stratégie est claire, les critères d’exécution sont clairs et ont une bonne praticité. La stabilité et la fiabilité de la stratégie sont susceptibles d’être encore améliorées par l’optimisation des paramètres et l’ajout d’indicateurs auxiliaires.
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 6h
basePeriod: 6h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("Bollinger Bands + RSI + Heikin Ashi Breakout", overlay=true)
// Input Settings
bbLength = input.int(20, title="Bollinger Bands Length")
bbMultiplier = input.float(2, title="Bollinger Bands Multiplier")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.float(70, title="RSI Overbought Level")
// Bollinger Bands
basis = ta.sma(close, bbLength)
dev = bbMultiplier * ta.stdev(close, bbLength)
upperBB = basis + dev
lowerBB = basis - dev
// Heikin Ashi Candle Calculations
var float heikinOpen = na // Declare `heikinOpen` with an undefined initial value
var float heikinClose = na // Declare `heikinClose` with an undefined initial value
// Update Heikin Ashi values
heikinClose := (open + high + low + close) / 4
heikinOpen := na(heikinOpen[1]) ? (open + close) / 2 : (heikinOpen[1] + heikinClose[1]) / 2
heikinHigh = math.max(high, math.max(heikinOpen, heikinClose))
heikinLow = math.min(low, math.min(heikinOpen, heikinClose))
// RSI
rsi = ta.rsi(close, rsiLength)
// Entry Conditions
heikinGreen = heikinClose > heikinOpen
longCondition = heikinGreen and close > upperBB and rsi > 50
// Exit Conditions
heikinRed = heikinClose < heikinOpen
longExitCondition = heikinRed or rsi >= rsiOverbought
// Strategy Execution
if (longCondition)
strategy.entry("Long", strategy.long)
if (longExitCondition)
strategy.close("Long", comment="Exit Long")
// Plotting Bollinger Bands
plot(upperBB, color=color.blue, title="Upper Bollinger Band")
plot(lowerBB, color=color.blue, title="Lower Bollinger Band")
plot(basis, color=color.orange, title="Middle Bollinger Band")
// Heikin Ashi Visualization
plotcandle(heikinOpen, heikinHigh, heikinLow, heikinClose, color=(heikinGreen ? color.green : color.red), title="Heikin Ashi Candles")
// Debugging Signals
plotshape(longCondition, style=shape.labelup, location=location.belowbar, color=color.green, title="Long Entry Signal")
plotshape(longExitCondition, style=shape.labeldown, location=location.abovebar, color=color.red, title="Long Exit Signal")