Join waitlist
Strategies / Momentum / Repulse DPO

Repulse DPO Strategy

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.

MomentumLong onlyIntradayEUR/USD2 min
2.87Profit factor
128,475Net profit USD
53.85%Win rate
104Trades
-7,141Max drawdown
1,235Avg trade

Best run of 11. EUR/USD, 2 min, spread 1, from run pf:2026-09-24-EURUSD-2m.tsv:2.

Entry rules, long

  1. The bar opens Monday to Friday
  2. 3-period Repulse is above 0.1

Exit rules

  1. Stop loss 1%
  2. Profit target 3%

Test conditions

PeriodUp to 2026-09-24
InstrumentEUR/USD, 2 minutes
Spread1 points
Contracts1
Starting capital1,000,000
CostsSpread only. Commissions and overnight financing are not included.
BarsUp to 200,000 bars, fewer where the instrument has less history
Last tested2026-09-24
Parameters (9)
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

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
EUR/USDBest run2 min2.87 10453.85128,475 USD-7,141
EUR/USD3 minn/a 6955.0789,267 USD-5,801
EUR/USD5 minn/a 4944.9038,766 USD-14,279
EUR/USD10 minn/a 2343.4816,536 USD-5,776
EUR/USD15 minn/a 1353.8515,969 USD-7,247
Dow JonesDailyn/a 2,57531.8113,132 EUR-6,706
DAX 404 hoursn/a 4,29536.326,778 EUR-4,670
EUR/USD1 hourn/a 366.675,589 USD-1,450
DAX 40Dailyn/a 1,87433.725,115 EUR-4,090
EUR/USD4 hoursn/a 1100.003,518 USD-0.00
GoldDailyn/a 2,37529.431,825 EUR-1,032

Charts

Results by run

Top 10 of 11 runs. The full list is in the table above.

Net profitMax drawdown

The code

ProBuilder, rewritten to house standard

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

How to load it

  1. Copy the code with the copy button on the code block.
  2. In ProRealTime, open a chart of the instrument and timeframe you want to test, then open ProOrder > New trading system and choose "Create with programming".
  3. Paste the code, give the system a name and save it.
  4. Click "Backtest", set your own spread and position size, and run it before you consider trading it live.

Indicators used

DPORepulse
Read this firstKnown weaknesses4 points
  • The best run has only 104 trades, and several EUR/USD runs have very few (23, 13, 3 and even 1 trade).
  • Results swing sharply by timeframe on EUR/USD, from 104 trades on 2 minutes to a single trade on 4 hours.
  • Profit factor is only recorded for the headline run. The rest come from sweep data.
  • On DAX 40 and Gold daily the win rate fell to around 30% (33.72% and 29.43%).

Questions

About this strategy

Can it run automatically in ProOrder?

Yes, at 1 contract, long only, with the stop and target coded in.

Where was it tested?

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.

What risk comes with 1 contract?

The headline run had a max drawdown of USD 7,141.00. On DAX 40 4 hours it was EUR 4,670.10.

Why a 2 minute chart when the name says DAX 4 hours?

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

Strategies like this one

Seasonal Momentum Long

Uses the same indicator.

1.57 PF · 195 trades

Slow MACD Slope

Best run on the same market, EUR/USD.

6.80 PF · 7,305 trades

Candle Body Sum Intraday

A similar profit factor.

2.86 PF · 124 trades

Momentum entries need a plan around them. Join the ProRealAlgos waitlist.

The ProRealAlgos community gets the full rules, the complete code and the automated portfolio.

Past backtest results do not guarantee future results. This is not financial advice. Curated and maintained by ProRealAlgos. ProRealTime™ is a trademark of ProRealTime SAS. prorealalgos.comStatsDocs