The channel is the 20 EMA plus or minus 2 times ATR(10). A close above the upper line opens a long and a close below the lower line opens a short. Trades close when price crosses back through the 20 EMA or hit a 1% stop.
Best run of 16. Nasdaq 100, 30 min, spread 3, from run sweeps:2026-09-07-NAS100-30m-opt.tsv:14.
| 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 EMA length at the channel centre | 20 |
| atrPeriod ATR length for the channel width | 10 |
| atrMultiplier Channel width in ATRs each side | 2 |
| stopLossPct Protective stop as percent of entry price | 1 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| Nasdaq 100Best run | 30 min | n/a | 4,800 | 35.25 | 83.50 EUR | -7,693 |
| DAX 40 | 1 hour | n/a | 2,746 | 35.11 | 2,704 EUR | -5,869 |
| DAX 40 | 30 min | n/a | 4,712 | 34.85 | 2,020 EUR | -6,069 |
| Gold | 30 min | n/a | 4,251 | 34.30 | 602 EUR | -1,811 |
| Gold | 1 hour | n/a | 2,678 | 35.88 | 329 EUR | -1,231 |
| Gold | 5 min | n/a | 4,176 | 31.63 | -1,057 EUR | -1,442 |
| Gold | 15 min | n/a | 4,188 | 30.56 | -1,628 EUR | -2,510 |
| Nasdaq 100 | 5 min | n/a | 4,397 | 33.45 | -2,512 EUR | -4,879 |
| S&P 500 | 30 min | n/a | 4,754 | 33.24 | -2,548 EUR | -3,780 |
| S&P 500 | 5 min | n/a | 4,500 | 30.13 | -3,341 EUR | -3,392 |
| Nasdaq 100 | 1 hour | n/a | 3,124 | 33.13 | -3,904 EUR | -9,198 |
| S&P 500 | 1 hour | n/a | 3,061 | 34.20 | -4,081 EUR | -4,297 |
| S&P 500 | 15 min | n/a | 4,715 | 31.73 | -5,071 EUR | -5,160 |
| DAX 40 | 5 min | n/a | 4,727 | 29.41 | -11,029 EUR | -12,366 |
| DAX 40 | 15 min | n/a | 4,628 | 32.48 | -11,929 EUR | -14,467 |
| Nasdaq 100 | 15 min | n/a | 4,691 | 32.62 | -12,165 EUR | -12,494 |
Charts
Top 10 of 16 runs. The full list is in the table above.
The code
// ============================================================ // Keltner Breakout // ProRealAlgos Strategy Library | prorealalgos.com // Type: Breakout // Direction: Long & short // Timeframe tested: 30 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade bandPeriod = 20 // EMA at the centre of the channel atrPeriod = 10 // ATR length for the channel width atrMultiplier = 2 // channel width in ATRs each side stopLossPct = 1 // protective stop, percent of entry price // --- Indicators --- midBand = ExponentialAverage[bandPeriod](close) atrValue = AverageTrueRange[atrPeriod](close) upperBand = midBand + atrMultiplier * atrValue lowerBand = midBand - atrMultiplier * atrValue
27 more lines: the entry and exit rules.
Setup
Questions
Technically yes, but the tests do not support running it as is. The rewritten code was also not compile-checked.
DAX 40 1 hour made EUR 2,703.9, DAX 40 30 minutes EUR 2,019.8, and Gold on 30 minutes and 1 hour was slightly positive. The rest lost.
The best run drew down EUR 7,693 at position size 1, many times its net profit.
On 5 and 15 minute charts the 3 point spread eats a large share of each small move, and those were the worst results.
Related
Copy trading on US indices is available to ProRealAlgos members as spots open.