Big Three buys when the whole bar sits above the 20, 40 and 80 period SMAs and price turns back up after a single down close. Shorts mirror this below the averages. Exits combine a stop sized from the 80 SMA, a target at a multiple of that stop, a time exit and a trailing stop.
Best run of 13. USD/JPY, 15 min, spread 1, from run sweeps:2026-09-17-USDJPY-15m-opt.tsv:2.
| Period | Up to 2026-09-17 |
| Instrument | USD/JPY, 15 minutes |
| Spread | 1 points |
| Contracts | 2 |
| 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-17 |
| positionSize Contracts per trade, as published | 2 |
| fastPeriod Fast SMA length | 20 |
| midPeriod Middle SMA length | 40 |
| slowPeriod Slow SMA length, also the exit line | 80 |
| lookbackPeriod Bars for the new high / new low test | 3 |
| longStopMin Smallest long stop distance (price units) | 30 |
| longStopMax Largest long stop distance | 80 |
| shortStopMin Smallest short stop distance | 5 |
| shortStopMax Largest short stop distance | 60 |
| longTargetRatio Long target as a multiple of the stop distance | 2.6 |
| shortTargetRatio Short target as a multiple of the stop distance | 2.5 |
| longTrailDivisor Long trailing distance = long target / this | 1.5 |
| shortTrailDivisor Short trailing distance = short target / this | 1 |
| longMaxBarsProfit Close a winning long after this many bars | 78 |
| longMaxBarsLoss Close a losing long after this many bars | 66 |
| shortMaxBarsProfit Close a winning short after this many bars | 60 |
| shortMaxBarsLoss Close a losing short after this many bars | 54 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| USD/JPYBest run | 15 min | n/a | 3,804 | 45.66 | 487,380 JPY | -259,540 |
| USD/JPY | Daily | n/a | 518 | 82.05 | 4,370,620 JPY | -781,820 |
| EUR/USD | Daily | n/a | 533 | 78.61 | 99,572 USD | -97,946 |
| DAX 40 | 1 hour | n/a | 2,590 | 33.05 | 22,323 EUR | -7,109 |
| Silver | Daily | n/a | 326 | 30.98 | 20,833 USD | -12,092 |
| GBP/USD | Daily | n/a | 538 | 81.97 | 18,414 USD | -13,368 |
| Gold | 30 min | n/a | 3,314 | 31.80 | 5,333 EUR | -1,622 |
| DAX 40 | Daily | n/a | 450 | 32.22 | 4,611 EUR | -4,000 |
| Gold | 1 hour | n/a | 2,124 | 34.37 | 4,353 EUR | -1,290 |
| Nasdaq 100 | Daily | n/a | 355 | 33.52 | 3,741 EUR | -3,668 |
| Gold | Daily | n/a | 298 | 32.89 | 3,028 EUR | -1,223 |
| Brent Crude | Daily | n/a | 231 | 31.17 | 2,949 EUR | -1,947 |
| Gold | 4 hours | n/a | 645 | 31.63 | 2,453 EUR | -2,093 |
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.
// ============================================================ // Big Three // ProRealAlgos Strategy Library | prorealalgos.com // Type: Trend // Direction: Long & short // Timeframe tested: 15 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false DEFPARAM PreloadBars = 10000 // --- Parameters --- positionSize = 2 // contracts per trade, as published fastPeriod = 20 // fast SMA length midPeriod = 40 // middle SMA length slowPeriod = 80 // slow SMA length, also the exit line lookbackPeriod = 3 // bars for the new high / new low test longStopMin = 30 // smallest long stop distance (price units) longStopMax = 80 // largest long stop distance shortStopMin = 5 // smallest short stop distance shortStopMax = 60 // largest short stop distance longTargetRatio = 2.6 // long target as a multiple of the stop distance shortTargetRatio = 2.5 // short target as a multiple of the stop distance longTrailDivisor = 1.5 // long trailing distance = long target / this shortTrailDivisor = 1 // short trailing distance = short target / this longMaxBarsProfit = 78 // close a winning long after this many bars longMaxBarsLoss = 66 // close a losing long after this many bars shortMaxBarsProfit = 60 // close a winning short after this many bars shortMaxBarsLoss = 54 // close a losing short after this many bars // --- Indicators --- fastMA = Average[fastPeriod](close) midMA = Average[midPeriod](close) slowMA = Average[slowPeriod](close) // Whole bar above all three averages and making a new short-term high. aboveAllMAs = low > slowMA AND low > midMA AND low > fastMA newHigh = high >= Highest[lookbackPeriod](high) longSetup = aboveAllMAs AND newHigh longReversalCandle = close[1] < close[2] AND close > close[1] AND close > open belowAllMAs = high < fastMA AND high < midMA AND high < slowMA newLow = low <= Lowest[lookbackPeriod](low) shortSetup = belowAllMAs AND newLow shortReversalCandle = close[1] > close[2] AND close < close[1] AND close < open
86 more lines: the entry and exit rules.
Read this first
Questions
Yes, the code uses standard ProOrder instructions for entries, stops and targets. It has not been compile checked after the rewrite, so test it in ProBacktest first.
USD/JPY, EUR/USD, DAX 40, Silver, GBP/USD, Gold, Nasdaq 100 and Brent Crude. All listed runs were profitable, from JPY 4,370,620 on USD/JPY Daily down to EUR 2,453 on Gold 4 hours.
With 2 contracts the best run had a max drawdown of JPY 259,540 on USD/JPY 15 minutes. On DAX 40 1 hour it was EUR 7,108.8, so the risk depends heavily on the instrument.
The rules are bar based, so they work on any timeframe. The 15 minute USD/JPY run gave the most trades, 3,804, which gives the widest sample on this page.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.