Join today
Strategies / Mean reversion / Bollinger Reversal

Bollinger Reversal Strategy for ProRealTime

This long only setup buys sharp selloffs. It waits for close to fall below 97.5% of the lower Bollinger band while RSI(10) is under 20 and the 200 period SMA is falling. The position is sold 2 bars later or stopped out at 2.5%.

Mean reversionLong onlySwingFTSE 1001 hour
1.74Profit factor
1,179Net profit EUR
58.12%Win rate
117Trades
-440Max drawdown
10.08Avg trade

Best run of 44. FTSE 100, 1 hour, spread 2, from run pf:2026-09-16-FTSE100-1h.tsv:1.

Entry rules, long

  1. The 200-period SMA is lower than 2 bars ago
  2. Members only
  3. RSI(10) is below 20

Exit rules

  1. Stop loss 2.5%
  2. Members only

Test conditions

PeriodUp to 2026-09-16
InstrumentFTSE 100, 1 hour
Spread2 points
Contracts1
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-16

Parameters

positionSize
Contracts per trade
1
bandPeriod
Band centre SMA
100
stdDevPeriod
Standard deviation length
10
bandWidth
Band width in deviations
1
bandDiscount
Close must be this fraction of the lower band
0.975
trendPeriod
Falling trend SMA
200
trendLag
Bars back for the trend comparison
2
rsiPeriod
RSI length
10
oversoldLevel
RSI entry level
20
maxBarsInTrade
Time exit bars
2
stopLossPct
Protective stop, percent
2.5

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
FTSE 100Best run1 hour1.74 11758.121,179 EUR-440
Nasdaq 1001 hour1.68 22851.753,243 EUR-554
DAX 4030 min1.39 14153.901,352 EUR-595
Nikkei 2251 hour1.23 14754.422,851 USD-2,071
USD/JPY1 hourn/a 3253.1262,610 JPY-42,220
EUR/USDDailyn/a 6160.6632,279 USD-4,852
USD/JPY15 minn/a 4100.0021,830 JPY-450
Nikkei 225Dailyn/a 4660.8711,659 USD-3,933
USD/JPY10 minn/a 1100.005,760 JPY-3,760
Silver2 minn/a 7858.973,833 USD-2,625
Dow Jones30 minn/a 4667.393,124 EUR-607
EUR/USD1 hourn/a 1181.822,932 USD-1,720
Nikkei 2255 minn/a 2669.232,654 USD-1,706
Dow Jones15 minn/a 2965.522,647 EUR-826
Nikkei 22510 minn/a 4148.782,092 USD-1,938
Dow Jones1 hourn/a 5149.021,910 EUR-1,748
DAX 40Dailyn/a 5543.641,871 EUR-1,039
Nasdaq 10015 minn/a 7557.331,830 EUR-745
Silver1 minn/a 2860.711,469 USD-912
Brent Crude2 minn/a 5265.381,197 EUR-731
Brent Crude5 minn/a 5552.73937 EUR-778
DAX 4015 minn/a 5966.10934 EUR-542
FTSE 10030 minn/a 7250.00875 EUR-367
Brent Crude1 minn/a 4247.62825 EUR-666
S&P 50030 minn/a 7463.51526 EUR-79.10
Dow Jones3 minn/a 366.67522 EUR-192
GoldDailyn/a 6858.82489 EUR-53.10
DAX 405 minn/a 837.50457 EUR-160
Dow Jones5 minn/a 366.67369 EUR-127
Nasdaq 1003 minn/a 850.00305 EUR-177
Gold30 minn/a 8355.42303 EUR-223
Nikkei 2252 minn/a 2100.00289 USD-225
Gold2 minn/a 1181.82256 EUR-92.50
Gold10 minn/a 2060.00256 EUR-161
DAX 403 minn/a 366.67242 EUR-187
S&P 50015 minn/a 3545.71207 EUR-182
Gold3 minn/a 1478.57191 EUR-191
Nikkei 2251 minn/a 2100.00138 USD-7.40
S&P 5005 minn/a 887.50118 EUR-27.25
Nasdaq 1002 minn/a 1100.00110 EUR-13.40
GBP/USD10 minn/a 1100.0095.30 USD-31.80
FTSE 10010 minn/a 650.0084.10 EUR-53.30
FTSE 1003 minn/a 1100.0083.50 EUR-14.30
S&P 5003 minn/a 366.6773.25 EUR-23.50

