0bps

Strategy vault / Breakout

RSI and Bollinger Bands Synergistic Swing Trading Strategy

This strategy is a swing trading system that combines the RSI indicator with Bollinger Bands. It identifies market overbought and oversold conditions while considering price positions within the Bollinger Bands for…

Author
ChaoZhang
Complexity
Starter · 61 lines
Parameters
0
Backtest bar
1h · intraday
Tested on
BTC/USDT · futures

IMG

Overview

This strategy is a swing trading system that combines the RSI indicator with Bollinger Bands. It identifies market overbought and oversold conditions while considering price positions within the Bollinger Bands for trading decisions. The strategy employs relatively relaxed RSI thresholds (overbought at 60, oversold at 40) and integrates Bollinger Band boundaries for entry and exit timing, along with a 2% profit-taking mechanism.

Strategy Principles

The core logic is based on several key components:

  1. RSI Indicator: Measures market overbought/oversold conditions using a 14-period calculation cycle.
  2. Bollinger Bands: Uses 20-period moving average as the middle band, with standard deviation multiplier of 2.0.
  3. 50-period Moving Average: Serves as trend reference.

Buy Conditions:

  • Price near or below lower Bollinger Band (1% buffer zone allowed)
  • RSI below 40 (oversold zone)

Sell Conditions:

  • Price near or above upper Bollinger Band (1% buffer zone allowed)
  • RSI above 60 (overbought zone)
  • Or 2% profit target reached

Strategy Advantages

  1. Multiple Confirmation Mechanism: Reduces false signals through RSI and Bollinger Bands synergy.
  2. Robust Risk Control: Clear profit targets prevent overholding positions.
  3. Flexible Parameters: Key parameters can be optimized for different market conditions.
  4. Cost Consideration: Includes commission (0.1%) and slippage (3 points) calculations.
  5. Good Visualization: Uses multiple colored lines and filled areas for intuitive signal display.

Strategy Risks

  1. Choppy Market Risk: May generate frequent trades in sideways markets. Solution: Add moving average filters or trend confirmation mechanisms.

  2. False Breakout Risk: Brief price breaks of Bollinger Bands may trigger false signals. Solution: Add confirmation periods or increase breakout requirements.

  3. Market Environment Dependency: Performance may vary across different market cycles. Solution: Dynamically adjust parameters based on market characteristics.

Optimization Directions

  1. Dynamic Parameter Optimization:
  • Automatically adjust Bollinger Bands standard deviation multiplier based on volatility
  • Dynamically adjust RSI thresholds based on market environment
  1. Additional Filters:
  • Add volume confirmation mechanism
  • Introduce trend strength indicators
  1. Stop Loss Optimization:
  • Add trailing stop functionality
  • Implement ATR-based dynamic stop losses

Summary

This strategy constructs a relatively robust swing trading system through the synergy of RSI and Bollinger Bands. Its main feature is maintaining trading opportunities while controlling risk through multiple confirmation mechanisms. While there are potential risks, the strategy's stability and reliability can be further improved through parameter optimization and additional filtering conditions. It is suitable for volatile markets but requires parameter adjustments based on specific market characteristics.

Source Pine Script

/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Adjusted Swing Trading for SBI", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3)

// Input Parameters
rsiLength = input.int(14, minval=1, title="RSI Length")
rsiOverbought = input.int(60, minval=50, maxval=100, title="RSI Overbought Level") // Relaxed level
rsiOversold = input.int(40, minval=0, maxval=50, title="RSI Oversold Level")       // Relaxed level
bbLength = input.int(20, minval=1, title="Bollinger Bands Length")
bbMult = input.float(2.0, minval=0.1, maxval=5, title="Bollinger Bands StdDev Multiplier")
maLength = input.int(50, minval=1, title="Moving Average Length")

// RSI Calculation
rsi = ta.rsi(close, rsiLength)

// Bollinger Bands Calculation
bbBasis = ta.sma(close, bbLength)
bbDev = bbMult * ta.stdev(close, bbLength)
bbUpper = bbBasis + bbDev
bbLower = bbBasis - bbDev

// Moving Average
ma = ta.sma(close, maLength)

// Buy Signal: Price near or below lower Bollinger Band AND RSI below oversold level
buySignal = (close <= bbLower * 1.01) and (rsi < rsiOversold)

// Sell Signal: Price near or above upper Bollinger Band OR RSI above overbought level
sellSignal = (close >= bbUpper * 0.99) or (rsi > rsiOverbought)

// Date Range Inputs
startDate = input(timestamp("2018-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2069-12-31 23:59"), title="End Date")
inDateRange = true

// Strategy Logic
if buySignal and inDateRange
    strategy.entry("Swing Long SBI", strategy.long)

if strategy.position_size > 0 and (sellSignal or close >= strategy.position_avg_price * 1.02)
    strategy.close("Swing Long SBI")

// Plotting
plot(bbBasis, title="Bollinger Bands Basis", color=color.blue)
plot(bbUpper, title="Bollinger Bands Upper", color=color.red)
plot(bbLower, title="Bollinger Bands Lower", color=color.green)
plot(ma, title="Moving Average", color=color.orange)
hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
plot(rsi, title="RSI", color=color.purple)

// Fill Bollinger Bands for Visualization
fill(plot(bbUpper), plot(bbLower), title="Bollinger Bands Background", color=color.rgb(33, 150, 243, 95))

Published by ChaoZhang on the FMZ strategy square · last modified 2025-01-06. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.

Build this with AgenKit

A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.

in Claude Code, Cursor, Codex & 4 more
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/RSI-and-Bollinger-Bands-Synergistic-Swing-Trading-Strategy.md
  1. npx agenkit install engineering-kit in your project
  2. Paste the command into your agent and approve each phase
  3. Get tests, backtest, risk controls and a paper-trading switch

Understand it first

Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.

Related specs

esc

Try , , or .

↑↓ move↵ open