Home / Strategies / RSI mean reversion EA

Does the RSI Expert Advisor (EA) work? RSI 30/70 backtested on 8 markets

By Jesse Lau · 2026-08-10 · Backtest period Aug 2024 – Aug 2026 (24 months)
Short answer: not on H1, and only barely on H4. The classic "buy when RSI crosses back above 30, sell when it crosses below 70" lost money on seven of eight markets on the hourly chart — BTCUSD H1 gave back 40.82% with a profit factor of 0.77. Move the exact same rules to H4 and six of eight turn positive, the best being GBPUSD +12.21% (PF 1.31) and GBPJPY +11.68% (PF 1.38). And the popular "fixes" — a 200-EMA trend filter, tighter 20/80 levels — mostly made things worse, or shrank the sample so far that the result stopped meaning anything.

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

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

MarketTF · configTradesReturnPFMax DDWinOOS trades / PFGrade
EURUSDH1 · RSI 30/70289-26.27%0.8331.45%36.0%52 / 1.17D 37.6
EURUSDH4 · RSI 30/7077+0.71%1.0210.81%40.3%9 / 0.88D 44.8
GBPUSDH1 · RSI 30/70292-28.21%0.8135.2%35.6%48 / 1.25D 35.5
GBPUSDH4 · RSI 30/7075+12.21%1.318.72%46.7%12 / 2.07C 59.8
USDJPYH1 · RSI 30/70276-4.88%0.9719.24%39.5%47 / 0.87D 40.0
USDJPYH4 · RSI 30/7075+7.10%1.1812.98%44.0%13 / 1.27C 51.9
GBPJPYH1 · RSI 30/70221-0.21%1.014.42%40.3%45 / 1.18D 40.0
GBPJPYH4 · RSI 30/7061+11.68%1.386.77%47.5%14 / 1.51C 61.2
XAUUSDH1 · RSI 30/70303-28.07%0.8138.5%35.6%58 / 1.23F 33.9
XAUUSDH4 · RSI 30/7098-3.47%0.9316.96%34.7%13 / 1.73D 40.0
BTCUSDH1 · RSI 30/70421-40.82%0.7746.1%35.2%89 / 0.92F 32.6
BTCUSDH4 · RSI 30/70102+9.81%1.185.45%44.1%20 / 0.95C 52.0
NAS100H1 · RSI 30/70307-11.18%0.9416.16%38.8%62 / 0.81D 40.0
NAS100H4 · RSI 30/7086+8.50%1.1711.52%44.2%14 / 0.59D 43.6
US500H1 · RSI 30/70299+1.24%1.0114.73%40.5%51 / 0.67D 39.7
US500H4 · RSI 30/7078+6.60%1.147.78%43.6%17 / 0.62D 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 spreadPFZero spreadPF
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?

MarketTF · configTradesReturnPFMax DDWinOOS trades / PFGrade
GBPUSDH4 · + EMA200 filter5-0.12%0.961.31%40.0%1 / n/aF 24.8
GBPUSDH4 · RSI 20/8017+7.76%2.153.83%58.8%1 / n/aD 46.5
GBPUSDH4 · reward:risk 363+21.03%1.4813.72%33.3%11 / 1.67C 59.3
GBPJPYH4 · + EMA200 filter7+2.75%1.991.83%57.1%0 / n/aD 41.9
GBPJPYH4 · RSI 20/806+6.23%7.141.65%83.3%2 / n/aC 57.2
GBPJPYH4 · reward:risk 344+3.53%1.129.89%27.3%9 / 2.43C 50.7
BTCUSDH4 · + EMA200 filter9-0.81%0.822.54%33.3%3 / n/aF 23.4
BTCUSDH4 · RSI 20/8022-9.18%0.3711.5%22.7%2 / n/aF 17.9
BTCUSDH4 · reward:risk 362+7.38%1.1910.48%27.4%8 / 0.95D 48.2
XAUUSDH4 · + EMA200 filter9+10.27%5.373.62%66.7%2 / n/aC 53.1
XAUUSDH4 · RSI 20/8023+0.33%1.038.08%39.1%3 / n/aF 25.5
XAUUSDH4 · reward:risk 378-12.77%0.7514.58%23.1%3 / n/aF 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

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.

Test your own version of this in a few minutes.
Change the levels, the timeframe, the reward-to-risk — and see the report before you spend anything on the EA itself.