Join today
Strategies / Mean reversion / Cumulative RSI Pullback

Cumulative RSI Pullback Strategy

This long-only system waits for price to hold above its 200-period SMA, then buys when the last two RSI(2) values add up to less than 35. It sells once that sum climbs above 65. Trades are short pullback bounces inside an uptrend.

Mean reversionLong onlySwingS&P 500Daily
2.11Profit factor
27,883Net profit EUR
63.23%Win rate
533Trades
-4,887Max drawdown
52.31Avg trade

Best run of 8. S&P 500, Daily, spread 1, from run pf:2026-09-24-USA500-D.tsv:9.

Entry rules, long

  1. Price is above the 200-period SMA
  2. Members only
  3. No long is open

Exit rules

  1. Members only
  2. No stop loss

Test conditions

PeriodUp to 2026-09-25
InstrumentS&P 500, Daily
Spread1 points
Contracts10
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-25

Parameters

positionSize
Contracts per trade, as tested
10
rsiPeriod
RSI length
2
sumPeriod
Bars of RSI added together
2
trendPeriod
Trend SMA length
200
entryLevel
Buy when the summed RSI is below this
35
exitLevel
Sell when the summed RSI is above this
65

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
S&P 500Best runDaily2.11 53363.2327,883 EUR-4,887
Nasdaq 100Daily2.10 40561.2394,132 EUR-14,939
Nikkei 225Daily1.93 32269.88314,817 USD-67,643
EUR/USDDailyn/a 30467.11354,950 USD-234,300
Dow JonesDailyn/a 49663.9163,435 EUR-54,685
US Crude OilDailyn/a 27963.4450,205 EUR-38,065
GBP/USD4 hoursn/a 1,10565.5229,849 USD-11,362
FTSE 100Dailyn/a 37566.4025,486 EUR-11,387

Charts

Results by run

Profit factor by run

Above 1.0 made money, below 1.0 lost money.

0.00.61.31.92.51.0 = break-evenS&P 500 · Daily2.11Nasdaq 100 · Daily2.10Nikkei 225 · Daily1.93

Net profit against max drawdown

Net profitMax drawdown
0-250K-125K250K500KEUR/USD · DailyNikkei 225 · DailyNasdaq 100 · DailyDow Jones · DailyUS Crude Oil · DailyGBP/USD · 4 hoursS&P 500 · DailyFTSE 100 · Daily

The code

ProBuilder, rewritten to house standard

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.

// ============================================================
// Cumulative RSI Pullback
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long only
// Timeframe tested: Daily
// ============================================================

// --- Settings ---
DEFPARAM CumulateOrders = false

// --- Parameters ---
positionSize = 10      // contracts per trade, as tested
rsiPeriod = 2          // RSI length
sumPeriod = 2          // bars of RSI added together
trendPeriod = 200      // long-term trend filter
entryLevel = 35        // buy when the summed RSI is below this
exitLevel = 65         // sell when the summed RSI is above this

// --- Indicators ---
cumulativeRsi = Summation[sumPeriod](RSI[rsiPeriod](close))
trendMA = Average[trendPeriod](close)

14 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • There is no stop loss. A pullback that turns into a crash is held until the RSI sum recovers.
  • On several markets the drawdown was large relative to profit, for example EUR/USD daily with USD 234,300.00 drawdown against USD 354,950.00 profit.
  • It only buys, so it has nothing to offer in a lasting bear market below the 200 SMA.
  • Tested with 10 contracts per trade, so results scale with that size and will look very different at 1 contract.

Indicators used

RSISMA

How to load it

  1. Copy the code with the copy button above 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.

Questions

About this strategy

Is this ready for ProOrder?

Yes. The rules are simple and fully coded for automated trading. The default position size is 10 contracts, matching the backtest.

Which markets did it work on?

S&P 500 daily gave profit factor 2.11 and EUR 27,882.80 over 533 trades. Nasdaq 100 daily (2.1) and Nikkei 225 daily (1.93) were close behind, and every market in the list was profitable.

What drawdown should I plan for?

At 10 contracts on S&P 500 daily the max drawdown was EUR 4,887.10. Scale that down in proportion if you trade fewer contracts.

Why daily bars?

The 200-period trend filter and the RSI(2) pullback idea are built around daily swings. A 4 hour test on GBP/USD produced 1,105 trades but a smaller edge per trade.

Related

Strategies like this one

Bollinger Squeeze

Uses the same indicator.

14.30 PF · 86 trades

Candle Body Sum Intraday

Best run on the same market, S&P 500.

2.86 PF · 124 trades

MA Slope Momentum

A similar profit factor.

2.11 PF · 126 trades

Pullback systems work best in a mix. Join the ProRealAlgos waitlist to see how.

Copy trading on US indices is available to ProRealAlgos members as spots open.

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