On weekday bars, the system buys when both the 3-period DPO and the 3-period Repulse read above 0.1. It sells when either drops back below 0.1. A 1% stop loss and a 3% profit target cap each trade.
Best run of 11. EUR/USD, 2 min, spread 1, from run pf:2026-09-24-EURUSD-2m.tsv:2.
| Period | Up to 2026-09-24 |
| Instrument | EUR/USD, 2 minutes |
| 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 |
| firstTradeDay First trading weekday (Monday) | 1 |
| lastTradeDay Last trading weekday (Friday) | 5 |
| dpoPeriod DPO average length | 3 |
| dpoLevel DPO threshold | 0.1 |
| repulsePeriod Repulse smoothing length | 3 |
| repulseLevel Repulse threshold | 0.1 |
| stopLossPct Protective stop, percent | 1 |
| takeProfitPct Profit target, percent | 3 |
Every run
| Market | Timeframe | PF | Trades | Win % | Net | Max DD |
|---|---|---|---|---|---|---|
| EUR/USDBest run | 2 min | 2.87 | 104 | 53.85 | 128,475 USD | -7,141 |
| EUR/USD | 3 min | n/a | 69 | 55.07 | 89,267 USD | -5,801 |
| EUR/USD | 5 min | n/a | 49 | 44.90 | 38,766 USD | -14,279 |
| EUR/USD | 10 min | n/a | 23 | 43.48 | 16,536 USD | -5,776 |
| EUR/USD | 15 min | n/a | 13 | 53.85 | 15,969 USD | -7,247 |
| Dow Jones | Daily | n/a | 2,575 | 31.81 | 13,132 EUR | -6,706 |
| DAX 40 | 4 hours | n/a | 4,295 | 36.32 | 6,778 EUR | -4,670 |
| EUR/USD | 1 hour | n/a | 3 | 66.67 | 5,589 USD | -1,450 |
| DAX 40 | Daily | n/a | 1,874 | 33.72 | 5,115 EUR | -4,090 |
| EUR/USD | 4 hours | n/a | 1 | 100.00 | 3,518 USD | -0.00 |
| Gold | Daily | n/a | 2,375 | 29.43 | 1,825 EUR | -1,032 |
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.
// ============================================================ // Repulse DPO // ProRealAlgos Strategy Library | prorealalgos.com // Type: Momentum // Direction: Long only // Timeframe tested: 2 minutes // ============================================================ // --- Settings --- DEFPARAM CumulateOrders = false // --- Parameters --- positionSize = 1 // contracts per trade firstTradeDay = 1 // Monday lastTradeDay = 5 // Friday dpoPeriod = 3 // DPO average length dpoLevel = 0.1 // DPO must be above this repulsePeriod = 3 // Repulse smoothing length repulseLevel = 0.1 // Repulse must be above this stopLossPct = 1 // protective stop, percent takeProfitPct = 3 // profit target, percent // --- Indicators --- tradingDay = OpenDayOfWeek >= firstTradeDay AND OpenDayOfWeek <= lastTradeDay // Detrended Price Oscillator, written out dpoMA = Average[dpoPeriod](close) dpoShift = ROUND(dpoPeriod / 2) + 1 dpoValue = close - dpoMA[dpoShift] // Repulse, written out: buying pressure minus selling pressure bullPressure = 100 * (3 * close - 2 * low - open) / close bearPressure = 100 * (open + 2 * high - 3 * close) / close repulseValue = ExponentialAverage[repulsePeriod](bullPressure) - ExponentialAverage[repulsePeriod](bearPressure)
17 more lines: the entry and exit rules.
Read this first
Questions
Yes, at 1 contract, long only, with the stop and target coded in.
EUR/USD 2 minutes led with profit factor 2.87 and USD 128,475.00. Dow Jones daily, DAX 40 4 hours and daily, and Gold daily were also profitable.
The headline run had a max drawdown of USD 7,141.00. On DAX 40 4 hours it was EUR 4,670.10.
The sweep found the most profit on EUR/USD 2 minutes. The DAX 40 4 hour run still made EUR 6,777.70 over 4,295 trades.
Related
The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.