Three lower lows in a row inside a longer uptrend is the buy signal here. The trend check compares close with a moving average from 100 bars ago, and a pullback check uses the same average from 5 bars ago. The position is sold on the first close above the previous close.
Best run of 8. Nasdaq 100, Daily, spread 3, from run pf:2026-09-24-NAS100-D.tsv:5.
| Period | Up to 2026-09-25 |
| Instrument | Nasdaq 100, Daily |
| 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-25 |
| positionSize Contracts per trade | 1 |
| trendOffset Bars back for the trend average reading | 100 |
| pullbackOffset Bars back for the pullback average reading | 5 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| Nasdaq 100Best run | Daily | 1.98 | 286 | 56.29 | 5,391 EUR | -1,184 |
| Nikkei 225 | Daily | 1.64 | 227 | 67.40 | 12,611 USD | -3,001 |
| EUR/USD | 10 min | n/a | 3,668 | 45.37 | 49,141 USD | -23,197 |
| EUR/USD | 4 hours | n/a | 770 | 62.99 | 18,113 USD | -7,287 |
| GBP/USD | 4 hours | n/a | 840 | 62.50 | 2,069 USD | -1,088 |
| S&P 500 | Daily | n/a | 355 | 56.62 | 1,028 EUR | -456 |
| FTSE 100 | Daily | n/a | 252 | 63.89 | 934 EUR | -597 |
| Gold | Daily | n/a | 223 | 58.74 | 394 EUR | -160 |
Charts
Above 1.0 made money, below 1.0 lost money.
The code
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.
// ============================================================ // Three Lower Lows Reversion // ProRealAlgos Strategy Library | prorealalgos.com // Type: Mean reversion // Direction: Long only // Timeframe tested: Daily // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade trendOffset = 100 // bars back for the trend average reading pullbackOffset = 5 // bars back for the pullback average reading // --- Indicators --- // Default-length average read at two past bars, kept as tested trendReference = Average(close)[trendOffset] pullbackReference = Average(close)[pullbackOffset]
15 more lines: the entry and exit rules.
Read this first
Questions
Yes. The entry and the one exit rule are simple and fully coded. Remember there is no protective stop in the code.
Nikkei 225 Daily had a profit factor of 1.64 and 12,610.5 USD. EUR/USD, GBP/USD, S&P 500, FTSE 100 and Gold were all positive in the sweeps.
On Nasdaq 100 Daily the worst drawdown was 1,184 EUR at 1 contract, with an average trade of 18.85 EUR.
Three lower lows on a daily chart is a multi day pullback, which is the move this system tries to fade.
Related
Copy trading on US indices is available to ProRealAlgos members as spots open.