Charts

Results by run

Profit factor by run

Above 1.0 made money, below 1.0 lost money.

0.00.51.01.52.01.0 = break-evenFTSE 100 · 1 hour1.74Nasdaq 100 · 1 hour1.68DAX 40 · 30 min1.39Nikkei 225 · 1 hour1.23

Net profit against max drawdown

Net profitMax drawdown
0-50K-25K50K100KUSD/JPY · 1 hourEUR/USD · DailyUSD/JPY · 15 minNikkei 225 · DailyUSD/JPY · 10 minSilver · 2 minNasdaq 100 · 1 hourDow Jones · 30 minEUR/USD · 1 hourNikkei 225 · 1 hourNikkei 225 · 5 minDow Jones · 15 minNikkei 225 · 10 minDow Jones · 1 hourDAX 40 · DailyNasdaq 100 · 15 min

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 Reversal
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long only
// Timeframe tested: 1 hour
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false
DEFPARAM PreloadBars = 1000

// --- Parameters ---
positionSize = 1          // contracts per trade
bandPeriod = 100          // SMA at the centre of the band
stdDevPeriod = 10         // standard deviation length
bandWidth = 1             // band distance in standard deviations
bandDiscount = 0.975      // close must be this fraction of the lower band or lower
trendPeriod = 200         // SMA that must be falling
trendLag = 2              // compare the trend SMA with its value this many bars ago
rsiPeriod = 10            // RSI length
oversoldLevel = 20        // RSI must be below this
maxBarsInTrade = 2        // exit after this many bars
stopLossPct = 2.5         // protective stop, percent of entry price

// --- Indicators ---
midBand = Average[bandPeriod](close)
stdDevValue = STD[stdDevPeriod](close)
lowerBand = midBand - bandWidth * stdDevValue
trendMA = Average[trendPeriod](close)
rsiValue = RSI[rsiPeriod](close)

17 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • Absolute profit is small. The best run on FTSE 100 1 hour made 1,179.3 EUR over 117 trades, with a drawdown of 439.9 EUR.
  • Many market tests have too few trades to mean anything. USD/JPY 10 minutes had 1 trade and USD/JPY 15 minutes had 4.
  • Most rows in the market table have no recorded profit factor because they come from sweeps only.
  • It only buys. In a long falling market the entry filter (falling 200 SMA) keeps putting you into dips that keep dropping.

Indicators used

Bollinger BandsSMARSI

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

Does this run in ProOrder?

Yes. It is a ProOrder system with a fixed 2.5% stop loss and a 2 bar time exit, so every trade has a defined end.

How did it do on other markets?

Nasdaq 100 1 hour reached a profit factor of 1.68 and 3,243.1 EUR, and DAX 40 30 minutes reached 1.39. Nikkei 225 1 hour was weaker at 1.23 with a 2,071.4 USD drawdown.

What drawdown should I expect at 1 contract?

On FTSE 100 1 hour the worst drawdown was 439.9 EUR at 1 contract. The average trade was 10.08 EUR, so costs matter a lot here.

Why the 1 hour chart?

FTSE 100 1 hour gave the best profit factor, 1.74, and Nasdaq 100 1 hour was close at 1.68. The 2 bar time exit keeps trades short on hourly bars.

Related

Strategies like this one

Bollinger Squeeze

Uses the same indicator.

14.30 PF · 86 trades

DAX Survivor

Best run on the same market, FTSE 100.

1.17 PF · 1,514 trades

RSI(2) Trend Filter

A similar profit factor.

1.73 PF · 254 trades

Curious how dip buying systems perform next to trend systems? Get on the ProRealAlgos waitlist.

The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.

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