This intraday system fades closes outside the Bollinger Bands (20, 2), buying below the lower band and shorting above the upper band. Trades close when price returns to the 20-period middle band or a 1% stop is hit.
Best run of 16. Nasdaq 100, 30 min, spread 3, from run sweeps:2026-09-07-NAS100-30m-opt.tsv:8.
| Period | Up to 2026-09-07 |
| Instrument | Nasdaq 100, 30 minutes |
| Spread | 3 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-07 |
| positionSize Contracts per trade | 1 |
| bandPeriod Bollinger average and deviation length | 20 |
| bandWidth Band distance in standard deviations | 2 |
| stopLossPct Protective stop, percent of entry price | 1 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| Nasdaq 100Best run | 30 min | n/a | 9,756 | 53.35 | -42,800 EUR | -45,750 |
| S&P 500 | 1 hour | n/a | 6,394 | 56.16 | -4,483 EUR | -5,016 |
| Gold | 5 min | n/a | 7,706 | 60.72 | -5,926 EUR | -6,051 |
| S&P 500 | 15 min | n/a | 8,199 | 60.00 | -6,921 EUR | -7,596 |
| Gold | 15 min | n/a | 8,205 | 59.77 | -7,030 EUR | -7,165 |
| Gold | 1 hour | n/a | 6,127 | 55.83 | -7,362 EUR | -7,423 |
| S&P 500 | 5 min | n/a | 7,628 | 58.67 | -7,405 EUR | -7,888 |
| Gold | 30 min | n/a | 8,971 | 57.45 | -10,575 EUR | -10,670 |
| S&P 500 | 30 min | n/a | 9,046 | 56.59 | -11,498 EUR | -11,814 |
| DAX 40 | 15 min | n/a | 8,216 | 63.00 | -20,829 EUR | -24,876 |
| DAX 40 | 5 min | n/a | 7,510 | 62.37 | -24,178 EUR | -25,311 |
| Nasdaq 100 | 5 min | n/a | 7,659 | 61.39 | -25,752 EUR | -27,328 |
| Nasdaq 100 | 15 min | n/a | 8,587 | 60.55 | -25,855 EUR | -32,017 |
| Nasdaq 100 | 1 hour | n/a | 7,104 | 52.14 | -28,971 EUR | -31,276 |
| DAX 40 | 1 hour | n/a | 5,984 | 55.26 | -35,182 EUR | -37,773 |
| DAX 40 | 30 min | n/a | 9,124 | 60.32 | -47,270 EUR | -49,151 |
Charts
Top 10 of 16 runs. The full list is in the table above.
The code
// ============================================================ // Bollinger Fade // ProRealAlgos Strategy Library | prorealalgos.com // Type: Mean reversion // Direction: Long & short // Timeframe tested: 30 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade bandPeriod = 20 // Bollinger average and deviation length bandWidth = 2 // band distance in standard deviations stopLossPct = 1 // protective stop, percent of entry price // --- Indicators --- midBand = Average[bandPeriod](close) stdDevValue = STD[bandPeriod](close) upperBand = midBand + bandWidth*stdDevValue lowerBand = midBand - bandWidth*stdDevValue
26 more lines: the entry and exit rules.
Setup
Questions
Yes, it is written as an automated system with 1 contract per trade and a 1% stop loss. No tested run made money, so treat it as a baseline rather than a live candidate.
S&P 500, Gold, DAX 40 and Nasdaq 100 were tested on 5 minute to 1 hour charts. S&P 500 1 hour lost the least at EUR -4,482.65, and DAX 40 30 minutes lost the most at EUR -47,269.60.
The best listed run had a maximum drawdown of EUR 45,749.80 at 1 contract. Plan capital around drawdowns of that size, plus your broker margin.
Price often snaps back to the middle band, but when a trend keeps going the trade runs into the 1% stop. Those stop outs outweighed the many small wins.
Related
Copy trading on US indices is available to ProRealAlgos members as spots open.