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
Top 10 of 11 runs. The full list is in the table above.
The code
// ============================================================ // 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.
Setup
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.