Optimize EA backtest quality using 4 history data settings
Nine percentage points. That is the operational distance between a Strategy Tester report we can defend in front of a risk committee and one we cannot.
Rebecca Jennings·Updated: June 22, 2026·12 min read

The Anatomy of Modeling Quality: Why 90% Isn't Enough
Modeling quality, as MetaTrader reports it, is a percentage of data integrity — the share of bars in the simulation window that were reconstructed from source ticks rather than interpolated from neighboring candles. A 25% reading, the value we see most often in older MT4 installations running on default minute-bar history, is the canonical signature of an engine that was handed one-minute OHLC data and asked to simulate a strategy that trades inside the bar. The tester did not possess the granular input to recreate the price path, so it synthesized what it could not retrieve, and every statistic downstream — Sharpe, profit factor, maximum drawdown, expected payoff — was computed against that synthesized tape.
A 90% reading is the more dangerous failure mode because it looks respectable. In our experience auditing third-party EA libraries, 90% modeling quality tends to indicate that a portion of the historical period — frequently the older years, frequently the regime-shifting ones — fell back to lower-resolution data, while the recent past, where the developer's tick history was denser, scored close to clean. The strategy's behavior across those older windows is no longer observable. It has been estimated by the engine, and the engine does not flag the distinction between the two.
A 99.9% modeling quality is not a vanity metric. It is the floor below which every other statistic in the tester report becomes structurally unreliable.
The path to closing that gap diverges by platform. In MT4, the closure requires importing real tick data — the canonical source being the Dukascopy tick archive, distributed as compressed daily files containing every tick the Swiss bank's ECN recorded — and forcing the tester to use the 'Every tick' modeling method rather than the default variants. In MT5, the closure is shorter: the platform ships with native support for 'Every tick based on real ticks' mode, which draws on actual exchange-provided tick history without requiring the third-party data conversion step.
Configuring MT4 for 99.9% Accuracy: The Role of Real Tick Data
MT4 remains the dominant runtime for retail EAs, and it is also the runtime that requires the most deliberate setup to reach the modeling quality ceiling. The default installation imports minute-bar history from the broker server, which the Strategy Tester then uses to synthesize intra-bar price action. That synthesis is the source of nearly every backtest artifact we have seen distort EA performance metrics.
To reach 99.9% modeling quality in MT4, three configuration steps must be completed in order:
1. Acquire and import a real tick dataset for the currency pair and date range under test. The widely used source is the publicly distributed Dukascopy tick archive, formatted as compressed daily files of every tick the venue recorded.
2. Convert the raw files into the custom symbol format the Strategy Tester expects. This is performed through an open-source converter script, which builds the history files the tester reads at simulation time.
3. Select 'Every tick' as the modeling method in the tester properties, and verify that the resulting modeling quality bar reads 99.0% or higher before running any optimization pass.
The third step is the one most often skipped, and skipping it is the most expensive. A 99.9% modeling quality in MT4 is only achievable when 'Every tick' is the selected method AND the imported tick data covers the full test window. If either condition is missing, the tester silently falls back to bar-based interpolation and the quality bar reflects the substitution rather than the input.
It is worth being precise about what '99.9%' actually means in MT4. The bar reports the share of bars that were simulated using tick-level input rather than synthesized from higher-timeframe data. A reading of 99.9% means that 0.1% of the simulation window — typically the most recent days where the tick import lagged the chart — was approximated. A reading of 99.0% means ten times more of the simulation was approximated, and the trade statistics in that window carry an interpolation error the tester does not disclose.
In MT4, modeling quality is a step function, not a gradient. You either reach 99% and above, or you are running an interpolated simulation that no longer reflects what the strategy will encounter on the live tape.
Leveraging MT5 Native Real-Tick Simulation for Algorithmic Reliability
MT5 changed the configuration problem when MetaQuotes introduced 'Every tick based on real ticks' as a native option in the Strategy Tester. The mode draws directly on tick history delivered by the broker's data feed — bypassing the MT4 requirement to manually import third-party archives and convert them through an external script.
The practical difference is meaningful. In MT4, an EA developer who wants 99.9% modeling quality must own the data pipeline: source acquisition, conversion scripts, custom symbol creation, and ongoing maintenance as new months of tick history accumulate. In MT5, the same outcome is reachable through the tester properties panel, provided the broker's data feed itself carries real tick history rather than synthesized bars.
That last clause is the qualifier most traders miss. 'Every tick based on real ticks' in MT5 is only as accurate as the broker's underlying tick archive. A broker that delivers minute bars labeled as ticks will produce a tester report that reads 99.9% modeling quality while actually running the same bar-based simulation MT4 performs by default. We have seen this directly when auditing broker infrastructure — the modeling quality bar is a structural artifact of the tester, not a forensic measurement of the input.
For traders migrating EAs from MT4 to MT5, the migration checklist should include a side-by-side run of the same strategy, the same date range, and the same spread configuration on both platforms. Discrepancies in trade count, slippage distribution, and drawdown depth point either to broker-side data quality differences or to EAs that were exploiting MT4-specific tester behaviors that MT5's matching engine handles differently. The advantage MT5 offers is not just the cleaner setup. It is the access to multi-currency and multi-asset backtesting within a single tester instance, which for portfolio-style EAs — those trading basket correlations across the major pairs simultaneously — eliminates the cross-asset data alignment errors that complicate MT4 portfolio work, and which quietly absorb capital in ways the in-sample report cannot trace.
The Impact of Spread Settings on Strategy Performance Metrics
Modeling quality is half the equation. Spread configuration is the other half, and it is the half most EA vendors leave at default.
In the Strategy Tester, the 'Spread' field accepts two values: 'Current' — the live spread the broker was quoting at the moment the test was launched — or a fixed numeric value in points. Both settings, in our view, are compromises, and the wrong compromise distorts strategy statistics in ways that are not recoverable through optimization.
Using 'Current' spread locks the simulation to a single point in time. If the test was launched during a quiet Asian session when EUR/USD was trading at 0.6 pip, the entire backtest assumes 0.6 pip spread — including the New York sessions of 2014, the Brexit referendum, and the 2020 dislocations. Strategies that scalp 2-pip moves with 0.6-pip spread assumptions look miraculous in the report and impossible in live execution.
Using a fixed spread mitigates the time-bias but introduces a volatility-bias. A fixed 1.0-pip spread is too tight during a central bank announcement, when policy divergence and the resulting capital flows widen the spread materially, and too wide during a quiet London morning, when the same pair routinely trades inside 0.4 pip. Both regimes distort the strategy's trade statistics, but in opposite directions: tight-spread assumptions inflate profitability during volatile windows, and wide-spread assumptions deflate it during quiet windows.
The defensible approach — and the one we recommend before any optimization pass is treated as credible — is to import a variable spread series that mirrors the historical spread environment for the pair. In MT4, this is technically possible through the same tick data import workflow, where each imported tick carries its own bid/ask pair and the tester rebuilds the spread at every event. In MT5, variable spread is the default behavior of 'Every tick based on real ticks' mode, which is one of the quieter reasons MT5 portfolio statistics tend to be more conservative than their MT4 counterparts.
The practical consequence is straightforward: an EA that shows a profit factor of 1.8 on a fixed 1.0-pip spread will typically show a profit factor between 1.2 and 1.5 once variable spread is applied, and the drawdown profile will lengthen. Neither number is wrong, but only one of them is forward-looking.
A Routing Map for the Four History Data Settings
The four history data settings are not interchangeable, and the choice between them is not a stylistic preference. It is a routing decision that should match the question being asked.
| Configuration parameter | Every tick (MT4) | Every tick based on real ticks (MT5) | Control points | Open prices only |
|---|---|---|---|---|
| Source data | Imported real tick archive | Broker-delivered tick history | Minute OHLC bars | Daily OHLC bars |
| Modeling quality ceiling | Up to 99.9% with full coverage | Up to 99.9%, broker-dependent | Typically 25% to 90% | 0% to 25% |
| Spread handling | Variable, derived from imported bid/ask | Variable, native | Fixed | Fixed |
| Computational load | High | High | Moderate | Low |
| Typical use case | Final pre-deployment validation of an EA | Native validation on MT5 | Quick directional sanity check | Long-horizon regime studies |
| Risk of misleading trade statistics | Low if tick import is clean | Low if broker feed is genuine tick | High for short-term strategies | High across the board |
Long-horizon studies that need to sweep twenty years of price action in minutes will use 'Open prices only' and accept the modeling penalty in exchange for compute speed. Final-stage validation of an EA about to receive live capital will use 'Every tick' or its MT5 equivalent, because at that stage the priority is not speed but correspondence with the tape the EA will actually meet.
Identifying Data Gaps and Integrity Issues in Strategy Tester Reports
The modeling quality bar is a summary, not a diagnosis. When the bar reads below the threshold we are willing to defend, the question is not 'what is the score' but 'where in the simulation window is the data thin'.
In MT4, the most reliable diagnostic is the journal log generated by the Strategy Tester during the run. The log timestamps every tick-data gap the engine encountered and the period of interpolation it substituted. We have used this log to identify broker servers whose tick history was clean through a particular year and then degraded sharply — a pattern that typically reflects a backend migration rather than a market data issue, and one that requires a different remediation path than importing a fresh archive.
In MT5, the diagnostic surface is broader. The tester generates a per-symbol, per-day breakdown of synthetic versus real tick coverage, and the visualization makes it possible to see at a glance whether the gaps cluster around weekends, news events, or broker-side maintenance windows. Each cluster implies a different cause: weekend gaps typically reflect exchange closure, news-event gaps reflect server load during capital flows that briefly overwhelm the matching engine, and broker-maintenance gaps reflect data delivery interruptions that no amount of local data import will resolve.
The diagnostic that most retail traders skip — and the one we consider decisive — is a forward-walk validation. Run the EA on a six-month training window, then continue the simulation forward by three months using only data the optimizer never saw. If the forward-walk Sharpe, profit factor, and drawdown profile hold within twenty percent of the in-sample statistics, the EA has structural integrity. If they diverge by more than fifty percent, the in-sample fit was either curve-fitted to the historical noise or the underlying market regime has shifted in ways the original data window cannot represent.
Forward-walk validation is not a setting in any of the four history data options. It is a discipline that runs orthogonal to the configuration question — but it is the only test that tells us whether the configuration work we have done has actually delivered an EA we can trust with capital.
The Numbers We Monitor Before Any EA Goes Live
Our position, drawn from years of reviewing EA performance reports across MT4 and MT5 deployments, is straightforward. For any Expert Advisor about to receive live capital, configure the tester for the highest modeling quality the platform and the broker's data feed will support. In MT4, that means 'Every tick' with imported real tick data and the modeling quality bar verified above 99%. In MT5, that means 'Every tick based on real ticks' through a broker whose tick archive is genuinely tick-level, not minute bars relabeled. Pair that configuration with variable spread handling — either through the imported tick bid/ask in MT4 or through MT5's native behavior — and run a forward-walk validation before treating any optimization result as a basis for capital allocation.
The numbers to monitor, in priority order, are modeling quality, variable spread coverage, forward-walk Sharpe deviation, and maximum drawdown extension across the out-of-sample window. If any of those four fails the threshold we have set, the EA does not have a configuration problem — it has a strategy problem, and the Strategy Tester is telling us so before the market does.