When backtesting a multi-currency EA where the main symbol selected in the Strategy Tester belongs to a specific group (e.g., Indices like US500 ), MT5 fails to load historical data/ticks for secondary symbols belonging to a different category (e.g., Forex pairs like EURUSD ).
Could someone from the MetaQuotes team confirm whether this is a known limitation of the tester's symbol/category resolution logic, or a bug? Happy to provide build number, broker server details, and logs if useful for reproducing this.
Thanks!

- Testing indicators
- Custom symbols
- Testing and optimization of Expert Advisors
This doesn't happen for me - I've been playing with statistical arbitrage between instruments from different categories, including e.g. EURUSD/XAUUSD, XAUUSD/BTCUSD, XAUUSD/NAS100, custom-symbol-geomean-of-7-stocks/NAS100, etc. and everything just worked regardless of which symbol I choose as main in the strategy tester (but of course that symbol's ticks determine when OnTick is called). If it happens for you, then maybe it's some detail in the symbol specifications coming from your broker that triggers this?
playgold #:
This doesn't happen for me - I've been playing with statistical arbitrage between instruments from different categories, including e.g. EURUSD/XAUUSD, XAUUSD/NAS100, custom-symbol-geomean-of-7-stocks/NAS100, etc. and everything just worked regardless of which symbol I choose as main in the strategy tester (but of course that symbol's ticks determine when OnTick is called). If it happens for you, then maybe it's some detail in the symbol specifications coming from your broker that triggers this?
This doesn't happen for me - I've been playing with statistical arbitrage between instruments from different categories, including e.g. EURUSD/XAUUSD, XAUUSD/NAS100, custom-symbol-geomean-of-7-stocks/NAS100, etc. and everything just worked regardless of which symbol I choose as main in the strategy tester (but of course that symbol's ticks determine when OnTick is called). If it happens for you, then maybe it's some detail in the symbol specifications coming from your broker that triggers this?
In my case, the issue seems directly tied to brokers that strictly partition symbols into separate folder trees ( Forex\EURUSD vs Indices\US500 ).
On brokers where all symbols reside flat in a single directory without folder hierarchy, I have no issues at all. It appears that when a broker uses nested group paths in the symbol tree, the Strategy Tester agent fails to cross-sync history across those distinct folder categories.
Out of curiosity, does your broker use nested folder trees in strategy tester, or are all your instruments listed in a flat root folder?
Farhad Kia:
When backtesting a multi-currency EA where the main symbol selected in the Strategy Tester belongs to a specific group (e.g., Indices like US500 ), MT5 fails to load historical data/ticks for secondary symbols belonging to a different category (e.g., Forex pairs like EURUSD ).
Please provide the Strategy Tester log file (not an excerpt, not a screenshot).
When backtesting a multi-currency EA where the main symbol selected in the Strategy Tester belongs to a specific group (e.g., Indices like US500 ), MT5 fails to load historical data/ticks for secondary symbols belonging to a different category (e.g., Forex pairs like EURUSD ).
Could someone from the MetaQuotes team confirm whether this is a known limitation of the tester's symbol/category resolution logic, or a bug? Happy to provide build number, broker server details, and logs if useful for reproducing this.
Thanks!
Before treating the folder path as the cause, I would reduce this to a two-symbol A/B probe.
1. In OnInit, log the exact secondary symbol name, SymbolExist(), SymbolSelect(symbol,true), SYMBOL_PATH and GetLastError().
2. Request a fixed CopyRates and CopyTicksRange window for that secondary symbol. Log the return count and error, then check SeriesInfoInteger(symbol,period,SERIES_SYNCHRONIZED) on a bounded timer retry; do not infer a category failure from the first asynchronous -1/empty result.
3. Run the same EA twice with US500 as primary/EURUSD secondary, then EURUSD as primary/US500 secondary. Keep terminal build, broker server, modelling mode and date interval identical. Remember that the selected primary symbol still determines OnTick scheduling.
4. Repeat on the flat-tree broker and record the exact broker symbol aliases and SYMBOL_PATH values. That separates folder layout from missing history, a suffix/alias mismatch or a broker-specific symbol specification.
The complete terminal and tester-agent logs requested above should then show the first failing API call and error code. A useful result matrix is: fixture, primary, secondary, path, SymbolSelect result, first/final CopyRates count, tick count, synchronized flag and error.
Technical input supplied by Arnold Holm: the reproducible A/B probe, logged MQL5 fields and interpretation boundaries above. The wording and structure of this post were AI-assisted.
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register