The system adds up candle body changes over 578 bars. A long starts when a negative reading turns up, and a short when a reading above 46 pips turns down. It trades Monday to Thursday and simply reverses on the next opposite signal.
Best run of 30. GBP/USD, Daily, spread 1.5, from run sweeps:2026-09-24-GBPUSD-D-opt.tsv:12.
| Period | Up to 2026-09-24 |
| Instrument | GBP/USD, Daily |
| Spread | 1.5 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 |
| sumPeriod Bars summed for the body-change total | 578 |
| signalDirection 1 follows the signal, -1 trades it the other way | 1 |
| upperThreshold Body total must exceed this many pips to count as positive | 46 |
| lowerThreshold Body total must be below minus this many pips to count as negative | 1 |
| fridayNumber Entries only on days before this day of the week | 5 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| GBP/USDBest run | Daily | n/a | 2,768 | 55.82 | 22,664 USD | -6,961 |
| USD/JPY | 30 min | n/a | 816 | 52.45 | 580,770 JPY | -287,110 |
| USD/JPY | 10 min | n/a | 270 | 54.07 | 443,400 JPY | -272,930 |
| USD/JPY | 15 min | n/a | 408 | 52.94 | 415,510 JPY | -260,690 |
| EUR/USD | 5 min | n/a | 84 | 46.43 | 219,192 USD | -127,561 |
| EUR/USD | 15 min | n/a | 114 | 53.51 | 156,188 USD | -76,477 |
| Silver | 30 min | n/a | 1,358 | 54.27 | 61,180 USD | -19,736 |
| Dow Jones | Daily | n/a | 1,917 | 54.51 | 16,250 EUR | -10,331 |
| Nasdaq 100 | 4 hours | n/a | 2,445 | 56.07 | 15,520 EUR | -12,122 |
| Nasdaq 100 | Daily | n/a | 1,171 | 55.34 | 12,555 EUR | -11,248 |
| S&P 500 | 30 min | n/a | 198 | 53.03 | 6,623 EUR | -1,732 |
| S&P 500 | 1 hour | n/a | 270 | 50.00 | 5,583 EUR | -1,459 |
| S&P 500 | 15 min | n/a | 122 | 56.56 | 4,779 EUR | -1,353 |
| Gold | 30 min | n/a | 88 | 53.41 | 4,656 EUR | -1,236 |
| Gold | Daily | n/a | 138 | 55.80 | 4,444 EUR | -1,652 |
| S&P 500 | Daily | n/a | 343 | 53.06 | 3,968 EUR | -1,261 |
| FTSE 100 | 10 min | n/a | 92 | 56.52 | 3,938 EUR | -1,349 |
| FTSE 100 | 5 min | n/a | 46 | 63.04 | 3,780 EUR | -1,400 |
| Gold | 4 hours | n/a | 120 | 55.00 | 3,726 EUR | -1,626 |
| Gold | 1 hour | n/a | 122 | 58.20 | 3,550 EUR | -2,028 |
| S&P 500 | 4 hours | n/a | 432 | 53.70 | 3,414 EUR | -2,021 |
| S&P 500 | 10 min | n/a | 46 | 47.83 | 2,710 EUR | -1,562 |
| S&P 500 | 5 min | n/a | 34 | 52.94 | 2,439 EUR | -1,459 |
| Gold | 15 min | n/a | 72 | 37.50 | 2,438 EUR | -2,106 |
| Gold | 10 min | n/a | 50 | 50.00 | 2,332 EUR | -1,599 |
| Gold | 5 min | n/a | 48 | 37.50 | 2,067 EUR | -1,687 |
| S&P 500 | 3 min | n/a | 32 | 56.25 | 1,913 EUR | -1,323 |
| Gold | 3 min | n/a | 28 | 53.57 | 1,803 EUR | -1,562 |
| FTSE 100 | 3 min | n/a | 38 | 57.89 | 1,755 EUR | -1,372 |
| S&P 500 | 1 min | n/a | 4 | 50.00 | 734 EUR | -587 |
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.
// ============================================================ // Universal X-Body // ProRealAlgos Strategy Library | prorealalgos.com // Type: Momentum // Direction: Long & short // Timeframe tested: Daily // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade sumPeriod = 578 // bars summed for the body-change total signalDirection = 1 // 1 follows the signal, -1 trades it the other way upperThreshold = 46 // body total must exceed this many pips to count as positive lowerThreshold = 1 // body total must be below minus this many pips to count as negative fridayNumber = 5 // entries only on days before this day of the week // --- Indicators --- // Running total of how much each candle body changed versus the previous one. bodySize = close - open bodyChange = bodySize - bodySize[1] bodySum = Summation[sumPeriod](bodyChange) // Last clearly positive and last clearly negative reading; both hold until updated. IF bodySum > upperThreshold * PipSize THEN positiveSum = bodySum ENDIF IF bodySum < (0 - lowerThreshold) * PipSize THEN negativeSum = bodySum ENDIF negativeFading = negativeSum > negativeSum[1] positiveFading = positiveSum < positiveSum[1] // Trade bias holds until the opposite condition appears. IF negativeFading THEN tradeBias = 1 * signalDirection ELSIF positiveFading THEN tradeBias = (0 - 1) * signalDirection ENDIF
13 more lines: the entry and exit rules.
Read this first
Questions
Yes. It runs in ProOrder at 1 contract and needs no stop or target settings.
GBP/USD daily is the headline run at USD 22,663.70 over 2,768 trades. Every tested run was profitable, across forex, indices, gold and silver.
GBP/USD daily had a max drawdown of USD 6,961.20 at 1 contract.
A 578-bar sum on daily data reflects long-term body momentum. On faster charts the same setting covers only days, and results varied more.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.