
Strategi ini adalah sistem perdagangan terobosan dinamik berdasarkan tanda Brin dan RSI. Ia membina kerangka keputusan perdagangan yang komprehensif dengan menggabungkan analisis turun naik Brin dengan pengesahan dinamik RSI.
Prinsip utama strategi ini adalah untuk mengenal pasti peluang perdagangan terobosan dengan kebarangkalian tinggi melalui pengesahan pelbagai isyarat.
Ini adalah strategi perdagangan terobosan yang direka dengan logik dan logik yang jelas. Dengan pengiktirafan pelbagai isyarat dan mekanisme pengurusan risiko yang baik, strategi ini mempunyai kepraktisan yang baik. Pada masa yang sama, strategi ini memberikan ruang pengoptimuman yang kaya, yang boleh dilakukan dengan penambahbaikan yang disasarkan mengikut varieti perdagangan tertentu dan keadaan pasaran.
/*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")