This strategy is a mean reversion trading system that combines Bollinger Bands and Relative Strength Index (RSI). It identifies extreme price deviations from the mean and uses RSI overbought/oversold signals to determine trading opportunities. Buy signals are generated when price breaks below the lower Bollinger Band and RSI is in oversold territory, while sell signals occur when price breaks above the upper Bollinger Band and RSI is in overbought territory.
The core logic is based on the mean reversion characteristic of financial markets. The implementation uses a 20-day Simple Moving Average (SMA) as the mean reference, with a standard deviation multiplier of 2.0 for Bollinger Band width calculation. A 14-day RSI is integrated as a supplementary indicator, with 70 and 30 set as overbought and oversold thresholds respectively. Trades are only triggered when price breaks the Bollinger Bands and RSI reaches extreme values, creating a dual confirmation mechanism that enhances strategy reliability.
This strategy constructs a robust mean reversion trading system through the synergy of Bollinger Bands and RSI. The strategy design is reasonable with good scalability and adaptability. Through continuous optimization and improvement, the strategy’s stability and profitability can be further enhanced. It is recommended to conduct thorough backtesting before live trading and adjust parameters according to specific market characteristics.
/*backtest start: 2024-11-19 00:00:00 end: 2024-12-18 08:00:00 period: 2h basePeriod: 2h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Mean Reversion Strategy", overlay=true) // User Inputs length = input.int(20, title="SMA Length") // Moving Average length stdDev = input.float(2.0, title="Standard Deviation Multiplier") // Bollinger Band deviation rsiLength = input.int(14, title="RSI Length") // RSI calculation length rsiOverbought = input.int(70, title="RSI Overbought Level") // RSI overbought threshold rsiOversold = input.int(30, title="RSI Oversold Level") // RSI oversold threshold // Bollinger Bands sma = ta.sma(close, length) // Calculate the SMA stdDevValue = ta.stdev(close, length) // Calculate Standard Deviation upperBand = sma + stdDev * stdDevValue // Upper Bollinger Band lowerBand = sma - stdDev * stdDevValue // Lower Bollinger Band // RSI rsi = ta.rsi(close, rsiLength) // Calculate RSI // Plot Bollinger Bands plot(sma, color=color.orange, title="SMA") // Plot SMA plot(upperBand, color=color.red, title="Upper Bollinger Band") // Plot Upper Band plot(lowerBand, color=color.green, title="Lower Bollinger Band") // Plot Lower Band // Plot RSI Levels (Optional) hline(rsiOverbought, "Overbought Level", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "Oversold Level", color=color.green, linestyle=hline.style_dotted) // Buy and Sell Conditions buyCondition = (close < lowerBand) and (rsi < rsiOversold) // Price below Lower Band and RSI Oversold sellCondition = (close > upperBand) and (rsi > rsiOverbought) // Price above Upper Band and RSI Overbought // Execute Strategy if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short) // Optional: Plot Buy/Sell Signals plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, title="Buy Signal") plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Sell Signal")