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.
Best run of 14. EUR/USD, 10 min, spread 1, from run sweeps:2026-09-26-EURUSD-10m-opt.tsv:2.
| Period | Up to 2026-09-26 |
| Instrument | EUR/USD, 10 minutes |
| Spread | 1 points |
| Contracts | 1 |
| Starting capital | 1,000,000 |
| Costs | Spread only. Commissions and overnight financing are not included. |
| Bars | Up to 200,000 bars, fewer where the instrument has less history |
| Last tested | 2026-09-26 |
| positionSize Contracts per trade | 1 |
| bandPeriod Bollinger Band length | 30 |
| exitPeriod Exit when price crosses this simple moving average | 180 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| EUR/USDBest run | 10 min | n/a | 3,144 | 55.92 | 25,920 USD | -25,496 |
| Silver | 1 hour | n/a | 1,805 | 52.74 | 1,084,960 USD | -567,835 |
| EUR/USD | 1 hour | n/a | 2,837 | 55.34 | 62,539 USD | -26,900 |
| EUR/USD | 4 hours | n/a | 706 | 57.08 | 52,407 USD | -40,882 |
| Dow Jones | Daily | n/a | 210 | 56.19 | 20,830 EUR | -8,615 |
| Dow Jones | 4 hours | n/a | 162 | 59.88 | 15,616 EUR | -10,395 |
| DAX 40 | Daily | n/a | 267 | 55.43 | 11,947 EUR | -11,170 |
| US Crude Oil | 1 hour | n/a | 1,388 | 56.63 | 10,411 EUR | -7,198 |
| Nasdaq 100 | 4 hours | n/a | 509 | 53.63 | 9,176 EUR | -6,901 |
| DAX 40 | 1 hour | n/a | 1,832 | 56.33 | 8,587 EUR | -6,508 |
| Nasdaq 100 | Daily | n/a | 162 | 50.62 | 7,733 EUR | -7,424 |
| FTSE 100 | 4 hours | n/a | 480 | 57.29 | 6,551 EUR | -2,842 |
| FTSE 100 | Daily | n/a | 194 | 62.37 | 5,964 EUR | -4,080 |
| GBP/USD | 4 hours | n/a | 700 | 54.57 | 5,724 USD | -4,898 |
Charts
Top 10 of 14 runs. The full list is in the table above.
The code
// ============================================================ // 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.
Setup
Questions
Yes, it is fully automated with no stop. The rewritten code was not compile-checked, so backtest it before live use.
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.
The EUR/USD 10 minute best run had a max drawdown of USD 25,496 at position size 1.
It produced the best recorded run on EUR/USD, with 3,144 trades giving a large sample.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.