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%.
Best run of 44. FTSE 100, 1 hour, spread 2, from run pf:2026-09-16-FTSE100-1h.tsv:1.
| Period | Up to 2026-09-16 |
| Instrument | FTSE 100, 1 hour |
| Spread | 2 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-16 |
| 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
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| FTSE 100Best run | 1 hour | 1.74 | 117 | 58.12 | 1,179 EUR | -440 |
| Nasdaq 100 | 1 hour | 1.68 | 228 | 51.75 | 3,243 EUR | -554 |
| DAX 40 | 30 min | 1.39 | 141 | 53.90 | 1,352 EUR | -595 |
| Nikkei 225 | 1 hour | 1.23 | 147 | 54.42 | 2,851 USD | -2,071 |
| USD/JPY | 1 hour | n/a | 32 | 53.12 | 62,610 JPY | -42,220 |
| EUR/USD | Daily | n/a | 61 | 60.66 | 32,279 USD | -4,852 |
| USD/JPY | 15 min | n/a | 4 | 100.00 | 21,830 JPY | -450 |
| Nikkei 225 | Daily | n/a | 46 | 60.87 | 11,659 USD | -3,933 |
| USD/JPY | 10 min | n/a | 1 | 100.00 | 5,760 JPY | -3,760 |
| Silver | 2 min | n/a | 78 | 58.97 | 3,833 USD | -2,625 |
| Dow Jones | 30 min | n/a | 46 | 67.39 | 3,124 EUR | -607 |
| EUR/USD | 1 hour | n/a | 11 | 81.82 | 2,932 USD | -1,720 |
| Nikkei 225 | 5 min | n/a | 26 | 69.23 | 2,654 USD | -1,706 |
| Dow Jones | 15 min | n/a | 29 | 65.52 | 2,647 EUR | -826 |
| Nikkei 225 | 10 min | n/a | 41 | 48.78 | 2,092 USD | -1,938 |
| Dow Jones | 1 hour | n/a | 51 | 49.02 | 1,910 EUR | -1,748 |
| DAX 40 | Daily | n/a | 55 | 43.64 | 1,871 EUR | -1,039 |
| Nasdaq 100 | 15 min | n/a | 75 | 57.33 | 1,830 EUR | -745 |
| Silver | 1 min | n/a | 28 | 60.71 | 1,469 USD | -912 |
| Brent Crude | 2 min | n/a | 52 | 65.38 | 1,197 EUR | -731 |
| Brent Crude | 5 min | n/a | 55 | 52.73 | 937 EUR | -778 |
| DAX 40 | 15 min | n/a | 59 | 66.10 | 934 EUR | -542 |
| FTSE 100 | 30 min | n/a | 72 | 50.00 | 875 EUR | -367 |
| Brent Crude | 1 min | n/a | 42 | 47.62 | 825 EUR | -666 |
| S&P 500 | 30 min | n/a | 74 | 63.51 | 526 EUR | -79.10 |
| Dow Jones | 3 min | n/a | 3 | 66.67 | 522 EUR | -192 |
| Gold | Daily | n/a | 68 | 58.82 | 489 EUR | -53.10 |
| DAX 40 | 5 min | n/a | 8 | 37.50 | 457 EUR | -160 |
| Dow Jones | 5 min | n/a | 3 | 66.67 | 369 EUR | -127 |
| Nasdaq 100 | 3 min | n/a | 8 | 50.00 | 305 EUR | -177 |
| Gold | 30 min | n/a | 83 | 55.42 | 303 EUR | -223 |
| Nikkei 225 | 2 min | n/a | 2 | 100.00 | 289 USD | -225 |
| Gold | 2 min | n/a | 11 | 81.82 | 256 EUR | -92.50 |
| Gold | 10 min | n/a | 20 | 60.00 | 256 EUR | -161 |
| DAX 40 | 3 min | n/a | 3 | 66.67 | 242 EUR | -187 |
| S&P 500 | 15 min | n/a | 35 | 45.71 | 207 EUR | -182 |
| Gold | 3 min | n/a | 14 | 78.57 | 191 EUR | -191 |
| Nikkei 225 | 1 min | n/a | 2 | 100.00 | 138 USD | -7.40 |
| S&P 500 | 5 min | n/a | 8 | 87.50 | 118 EUR | -27.25 |
| Nasdaq 100 | 2 min | n/a | 1 | 100.00 | 110 EUR | -13.40 |
| GBP/USD | 10 min | n/a | 1 | 100.00 | 95.30 USD | -31.80 |
| FTSE 100 | 10 min | n/a | 6 | 50.00 | 84.10 EUR | -53.30 |
| FTSE 100 | 3 min | n/a | 1 | 100.00 | 83.50 EUR | -14.30 |
| S&P 500 | 3 min | n/a | 3 | 66.67 | 73.25 EUR | -23.50 |
Charts
Top 10 of 44 runs. The full list is in the table above.
Above 1.0 made money, below 1.0 lost money.
The code
// ============================================================ // 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.
Setup
Questions
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.
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.
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.
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
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.