Join today
Strategies / Mean reversion / RSI 2 Trend Pullback

RSI 2 Trend Pullback

Short-term oversold dips get bought when the trend is up: close above the 50-period SMA and RSI(2) at or below 10. The short side mirrors this with RSI(2) at or above 90 below the SMA. Longs close when RSI(2) rises above 70 and shorts when it falls below 30.

Mean reversionLong & shortSwingNasdaq 100Daily
1.76Profit factor
9,598Net profit EUR
64.64%Win rate
362Trades
-2,311Max drawdown
26.51Avg trade

Best run of 16. Nasdaq 100, Daily, spread 3, from run pf:2026-09-24-NAS100-D.tsv:9.

Entry rules, long

  1. Close is above the 50-period SMA
  2. Members only
  3. No position is open

Entry rules, short

  1. Close is below the 50-period SMA
  2. Members only
  3. No position is open

Exit rules

  1. Members only
  2. Close a short when RSI(2) falls below 30
  3. No stop loss or target

Test conditions

PeriodUp to 2026-09-25
InstrumentNasdaq 100, Daily
Spread3 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-25

Parameters

positionSize
Contracts per trade
1
trendPeriod
Trend SMA length
50
rsiPeriod
RSI length
2
oversoldLevel
Long entry RSI level
10
overboughtLevel
Short entry RSI level
90
rsiLongExitLevel
Long exit RSI level
70
rsiShortExitLevel
Short exit RSI level
30

Every run

Markets and timeframes tested

MarketTimeframePFTradesWin %NetMax DD
Nasdaq 100Best runDaily1.76 36264.649,598 EUR-2,311
Nikkei 225Daily1.59 37670.4832,357 USD-7,418
EUR/USD4 hours1.24 1,50066.3365,302 USD-11,595
USD/JPY30 min1.12 6,23365.79445,850 JPY-86,410
USD/JPY1 hourn/a 4,41065.92366,760 JPY-180,260
EUR/USDDailyn/a 42566.3546,134 USD-22,111
EUR/USD1 hourn/a 5,56865.5926,731 USD-25,853
EUR/USD30 minn/a 6,17164.0415,715 USD-10,522
Dow JonesDailyn/a 48963.6013,727 EUR-6,698
US Crude OilDailyn/a 36266.8511,586 EUR-3,281
Dow Jones4 hoursn/a 34766.869,634 EUR-2,902
Silver1 hourn/a 3,68859.039,291 USD-7,430
Brent CrudeDailyn/a 16663.257,322 EUR-2,397
GBP/USD1 hourn/a 5,50666.585,017 USD-2,307
DAX 40Dailyn/a 52763.573,598 EUR-2,962
S&P 500Dailyn/a 53658.402,001 EUR-872

Charts

Results by run

Profit factor by run

Above 1.0 made money, below 1.0 lost money.

0.00.51.01.52.01.0 = break-evenNasdaq 100 · Daily1.76Nikkei 225 · Daily1.59EUR/USD · 4 hours1.24USD/JPY · 30 min1.12

Net profit against max drawdown

Net profitMax drawdown
0-200K-100K250K500KUSD/JPY · 30 minUSD/JPY · 1 hourEUR/USD · 4 hoursEUR/USD · DailyNikkei 225 · DailyEUR/USD · 1 hourEUR/USD · 30 minDow Jones · DailyUS Crude Oil · DailyDow Jones · 4 hoursNasdaq 100 · DailySilver · 1 hourBrent Crude · DailyGBP/USD · 1 hourDAX 40 · DailyS&P 500 · 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.

// ============================================================
// RSI 2 Trend Pullback
// ProRealAlgos Strategy Library  |  prorealalgos.com
// Type: Mean reversion
// Direction: Long & short
// Timeframe tested: Daily
// ============================================================

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

// --- Parameters ---
positionSize = 1          // contracts per trade
trendPeriod = 50          // SMA that sets the allowed direction
rsiPeriod = 2             // RSI length
oversoldLevel = 10        // buy at or below this RSI in an uptrend
overboughtLevel = 90      // short at or above this RSI in a downtrend
rsiLongExitLevel = 70     // close longs above this RSI
rsiShortExitLevel = 30    // close shorts below this RSI

// --- Indicators ---
trendMA = Average[trendPeriod](close)
rsiValue = RSI[rsiPeriod](close)

27 more lines: the entry and exit rules.

Read this first

Known weaknesses

  • There is no stop loss or target, so a dip that keeps falling is held until RSI(2) recovers.
  • The best run on Nasdaq 100 daily had a max drawdown of EUR 2,311.4 against EUR 9,598.1 net profit.
  • Recorded profit factors outside the best run are lower: 1.24 on EUR/USD 4 hours and 1.12 on USD/JPY 30 minutes.

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

Can RSI 2 Trend Pullback run in ProOrder?

Yes, every rule is automatable. The code was rewritten after testing and not compile-checked, so run it in ProBacktest first.

Which markets were tested?

Indices, currency pairs, oil and Silver, and every listed run was profitable. Nikkei 225 daily recorded a profit factor of 1.59 over 376 trades.

What is the risk at 1 contract?

The Nasdaq 100 daily run had a max drawdown of EUR 2,311.4 at position size 1, with a 64.64% win rate.

Why daily bars?

The daily chart gave the best recorded run, and the 50-period trend filter reads cleaner there than on intraday charts.

Related

Strategies like this one

Bollinger Squeeze

Uses the same indicator.

14.30 PF · 86 trades

Negated Hammer

Best run on the same market, Nasdaq 100.

3.20 PF · 372 trades

Vectorial Slope

A similar profit factor.

1.76 PF · 268 trades

Short-term pullback systems are part of what we trade. 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