
La stratégie est un système de négociation dynamique de rupture basé sur les indicateurs Brinband et RSI. Il construit un cadre de décision de négociation complet en combinant l’analyse de la volatilité des bandes de Brinband avec la confirmation de la dynamique du RSI. La stratégie prend en charge le contrôle de la négociation multidirectionnelle, permettant de choisir avec souplesse de faire des transactions plus, plus faibles ou bidirectionnelles en fonction des conditions du marché.
Le principe central de la stratégie est d’identifier les opportunités de rupture à forte probabilité par la confirmation de signaux multiples.
Il s’agit d’une stratégie de trading de rupture conçue de manière rationnelle et logique. La stratégie a une bonne utilité grâce à la reconnaissance de signaux multiples et à un mécanisme de gestion des risques bien développé.
/*backtest
start: 2023-12-05 00:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bollinger Breakout Strategy with Direction Control", overlay=true)
// === Input Parameters ===
length = input(20, title="Bollinger Bands Length")
src = close
mult = input(2.0, title="Bollinger Bands Multiplier")
rsi_length = input(14, title="RSI Length")
rsi_midline = input(50, title="RSI Midline")
risk_reward_ratio = input(2.0, title="Risk/Reward Ratio")
// === Trade Direction Option ===
trade_direction = input.string("Both", title="Trade Direction", options=["Long", "Short", "Both"])
// === Bollinger Bands Calculation ===
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper_band = basis + dev
lower_band = basis - dev
// === RSI Calculation ===
rsi_val = ta.rsi(src, rsi_length)
// === Breakout Conditions ===
// Long: Prijs sluit boven de bovenste Bollinger Band en RSI > RSI Midline
long_condition = close > upper_band and rsi_val > rsi_midline and (trade_direction == "Long" or trade_direction == "Both")
// Short: Prijs sluit onder de onderste Bollinger Band en RSI < RSI Midline
short_condition = close < lower_band and rsi_val < rsi_midline and (trade_direction == "Short" or trade_direction == "Both")
// === Entry Prices ===
var float entry_price_long = na
var float entry_price_short = na
if (long_condition)
entry_price_long := close
strategy.entry("Long", strategy.long, when=long_condition)
if (short_condition)
entry_price_short := close
strategy.entry("Short", strategy.short, when=short_condition)
// === Stop-Loss and Take-Profit ===
long_stop_loss = entry_price_long * 0.98 // 2% onder instapprijs
long_take_profit = entry_price_long * (1 + (0.02 * risk_reward_ratio))
short_stop_loss = entry_price_short * 1.02 // 2% boven instapprijs
short_take_profit = entry_price_short * (1 - (0.02 * risk_reward_ratio))
if (strategy.position_size > 0) // Long Positie
strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit)
if (strategy.position_size < 0) // Short Positie
strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit)
// === Plotting ===
plot(upper_band, color=color.green, title="Upper Band")
plot(lower_band, color=color.red, title="Lower Band")
plot(basis, color=color.blue, title="Basis")