Does the RSI Expert Advisor (EA) work? RSI 30/70 backtested on 8 markets
RSI is the first oscillator almost every trader learns, and "oversold means buy" is the first thing they are taught to do with it. It is also the single most common logic in free Expert Advisors. What almost nobody publishes is what happens when you actually run it, unchanged, across a basket of markets. So we did.
The rules we tested
- Long when RSI(14) crosses back above 30. Short when it crosses back below 70.
- Stop loss: 2 × ATR(14) from entry.
- Take profit: 1.5 × the risked distance.
- Position size: 1% of balance risked per trade. One position at a time.
- Evaluated once per bar close. No session filter, no news filter, no discretion.
Identical rules on every market — no per-symbol tuning. A strategy that only works after you tune it separately for each instrument is not a strategy, it is a curve fit.
Results: 8 markets × 2 timeframes
| Market | TF · config | Trades | Return | PF | Max DD | Win | OOS trades / PF | Grade |
|---|---|---|---|---|---|---|---|---|
| EURUSD | H1 · RSI 30/70 | 289 | -26.27% | 0.83 | 31.45% | 36.0% | 52 / 1.17 | D 37.6 |
| EURUSD | H4 · RSI 30/70 | 77 | +0.71% | 1.02 | 10.81% | 40.3% | 9 / 0.88 | D 44.8 |
| GBPUSD | H1 · RSI 30/70 | 292 | -28.21% | 0.81 | 35.2% | 35.6% | 48 / 1.25 | D 35.5 |
| GBPUSD | H4 · RSI 30/70 | 75 | +12.21% | 1.31 | 8.72% | 46.7% | 12 / 2.07 | C 59.8 |
| USDJPY | H1 · RSI 30/70 | 276 | -4.88% | 0.97 | 19.24% | 39.5% | 47 / 0.87 | D 40.0 |
| USDJPY | H4 · RSI 30/70 | 75 | +7.10% | 1.18 | 12.98% | 44.0% | 13 / 1.27 | C 51.9 |
| GBPJPY | H1 · RSI 30/70 | 221 | -0.21% | 1.0 | 14.42% | 40.3% | 45 / 1.18 | D 40.0 |
| GBPJPY | H4 · RSI 30/70 | 61 | +11.68% | 1.38 | 6.77% | 47.5% | 14 / 1.51 | C 61.2 |
| XAUUSD | H1 · RSI 30/70 | 303 | -28.07% | 0.81 | 38.5% | 35.6% | 58 / 1.23 | F 33.9 |
| XAUUSD | H4 · RSI 30/70 | 98 | -3.47% | 0.93 | 16.96% | 34.7% | 13 / 1.73 | D 40.0 |
| BTCUSD | H1 · RSI 30/70 | 421 | -40.82% | 0.77 | 46.1% | 35.2% | 89 / 0.92 | F 32.6 |
| BTCUSD | H4 · RSI 30/70 | 102 | +9.81% | 1.18 | 5.45% | 44.1% | 20 / 0.95 | C 52.0 |
| NAS100 | H1 · RSI 30/70 | 307 | -11.18% | 0.94 | 16.16% | 38.8% | 62 / 0.81 | D 40.0 |
| NAS100 | H4 · RSI 30/70 | 86 | +8.50% | 1.17 | 11.52% | 44.2% | 14 / 0.59 | D 43.6 |
| US500 | H1 · RSI 30/70 | 299 | +1.24% | 1.01 | 14.73% | 40.5% | 51 / 0.67 | D 39.7 |
| US500 | H4 · RSI 30/70 | 78 | +6.60% | 1.14 | 7.78% | 43.6% | 17 / 0.62 | D 45.1 |
Backtest period Aug 2024 – Aug 2026 (24 months) · Dukascopy M1 data, UTC · $10,000 starting balance · final 20% of each run held out of sample · spread charged; commission and swap not modelled. Out-of-sample figures on fewer than 5 trades are marked n/a — with that few trades a profit factor is noise, not evidence.
The hourly chart is where this strategy goes to die
The split is almost mechanical. On H1, seven of eight markets lost money and the strategy took 220–420 trades to do it. On H4, the same rules on the same data produced 60–100 trades and six of eight came out positive.
Look at the win rates rather than the returns. With a 1.5 reward-to-risk target you need to win 40% of the time just to break even. H1 win rates cluster at 35–40% — just under the line. H4 win rates cluster at 40–47% — just over it. This strategy is not catastrophically wrong on H1; it is slightly wrong, several hundred times.
"It's the spread" — no, it isn't
The reflex explanation for a losing high-frequency backtest is transaction cost. That is easy to test: we re-ran the H1 cases with spread set to zero, which no real broker will ever give you.
| Market (H1) | Real spread | PF | Zero spread | PF |
|---|---|---|---|---|
| EURUSD | -26.27% | 0.83 | -12.12% | 0.92 |
| GBPUSD | -28.21% | 0.81 | -21.07% | 0.86 |
| XAUUSD | -28.07% | 0.81 | -22.57% | 0.85 |
| BTCUSD | -40.82% | 0.77 | -34.24% | 0.81 |
Zero spread cuts the loss roughly in half and still leaves every case underwater, with profit factors of 0.81–0.92. So the cost is real, but it is not the disease — the signal itself does not have an edge on H1. No amount of broker shopping fixes that.
Do the popular "fixes" help?
| Market | TF · config | Trades | Return | PF | Max DD | Win | OOS trades / PF | Grade |
|---|---|---|---|---|---|---|---|---|
| GBPUSD | H4 · + EMA200 filter | 5 | -0.12% | 0.96 | 1.31% | 40.0% | 1 / n/a | F 24.8 |
| GBPUSD | H4 · RSI 20/80 | 17 | +7.76% | 2.15 | 3.83% | 58.8% | 1 / n/a | D 46.5 |
| GBPUSD | H4 · reward:risk 3 | 63 | +21.03% | 1.48 | 13.72% | 33.3% | 11 / 1.67 | C 59.3 |
| GBPJPY | H4 · + EMA200 filter | 7 | +2.75% | 1.99 | 1.83% | 57.1% | 0 / n/a | D 41.9 |
| GBPJPY | H4 · RSI 20/80 | 6 | +6.23% | 7.14 | 1.65% | 83.3% | 2 / n/a | C 57.2 |
| GBPJPY | H4 · reward:risk 3 | 44 | +3.53% | 1.12 | 9.89% | 27.3% | 9 / 2.43 | C 50.7 |
| BTCUSD | H4 · + EMA200 filter | 9 | -0.81% | 0.82 | 2.54% | 33.3% | 3 / n/a | F 23.4 |
| BTCUSD | H4 · RSI 20/80 | 22 | -9.18% | 0.37 | 11.5% | 22.7% | 2 / n/a | F 17.9 |
| BTCUSD | H4 · reward:risk 3 | 62 | +7.38% | 1.19 | 10.48% | 27.4% | 8 / 0.95 | D 48.2 |
| XAUUSD | H4 · + EMA200 filter | 9 | +10.27% | 5.37 | 3.62% | 66.7% | 2 / n/a | C 53.1 |
| XAUUSD | H4 · RSI 20/80 | 23 | +0.33% | 1.03 | 8.08% | 39.1% | 3 / n/a | F 25.5 |
| XAUUSD | H4 · reward:risk 3 | 78 | -12.77% | 0.75 | 14.58% | 23.1% | 3 / n/a | F 25.2 |
Three things are worth reading carefully here.
The 200-EMA trend filter destroys the sample. "Only buy oversold when price is above the 200 EMA" sounds obviously correct. In practice those two conditions rarely co-occur: GBPUSD drops from 75 trades to 5, GBPJPY to 7, BTCUSD to 9. XAUUSD posts a beautiful +10.27% with a profit factor of 5.37 — on nine trades. That number is not a result, it is a coin landing heads three times.
Tighter 20/80 levels do the same thing. GBPJPY shows PF 7.14 and an 83.3% win rate on six trades. If you were going to screenshot one line from this article and post it as proof that RSI works, it would be that one. It is meaningless.
Only the reward-to-risk change was real. Going from 1.5 to 3.0 kept the sample size intact and helped where the trend was strong (GBPUSD +12.21% → +21.03%) while hurting where it was not (XAUUSD −3.47% → −12.77%). That is a genuine trade-off, not a free lunch.
What we would actually take away
- Do not run RSI mean reversion on H1 or lower. The edge is not there, and lowering costs does not create one.
- H4 is marginal, not good. The best result was a grade C. Nothing here graded above C.
- Be suspicious of any RSI result with fewer than 30 trades. The most impressive numbers in this whole article all came from samples of 5–9 trades.
- Mean reversion fights the trend by construction. The markets where it did best over this period — GBPUSD, GBPJPY — were the ranging ones. That is a regime bet, and regimes change.
The same H1-loses / H4-survives split showed up in our Supertrend study and our MA crossover study — both trend-following systems, the structural opposite of this one. When two opposite strategies fail on the same timeframe, the timeframe is telling you something the indicator is not.
FAQ
What are the best RSI settings for an Expert Advisor (EA)?
On this data, no RSI setting produced a good result — the timeframe mattered far more than the levels. Moving from H1 to H4 flipped most markets from losing to positive; changing 30/70 to 20/80 mostly just reduced the number of trades until the statistics stopped being readable. If you want to test settings systematically, sweep a whole range at once rather than eyeballing single runs.
Why does the RSI EA lose with a 40% win rate?
Because 40% is exactly break-even at a 1.5 reward-to-risk ratio, before costs. Once you subtract spread, a 40% win rate is a slow loss. Win rate on its own tells you nothing — it only means something next to the reward-to-risk ratio.
Would adding a trend filter make an RSI EA profitable?
In our tests it did not: the 200-EMA filter cut sample sizes by roughly 90% and the surviving results were too small to trust. That does not prove a trend filter can never work — it shows that this particular filter removes almost every trade, which is a different problem from improving them.
Can I build this RSI strategy without coding?
Yes — describe it in one sentence, get a flowchart you can edit, run the backtest, and download the MetaTrader 5 source if you like the numbers. The report is shown in full before you pay for anything.