The strategy buys when the close drops below the lower Bollinger Band and stays above the 200-period EMA, and sells short on the mirror setup. Longs close above the upper band and shorts below the lower band, and each entry has a 3% stop loss.
Best run of 17. Brent Crude, 15 min, spread 3, from run sweeps:2026-10-04-BRENT-15m-opt.tsv:3.
| Period | Up to 2026-10-04 |
| Instrument | Brent Crude, 15 minutes |
| Spread | 3 points |
| 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-10-04 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| Brent CrudeBest run | 15 min | n/a | 2,246 | 65.45 | 5,570 EUR | -3,653 |
| USD/JPY | Daily | n/a | 162 | 53.70 | 466,340 USD | -462,300 |
| USD/JPY | 5 min | n/a | 1,975 | 66.43 | 204,290 USD | -101,890 |
| EUR/USD | 4 hours | n/a | 502 | 64.14 | 38,726 USD | -23,177 |
| Nikkei 225 | Daily | n/a | 165 | 38.18 | 19,690 USD | -7,284 |
| EUR/USD | 15 min | n/a | 2,167 | 66.31 | 19,042 USD | -9,805 |
| Dow Jones | 4 hours | n/a | 117 | 70.94 | 15,460 EUR | -6,186 |
| Dow Jones | Daily | n/a | 189 | 46.56 | 11,640 EUR | -4,410 |
| Nasdaq 100 | 4 hours | n/a | 360 | 63.33 | 11,057 EUR | -2,769 |
| GBP/USD | Daily | n/a | 156 | 58.97 | 7,576 USD | -3,824 |
| Brent Crude | 30 min | n/a | 1,469 | 62.83 | 5,592 EUR | -3,003 |
| US Crude Oil | 15 min | n/a | 2,210 | 65.84 | 4,862 EUR | -3,319 |
| Nasdaq 100 | Daily | n/a | 176 | 30.68 | 4,711 EUR | -3,327 |
| FTSE 100 | Daily | n/a | 134 | 50.75 | 4,423 EUR | -1,769 |
| S&P 500 | Daily | n/a | 201 | 46.77 | 2,728 EUR | -884 |
| S&P 500 | 4 hours | n/a | 365 | 65.75 | 1,146 EUR | -958 |
| Gold | 3 min | n/a | 2,005 | 63.29 | 1,136 EUR | -333 |
Charts
Top 10 of 17 runs. The full list is in the table above.
The code
// ============================================================== // Bollinger Band Reversion With EMA Filter // ProRealAlgos Strategy Library | prorealalgos.com // Type: Mean reversion // Direction: Long & short // Timeframe tested: 15 minutes // ============================================================== DEFPARAM CumulateOrders = false basis = Average[20](close) dev = 2.0 * STD[20](close) upper = basis + dev lower = basis - dev ema = ExponentialAverage[200](close)
18 more lines: the entry and exit rules.
Setup
Questions
Yes. The code is ProBuilder and runs as an automated ProOrder system. Backtest it on your own account with your own spread and position size before trading it live.
It was tested on 17 market and timeframe combinations. The best run by trade count was Brent Crude, 15 minutes, with 2,246 trades.
The best run had a maximum drawdown of 3,653 EUR at the tested position size, against a net result of 5,570 EUR.
It trades both long and short.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.