Home / Strategies / MA crossover EA

Does the MA crossover Expert Advisor (EA) actually work? We backtested it on 8 markets

By Jesse Lau · 2026-08-05 · Backtest period 2024-08-04 – 2026-08-02
Short answer: mostly no. Across 8 markets and 13 configurations, the classic EMA 50/200 crossover produced no grade above C. On EURUSD H1 it lost 19.83% with a profit factor of 0.63 and a 24.1% win rate. The one configuration worth a second look was BTCUSD H4 (+9.39%, PF 1.79, grade C). Adding an ADX filter — the fix most articles recommend — did not rescue it.

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

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

MarketTF · variantTradesReturnPFMax DDWinOOS trades / PFGrade
EURUSDH1 · EMA 50/20079-19.83%0.6320.8%24.1%25 / 0.37F 30.7
GBPUSDH1 · EMA 50/20083+9.54%1.179.5%37.3%21 / 0.78D 47.0
XAUUSDH1 · EMA 50/20064-0.25%0.9910.5%34.4%14 / 1.42D 40.0
EURUSDH4 · EMA 50/20011+3.90%1.664.3%45.5%2 / 1.98D 35.1
USDJPYH4 · EMA 50/20015+8.43%2.192.2%53.3%2 / 1.96D 46.0
XAUUSDH4 · EMA 50/20011+2.00%1.364.9%36.4%1 / —F 30.4
NAS100H4 · EMA 50/20016-3.95%0.664.6%25.0%2 / 0.00F 22.0
BTCUSDH4 · EMA 50/20025+9.39%1.793.5%48.0%6 / 2.49C 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

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.

MarketTF · variantTradesReturnPFMax DDWinOOS trades / PFGrade
EURUSDH1 · + ADX > 2541-10.56%0.6412.1%24.4%9 / 0.24F 28.4
XAUUSDH4 · + ADX > 256+3.57%2.601.7%50.0%1 / —D 46.6
BTCUSDH4 · + ADX > 2519+3.66%1.377.7%42.1%4 / 1.96F 31.1
XAUUSDH4 · EMA 20/5064-11.53%0.7115.7%28.1%15 / 0.56D 37.4
BTCUSDH4 · EMA 20/5086+8.44%1.188.9%34.9%18 / 1.57C 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":

What this study is not: it is one rule set, one two-year window, one data source. A different period, different stop logic or a session filter could change these numbers. That is exactly the point — these are the variables you should be testing yourself, not assuming.

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.