Join today
Strategies / Mean reversion / Bollinger Mean Reversion

Bollinger Mean Reversion

When a whole bar opens and closes at or below the lower Bollinger Band (30), it buys. A bar fully at or above the upper band triggers a short. Positions exit when the close crosses the 180 SMA or an opposite signal reverses them.

Mean reversionLong & shortIntradayEUR/USD10 min
n/aProfit factor
25,920Net profit USD
55.92%Win rate
3,144Trades
-25,496Max drawdown
8.24Avg trade

Best run of 14. EUR/USD, 10 min, spread 1, from run sweeps:2026-09-26-EURUSD-10m-opt.tsv:2.

Entry rules, long

  1. Members only

Entry rules, short

  1. Members only

Exit rules

  1. Members only
  2. Cover when the close crosses above the 180 SMA
  3. An opposite signal reverses the position
  4. No stop loss or target

Test conditions

PeriodUp to 2026-09-26
InstrumentEUR/USD, 10 minutes
Spread1 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-26

Parameters

positionSize
Contracts per trade
1
bandPeriod
Bollinger Band length
30
exitPeriod
Exit when price crosses this simple moving average
180

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
EUR/USDBest run10 minn/a 3,14455.9225,920 USD-25,496
Silver1 hourn/a 1,80552.741,084,960 USD-567,835
EUR/USD1 hourn/a 2,83755.3462,539 USD-26,900
EUR/USD4 hoursn/a 70657.0852,407 USD-40,882
Dow JonesDailyn/a 21056.1920,830 EUR-8,615
Dow Jones4 hoursn/a 16259.8815,616 EUR-10,395
DAX 40Dailyn/a 26755.4311,947 EUR-11,170
US Crude Oil1 hourn/a 1,38856.6310,411 EUR-7,198
Nasdaq 1004 hoursn/a 50953.639,176 EUR-6,901
DAX 401 hourn/a 1,83256.338,587 EUR-6,508
Nasdaq 100Dailyn/a 16250.627,733 EUR-7,424
FTSE 1004 hoursn/a 48057.296,551 EUR-2,842
FTSE 100Dailyn/a 19462.375,964 EUR-4,080
GBP/USD4 hoursn/a 70054.575,724 USD-4,898

Charts

Results by run

Net profit against max drawdown

Net profitMax drawdown
0-1.0M-500K1.0M2.0MSilver · 1 hourEUR/USD · 1 hourEUR/USD · 4 hoursEUR/USD · 10 minDow Jones · DailyDow Jones · 4 hoursDAX 40 · DailyUS Crude Oil · 1 hourNasdaq 100 · 4 hoursDAX 40 · 1 hourNasdaq 100 · DailyFTSE 100 · 4 hoursFTSE 100 · DailyGBP/USD · 4 hours

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 Mean Reversion
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long & short
// Timeframe tested: 10 minutes
// ============================================================

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

// --- Parameters ---
positionSize = 1          // contracts per trade
bandPeriod = 30           // Bollinger Band length
exitPeriod = 180          // exit when price crosses this simple moving average

// --- Indicators ---
upperBand = BollingerUp[bandPeriod](close)
lowerBand = BollingerDown[bandPeriod](close)
exitMA = Average[exitPeriod](close)

25 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • There is no stop loss or target. The best run on EUR/USD 10 minutes drew down USD 25,496, almost as much as its USD 25,920 net profit.
  • Profit factor was not recorded, because every result comes from a parameter sweep.
  • Silver 1 hour made USD 1,084,960 in a sweep but with a USD 567,835 drawdown, so the swings can be very large.

Indicators used

Bollinger BandsSMA

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 I run it in ProOrder?

Yes, it is fully automated with no stop. The rewritten code was not compile-checked, so backtest it before live use.

Which markets were tested?

EUR/USD, GBP/USD, Silver, US Crude Oil and four stock indices, and every listed run was positive. Dow Jones daily made EUR 20,830.2 over 210 trades.

What drawdown came with 1 contract?

The EUR/USD 10 minute best run had a max drawdown of USD 25,496 at position size 1.

Why a 10 minute chart?

It produced the best recorded run on EUR/USD, with 3,144 trades giving a large sample.

Related

Strategies like this one

Bollinger Squeeze

Uses the same indicator.

14.30 PF · 86 trades

Slow MACD Slope

Best run on the same market, EUR/USD.

6.80 PF · 7,305 trades

Monday Dip Buy

Also a mean reversion strategy.

n/a PF · 146 trades

Band-based reversion is one of many ideas we test. Join the ProRealAlgos waitlist for the ones that trade live.

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