When price is on the wrong side of the Supertrend but already back across the 10 EMA, the system bets on a turn. It only trades when short-term ATR(15) is above the long ATR(425), so volatility is elevated. Exits come from a 2.5 x ATR(14) stop or a close back through the Supertrend, Bollinger middle line and 10 EMA.
Best run of 3. USD/JPY, Daily, spread 1, from run pf:2026-09-24-USDJPY-D.tsv:2.
| Period | Up to 2026-09-24 |
| Instrument | USD/JPY, Daily |
| Spread | 1 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-24 |
| positionSize Contracts per trade | 1 |
| signalPeriod EMA length | 10 |
| bandPeriod Bollinger Band length (middle line) | 25 |
| fastAtrPeriod Short ATR for the volatility filter | 15 |
| slowAtrPeriod Long ATR for the volatility filter | 425 |
| atrPeriod ATR for the stop | 14 |
| atrMultiplier Stop in ATR multiples | 2.5 |
| superTrendMultiplier Supertrend multiplier | 3 |
| superTrendPeriod Supertrend length | 10 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| USD/JPYBest run | Daily | 3.47 | 1,444 | 2.35 | 1,222,950 JPY | -240,380 |
| DAX 40 | 1 hour | n/a | 2,571 | 47.80 | 12,296 EUR | -5,278 |
| Brent Crude | 4 hours | n/a | 390 | 46.15 | 6,750 EUR | -4,696 |
Charts
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.
// ============================================================ // Supertrend Counter Trend // ProRealAlgos Strategy Library | prorealalgos.com // Type: Mean reversion // Direction: Long & short // Timeframe tested: Daily // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade signalPeriod = 10 // EMA length used for entries and exits bandPeriod = 25 // Bollinger Band length, only the middle line is used fastAtrPeriod = 15 // short ATR for the volatility filter slowAtrPeriod = 425 // long ATR for the volatility filter atrPeriod = 14 // ATR length for the stop distance atrMultiplier = 2.5 // stop distance in multiples of ATR superTrendMultiplier = 3 // Supertrend ATR multiple superTrendPeriod = 10 // Supertrend length // --- Indicators --- signalMA = ExponentialAverage[signalPeriod](close) midBand = (BollingerUp[bandPeriod](close) + BollingerDown[bandPeriod](close)) / 2 superTrendLine = Supertrend[superTrendMultiplier, superTrendPeriod] volatilityRising = AverageTrueRange[fastAtrPeriod](close) > AverageTrueRange[slowAtrPeriod](close)
31 more lines: the entry and exit rules.
Read this first
Questions
Yes, it trades 1 contract with an ATR stop set at entry.
USD/JPY daily reached profit factor 3.47 and JPY 1,222,950.00. DAX 40 1 hour (EUR 12,296.00) and Brent Crude 4 hours (EUR 6,750.10) were also profitable, with win rates of 47.8% and 46.15%.
JPY 240,380.00 on USD/JPY daily and EUR 5,277.50 on DAX 40 1 hour.
The ATR(425) filter needs a long history to compare against, and daily bars keep entries to strong volatility spells.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.