Join today
Strategies / Mean reversion / Bollinger Band Rejection

Bollinger Band Rejection Strategy

A long needs ADX(50) above 10, DI+ above DI-, and a bar whose low pierces the lower Bollinger Band but closes back above it. Shorts mirror this at the upper band. Each trade uses a 60 point stop and a 10 point target.

Mean reversionLong & shortSwingS&P 500Daily
n/aProfit factor
1,241Net profit EUR
80.65%Win rate
155Trades
-946Max drawdown
8.01Avg trade

Best run of 1. S&P 500, Daily, spread 1, from run sweeps:2026-09-20-USA500-D-opt.tsv:4.

Entry rules, long

  1. ADX(50) above 10
  2. DI+ above DI- (50)
  3. Members only

Entry rules, short

  1. ADX(50) above 10
  2. DI+ below DI- (50)
  3. Members only

Exit rules

  1. Members only
  2. Profit target of 10 points

Test conditions

PeriodUp to 2026-09-20
InstrumentS&P 500, Daily
Spread1 points
Contracts5
Starting capital1,000,000
CostsSpread only. Commissions and overnight financing are not included.
BarsUp to 200,000 bars, fewer where the instrument has less history
Last tested2026-09-20

Parameters

positionSize
Shares per trade, as published
5
adxPeriod
ADX length
50
adxThreshold
Minimum ADX
10
diPeriod
DI+ / DI- length
50
bandPeriod
Bollinger Band length
20
stopLossPoints
Protective stop (points)
60
takeProfitPoints
Profit target (points)
10

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
S&P 500Best runDailyn/a 15580.651,241 EUR-946

Charts

Results by run

Net profit against max drawdown

Net profitMax drawdown
0-1K-5001K2KS&P 500 · Daily

The code

ProBuilder, rewritten to house standard

Every file in the library uses the same header, the same section order and the same variable names. The numbers above were produced by the original version before the rewrite, and the rewrite has not yet been compiled in ProRealTime.

// ============================================================
// Bollinger Band Rejection
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long & short
// Timeframe tested: Daily
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false

// --- Parameters ---
positionSize = 5          // shares per trade, as published
adxPeriod = 50            // ADX length
adxThreshold = 10         // minimum ADX
diPeriod = 50             // DI+ / DI- length
bandPeriod = 20           // Bollinger Band length
stopLossPoints = 60       // protective stop (points)
takeProfitPoints = 10     // profit target (points)

// --- Indicators ---
adxValue = ADX[adxPeriod]
plusDI = DIplus[diPeriod](close)
minusDI = DIminus[diPeriod](close)
lowerBand = BollingerDown[bandPeriod](close)
upperBand = BollingerUp[bandPeriod](close)

16 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • The stop is six times the target, so a few losses can erase many wins even with an 80.65% win rate.
  • Only one run exists, on S&P 500 daily, with 155 trades.
  • Max drawdown of EUR 946.05 is large next to the EUR 1,241.20 net profit.
  • Profit factor was not recorded, because the result comes from sweep data only.

Indicators used

ADXDMIBollinger Bands

How to load it

  1. Copy the code with the copy button above the code block.
  2. In ProRealTime, open a chart of the instrument and timeframe you want to test, then open ProOrder > New trading system and choose "Create with programming".
  3. Paste the code, give the system a name and save it.
  4. Click "Backtest", set your own spread and position size, and run it before you consider trading it live.

Questions

About this strategy

Can it be automated?

Yes. The stop and target are coded, and it trades 5 contracts per signal in ProOrder.

What market was it tested on?

Only S&P 500 daily, which made EUR 1,241.20 over 155 trades with an average trade of EUR 8.01.

How much capital does 5 contracts need?

The max drawdown was EUR 946.05 at 5 contracts. Margin is set by your broker and not covered here.

Why daily bars?

Daily band rejections filter out much of the intraday noise, which matters when the target is only 10 points.

Related

Strategies like this one

Bollinger Squeeze

Uses the same indicator.

14.30 PF · 86 trades

Candle Body Sum Intraday

Best run on the same market, S&P 500.

2.86 PF · 124 trades

Monday Dip Buy

Also a mean reversion strategy.

n/a PF · 146 trades

Small targets need careful risk planning. Join the ProRealAlgos waitlist to see how we handle it.

Copy trading on US indices is available to ProRealAlgos members as spots open.

Past backtest results do not guarantee future results. This is not financial advice. Curated and maintained by ProRealAlgos. ProRealTime™ is a trademark of ProRealTime SAS. prorealalgos.comStatsDocs