MACD Crossover: testing the crossings on EUR/USD
Methodology
- Signal: enter in the direction of the MACD(12,26,9) / signal-line crossing, hold until the opposite crossing.
- Engine run with costs; the rule is almost always in the market.
- Data — daily EUR/USD bars (the portal holds no own history for the stated GBP/USD pair).
Results on real data
| Metric | Value |
|---|---|
| Instrument | EUR/USD |
| Period | 2025-06-16 — 2026-07-20 |
| Bars | 400 |
| CAGR | -8.5% |
| Drawdown | 12.3% |
| Sharpe | -1.31 |
| Winning trades | 41% |
| Trades | 34 |
| Time in market | 92% |
How much can you trust this result
A single return figure proves nothing — it is easy to curve-fit to history. Below are three robustness checks. We show them even when they go against the strategy.
The first 70% of the data is "training", the last 30% is a fair test on data the rules never saw. If the result is far worse on the test set, the strategy was fitted to the past.
| Metric | Train | Test (OOS) |
|---|---|---|
| CAGR/yr | -11.9% | -0.0% |
| Sharpe | -1.79 | 0.02 |
| Max drawdown | 12.3% | 2.4% |
| Bars | 279 | 120 |
The sample is cut into 5 consecutive segments. The return in each shows whether the strategy works evenly over time or rests on one lucky stretch.
Trade order is reshuffled 2,000 times (bootstrap). The range shows how much the outcome depended on a lucky sequence rather than the strategy itself. p5–p95 is the corridor of "almost all" outcomes.
Computed from the per-bar returns of the same run (costs already included). Monte-Carlo is deterministic: the numbers are stable across rebuilds. Historical robustness does not guarantee future results.
Download the exact sample and run the logic yourself — the numbers above should match.
A Binance spot EUR/USDT proxy series, not a forex-broker feed. Binance Spot REST API (api.binance.com/api/v3/klines).
Conclusion
On a ranging sample the frequent crossings produced a stream of false signals, and the result is negative. MACD without a trend filter lives up to its reputation as a commission machine inside a range.
Practical takeaway for the trader
MACD crossings must be filtered by market state: without a filter, the high frequency of reversals in a range eats the account away in costs.
FAQ
Why is the result worse than in the RSI study?
The MACD rule is almost always in the market and reverses on every crossing, so in a range it makes more trades and accumulates more costs than a rule with an entry filter.
Would a trend filter have helped?
Most likely yes — it would have cut out crossings against the primary move. The base study deliberately tests the pure rule to show its behaviour without add-ons.
Why EUR/USD data?
It is the only pair for which the portal holds its own reproducible history. The result is honestly flagged as a check on the available instrument.