MT4 Strategy Tester produces seemingly plausible numbers under two conditions — Four lines to look at before PF
n/a Modeling quality (corrupted result) | 114 Inconsistent chart error | 4 lines Top lines of the report before PF |
I am lab.aiueo, creating MT4/MT5 indicators and selling them on GogoJungle.
There was a slight gap. From today, I will resume writing the continuation.
MT4’s Strategy Tester is a tool that runs EA on past markets to produce results.
However, under certain conditions, it can produce distorted numbers with a plausible appearance. It doesn’t stop due to errors.
Today, I will describe two I actually encountered and where to look for each in the report.
1st: Running a period without a 1-minute candle using “All Tick”
What happened
I ran an EA I built for verification on the EURUSD 4-hour chart for about 13 years. The test method used was the finest granularity, “All Tick.”
The resulting PF was 0.71.
If you only look at the numbers, it looks like a losing EA. Yet, the top of the report showed:
- Modeling quality: n/a
- Inconsistent chart error: 114
This result was broken.
Why it breaks
“All Tick” builds intra-candle price movements based on one-minute candles.
But the EURUSD 1-minute data in my MT4 only covered from April 2026 onward. The 4-hour data existed since December 2009, but 1-minute data was missing for most of the test period.
Without 1-minute candles, there are no materials to create intra-candle movements. Yet the tester kept running and produced numbers.
How to identify
- Check if the report’s “Modeling Quality” is not n/a
- If “Inconsistent Chart Error” is 0
- From the start of the test period, whether 1-minute candles are aligned (can be checked via Tools → History Center)
If you rely on only confirmed candles, run using only the Open price
This EA makes decisions only when a candle is confirmed. Intra-candle price movements are not used for decision making.
For such an EA, the testing method can be just the open price. Since you only need to act when a candle closes, one action per candle suffices. It can run with just the 4-hour data, even if 1-minute data is missing.
Whether it ran using only the Open price can be seen in the report’s “ModelTicks.” In my environment, it was about double the number of candles tested.
However, with “Open price only,” you cannot determine which side of the candle (stop loss or take profit) was hit first within the candle. If SL and TP are close and both hit within the same candle, the numbers may diverge from actual results.
2nd: Setting spread to 0 but not running at 0
What happened
To view the true, raw capability without costs, I ran with spread set to 0. This is from the redo of an EA from 2019.
However, the top part of the report’s “Spread” line showed “Current value (10).” It ran at the account’s spread at that moment (10 points), not 0.
How to identify
Check if the report’s “Spread” line matches the value you intended to set. The value shown there is the actual used value.
When you cannot run at 0, extend from two values
From the list of spread values (for example 2 and 10), run twice with each, then extend to 0 by a straight line to estimate the zero-spread result.
Spread costs increase roughly proportionally with spread size. Extend the two results linearly to 0 to approximate the 0-spread result.
Examples (numbers for illustration):
- Spread 2, net profit of +800 USD
- Spread 10, net profit of 0 USD
- Increase by 8 points reduces 800 USD, so 1 point equals 100 USD
- With spread 0, add 200 USD for 2 points, about +1,000 USD
At this time, also verify that the number of trades is not significantly different between the two runs. If the counts differ, linear extension is not valid.
Look at the top four lines of the report before PF
In both cases, the answers were written in the top part of the report.
- Modeling Quality
- Inconsistent Chart Error
- ModelTick Count
- Spread
Now I look at these four lines before PF or net profit.
The tester’s numbers can vary depending on testing method, as noted when I redo an EA from 2019.
A discussion about not trusting verification numbers until cross-checked with numbers produced by another method is written below. This concerns my verification script rather than the tester.
What I decide as the creator
- An EA that makes decisions on confirmed candles runs using only the Open price
- When running with “All Tick,” first ensure the 1-minute candles are complete for the test period
- Look at the top four lines of the report before PF
- If you need 0-spread results, run with two spreads and extend
- Cross-check tester numbers with numbers produced by another method
This article is a record of my own verifications. The Strategy Tester’s behavior can vary with MT4 builds and broker data. It does not endorse any particular EA or trading method, and backtest results do not guarantee future performance. Please make investment decisions at your own risk.
Thank you for reading all the way to the end.