Does the MA crossover Expert Advisor (EA) actually work? We backtested it on 8 markets
The moving-average crossover is the strategy every beginner is pointed at first, and the one most "free EA" downloads implement. It is easy to explain and easy to code, which is probably why it is repeated so often. What it rarely comes with is numbers. So we ran it.
The rules we tested
- Long when EMA 50 crosses above EMA 200. Short when it crosses below.
- Stop loss: 2 × ATR(14) from entry.
- Take profit: 2 × the risked distance (2:1 reward-to-risk).
- Exit on opposite signal: yes.
- Position size: 1% of account balance risked per trade.
- Signals evaluated once per bar close. No news filter, no session filter, no manual override.
Identical rules everywhere — no per-market tuning. That is deliberate: a strategy that only works after you tune it separately for each instrument is not a strategy, it is a curve fit.
Results across 8 markets
| Market | TF · variant | Trades | Return | PF | Max DD | Win | OOS trades / PF | Grade |
|---|---|---|---|---|---|---|---|---|
| EURUSD | H1 · EMA 50/200 | 79 | -19.83% | 0.63 | 20.8% | 24.1% | 25 / 0.37 | F 30.7 |
| GBPUSD | H1 · EMA 50/200 | 83 | +9.54% | 1.17 | 9.5% | 37.3% | 21 / 0.78 | D 47.0 |
| XAUUSD | H1 · EMA 50/200 | 64 | -0.25% | 0.99 | 10.5% | 34.4% | 14 / 1.42 | D 40.0 |
| EURUSD | H4 · EMA 50/200 | 11 | +3.90% | 1.66 | 4.3% | 45.5% | 2 / 1.98 | D 35.1 |
| USDJPY | H4 · EMA 50/200 | 15 | +8.43% | 2.19 | 2.2% | 53.3% | 2 / 1.96 | D 46.0 |
| XAUUSD | H4 · EMA 50/200 | 11 | +2.00% | 1.36 | 4.9% | 36.4% | 1 / — | F 30.4 |
| NAS100 | H4 · EMA 50/200 | 16 | -3.95% | 0.66 | 4.6% | 25.0% | 2 / 0.00 | F 22.0 |
| BTCUSD | H4 · EMA 50/200 | 25 | +9.39% | 1.79 | 3.5% | 48.0% | 6 / 2.49 | C 61.7 |
Backtest period 2024-08-04 – 2026-08-02 · Dukascopy M1 data, UTC · $10,000 starting balance · final 20% held out of sample · spread charged, commission and swap not modelled. Full details on the methodology page.
What the numbers say
- Nothing scored above C. Under our grading (profit factor, Sharpe, drawdown, out-of-sample consistency, sample size), the best result was 61.7/100.
- The worst result was on the most popular pair. EURUSD H1 lost 19.83% with a 24.1% win rate. A 2:1 target means you can win a minority of trades and still profit — but 24% is well below the break-even rate for that payoff.
- H4 looked better than H1, but mostly because it barely traded. EURUSD H4 shows +3.90% from 11 trades over two years, with 2 trades out of sample. That is not evidence, that is a coin flip with extra steps. Below roughly 30 trades, treat any result as noise.
- BTCUSD H4 was the only genuinely interesting one: +9.39%, PF 1.79, drawdown 3.5%, and — importantly — its out-of-sample profit factor (2.49) held up better than its overall one. Still only 25 trades, so the sample is thin.
Two popular "fixes", tested
Search for how to improve an MA crossover and you get two answers almost every time: add a trend filter, or use faster averages. Both are testable claims.
| Market | TF · variant | Trades | Return | PF | Max DD | Win | OOS trades / PF | Grade |
|---|---|---|---|---|---|---|---|---|
| EURUSD | H1 · + ADX > 25 | 41 | -10.56% | 0.64 | 12.1% | 24.4% | 9 / 0.24 | F 28.4 |
| XAUUSD | H4 · + ADX > 25 | 6 | +3.57% | 2.60 | 1.7% | 50.0% | 1 / — | D 46.6 |
| BTCUSD | H4 · + ADX > 25 | 19 | +3.66% | 1.37 | 7.7% | 42.1% | 4 / 1.96 | F 31.1 |
| XAUUSD | H4 · EMA 20/50 | 64 | -11.53% | 0.71 | 15.7% | 28.1% | 15 / 0.56 | D 37.4 |
| BTCUSD | H4 · EMA 20/50 | 86 | +8.44% | 1.18 | 8.9% | 34.9% | 18 / 1.57 | C 56.0 |
Does an ADX filter help?
Not here. The theory is sound — only trade when a trend is actually present — and it does cut the losses on EURUSD H1 from −19.83% to −10.56%. But it does that mainly by trading less (79 trades down to 41), not by picking better trades: the profit factor stayed at 0.64 and the win rate at 24.4%. A filter that removes trades proportionally isn't fixing the edge, it is shrinking your exposure to a losing one. On BTCUSD it actively hurt: grade C dropped to F.
Do faster averages help?
They trade far more, which cuts both ways. EMA 20/50 on XAUUSD H4 went from 11 trades to 64 — finally a usable sample size — and the honest answer that larger sample revealed was −11.53%. On BTCUSD the same change kept it positive (+8.44%) with 86 trades, which is a more trustworthy result than the 25-trade version even though the headline return is lower.
So is the MA crossover useless?
Not useless — incomplete. What the data suggests is narrower than "it doesn't work":
- It needs a strongly trending instrument. The only positive results with a decent sample came from crypto and indices, not major FX pairs in this period.
- It is a signal, not a system. Entry timing is the easy part; where the tested version bleeds is in taking every crossover in every regime.
- The two most-recommended fixes did not work on this data. That doesn't prove no filter can work — it means you have to test the specific one you plan to use, on the specific market you plan to trade, rather than trusting an article (including this one).
We found the same pattern in two more studies since: RSI 30/70 mean reversion and Supertrend 10/3 both lost on the hourly chart and only became marginal on H4 — one of them a mean-reversion system, the structural opposite of this one.
Run this yourself, with your own variation.
Describe the rules in a sentence, edit the numbers on the flowchart, and get a report like the one
above — on any of our 14 markets. The backtest report is never paywalled.
Enough to run a full evaluation. See pricing for what a complete EA costs.
FAQ
Which moving-average periods are best for an EA?
There is no universally best pair. In this test EMA 50/200 and EMA 20/50 each won on one market and lost on another. The useful question is not "which periods" but "does this pairing survive out-of-sample on the market I actually trade" — which takes about two minutes to check.
Why did the strategy lose money with a 2:1 reward-to-risk ratio?
Because win rate and payoff have to be considered together. At 2:1, you break even at roughly a 33% win rate. EURUSD H1 came in at 24.1%, so the winners were not big enough or frequent enough to cover the losers. A good reward-to-risk ratio does not rescue a weak entry signal.
Can I build this EA without coding?
Yes — that is what this site does. You describe the rules in plain language, they are turned into an editable flowchart, backtested on real minute-level data, and generated as MetaTrader 5 (.mq5) source code you own outright. See what an EA is if you're starting from zero.
Will these results match my broker's MT5?
No, and they shouldn't be expected to. Different price feed, different server timezone, different spread model and tick generation all shift the numbers. Judge a strategy by whether the trend and statistical profile agree, not trade-by-trade. See how to read a backtest report.