
This strategy is a technical analysis trading system that combines Bollinger Bands and Relative Strength Index (RSI). It seeks trading opportunities in overbought and oversold areas by utilizing price volatility and market momentum characteristics. The strategy generates buy signals when RSI indicates oversold conditions (below 30) and price breaks above the lower Bollinger Band; sell signals are generated when RSI indicates overbought conditions (above 70) and price breaks below the upper Bollinger Band. The middle Bollinger Band is used as a stop-loss position.
The core logic of the strategy is based on the following key elements: 1. Bollinger Bands parameters use 20-period moving average as the middle band, with a standard deviation multiplier of 2.0 2. RSI uses the traditional 14-period setting 3. Entry conditions: - Buy: price breaks above lower Bollinger Band and RSI<30 - Sell: price breaks below upper Bollinger Band and RSI>70 4. Exit conditions: positions are closed when price crosses the middle Bollinger Band (20-period moving average) This combination considers both price statistics and momentum indicators, effectively improving trading accuracy.
This strategy constructs a relatively complete trading system by combining Bollinger Bands and RSI indicators. The strategy logic is clear, risk control is reasonable, and it has practical value. Through the suggested optimization directions, there is room for further improvement. In practical application, investors are advised to make appropriate adjustments based on their risk tolerance and market conditions.
/*backtest
start: 2024-07-15 00:00:00
end: 2025-02-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("Bollinger Bands + RSI Strategy", overlay=true)
// Bollinger Bands parameters
length = input.int(20, title="Bollinger Bands Length")
src = input(close, title="Source")
mult = input.float(2.0, title="Bollinger Bands Multiplier")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper_band = basis + dev
lower_band = basis - dev
// RSI parameters
rsi_length = input.int(14, title="RSI Length")
rsi = ta.rsi(src, rsi_length)
// Plot Bollinger Bands
plot(upper_band, color=color.red, linewidth=2, title="Upper Bollinger Band")
plot(lower_band, color=color.green, linewidth=2, title="Lower Bollinger Band")
plot(basis, color=color.blue, linewidth=1, title="Middle Band")
// Buy Condition
buy_condition = ta.crossover(close, lower_band) and rsi < 30
if buy_condition
strategy.entry("Buy", strategy.long)
// Sell Condition
sell_condition = ta.crossunder(close, upper_band) and rsi > 70
if sell_condition
strategy.entry("Sell", strategy.short)
// Exit Conditions (optional: use the middle Bollinger Band for exits)
exit_condition = ta.cross(close, basis)
if exit_condition
strategy.close("Buy")
strategy.close("Sell")
// Optional: Plot RSI for additional insight
hline(70, "Overbought", color=color.red)
hline(30, "Oversold", color=color.green)
plot(rsi, color=color.purple, title="RSI", linewidth=1, offset=-5)