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
// ============================================================ // 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.
Setup
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.