MQL5 Cloud Network: inconsistent OnTick stream under real-tick modeling

MQL5 Cloud Network: inconsistent OnTick stream under real-tick modeling

Technical reproduction report  |  14 October 2026  |  MetaTrader 5 Strategy Tester

Issue summary

A non-trading diagnostic Expert Advisor (TickParityDiagnostic_V4.mq5) produces materially different OnTick event sequences in local Strategy Tester optimization and MQL5 Cloud Network optimization when configured for “Every tick based on real ticks”. The CopyTicksRange tick-history metrics and CopyRates(M1) bar metrics match exactly between environments in the same fixed one-hour window. The discrepancy changes optimization outcomes and prevents reliable local reproduction of Cloud-optimized trading strategies.

Observed OnTick events: local 45,665 versus Cloud 28,758 (16,907 fewer; approximately 37.0% below local). This is an observed discrepancy, not proof that the Cloud deliberately uses generated ticks.

Could MetaQuotes developers please clarify why MQL5 Cloud Network agents deliver a different OnTick event sequence under real-tick modeling, despite matching CopyTicksRange and M1 data? Is this expected behavior, a known limitation, or a potential Strategy Tester defect?

The complete technical report, diagnostic EA source code, optimization results, and Tester Journal are attached for independent reproduction.

Attached evidence

TickParityDiagnostic_V4.mq5 (source); Novo Teste Local(1).csv (full local 22-variant results); Novo Teste Cloud Network(1).csv (full Cloud 22-variant results); Teste Local Portátil.csv (build 6259 local variants); 20261014.log (portable Tester journal); MQL5_Cloud_OnTick_Parity_Technical_Report.txt (full report).

Prepared as a minimal, independent reproduction. No trading-account identifiers or proprietary strategy source are needed.

Update: Additional diagnostic results (V5) — systematic OnTick discrepancy

I performed a new independent test using TickParityDiagnostic_V5, extending the previous investigation with a minute-by-minute comparison between the local Strategy Tester and the MQL5 Cloud Network.

Test configuration:

  • Symbol: GOLD (FxPro-MT5)

  • Timeframe: M5

  • Testing period: June 22–27, 2026

  • Diagnostic interval: June 22, 2026, 10:00–11:00 (broker server time)

  • Modeling mode: Every tick based on real ticks

  • Local agent build: 6259

  • Cloud server build: 6251

  • 240 optimization variants, measuring four metrics for each of 60 consecutive minutes

The diagnostic EA does not place trades and does not use external files, DLLs, or other external dependencies.

For each minute, it independently measures the number of OnTick() events and their combined timestamp/Bid/Ask hash, alongside the corresponding count and hash obtained through CopyTicksRange().

Results:

Metric Local Cloud
Total OnTick events 45,665 28,758
Total CopyTicksRange ticks 45,665 45,665
Minutes with matching OnTick counts between environments 0/60
Minutes with matching OnTick hashes between environments 0/60
Minutes with matching CopyTicksRange counts and hashes 60/60

Most significant new finding:

In 56 out of 60 consecutive minutes, the Cloud Network delivered exactly 480 OnTick events per minute, equivalent to an average of precisely eight events per second.

The remaining four minutes contained 459, 466, 479, and 474 events.

In contrast, the local tester delivered varying event counts consistent with the historical tick data. Locally, the OnTick() and CopyTicksRange() counts and hashes matched in all 60 minutes. In the Cloud, they differed in every minute.

The Cloud optimization completed successfully, with 240 unique passes, all processed by Cloud agents.

This strongly suggests a systematic difference in how OnTick() events are delivered during Cloud optimization, despite the identical historical tick data accessible through CopyTicksRange().

It does not, by itself, establish whether the cause is tick reconstruction, event throttling, a modeling-mode issue, or another internal mechanism.

Could someone familiar with the Strategy Tester or MQL5 Cloud Network clarify whether this behavior is expected under "Every tick based on real ticks"?

In particular, is there any documented reason why Cloud agents would deliver an almost constant 480 OnTick() events per minute while CopyTicksRange() provides the complete and identical historical tick sequence?

I can provide the V5 diagnostic source code and both optimization result files for independent reproduction.

P.S.:
The V5 diagnostic source code was already attached for independent inspection and reproduction. I can also provide the local and Cloud optimization result files if needed.
lpoli2018 #:
Could someone familiar with the Strategy Tester or MQL5 Cloud Network clarify whether this behavior is expected under "Every tick based on real ticks"?

The following Article is basically "documentation" because its author is Metaquotes:

Synchronization in the Cloud and Distribution of History to Agents

Each node of the MQL5 Cloud Network keeps the history of the required symbols and sends it to the agents connected to it on demand. If it has no history of symbol XYZ from broker ABC, then the node automatically downloads the necessary history data from your terminal. Therefore, your terminal should be ready to provide such a story.

We recommend you to run a preliminary single test of a strategy on your computer before you send it to the MQL5 Cloud Network. This approach automatically provides downloading and synchronization of all the required history from a trading server.

Therefore, it certainly appears that the Cloud Agents' data is used by default, and the user's data is only used if an Agent's data is absent. And who know what that Cloud data actually is?

Articles

Speed Up Calculations with the MQL5 Cloud Network

MetaQuotes, 2012.02.07 14:29

How many cores do you have on your home computer? How many computers can you use to optimize a trading strategy? We show here how to use the MQL5 Cloud Network to accelerate calculations by receiving the computing power across the globe with the click of a mouse. The phrase "Time is money" becomes even more topical with each passing year, and we cannot afford to wait for important computations for tens of hours or even days.

Ryan L Johnson #:

The following Article is basically "documentation" because its author is Metaquotes:

Synchronization in the Cloud and Distribution of History to Agents

Each node of the MQL5 Cloud Network keeps the history of the required symbols and sends it to the agents connected to it on demand. If it has no history of symbol XYZ from broker ABC, then the node automatically downloads the necessary history data from your terminal. Therefore, your terminal should be ready to provide such a story.

We recommend you to run a preliminary single test of a strategy on your computer before you send it to the MQL5 Cloud Network. This approach automatically provides downloading and synchronization of all the required history from a trading server.

Therefore, it certainly appears that the Cloud Agents' data is used by default, and the user's data is only used if an Agent's data is absent. And who know what that Cloud data actually is?


If he compares local optimization with Cloud optimization, the user obviously has the needed data on this local Terminal.

I am currently investigating...

Alain Verleyen #:
If he compares local optimization with Cloud optimization, the user obviously has the needed data on this local Terminal.

I agree. That seems to demonstrate that the Metaquotes Article above is accurate─the Cloud data is used unless that Cloud data is absent. IMHO, that is worrisome.

Alain Verleyen #:
I am currently investigating...

Thank you. I find it a bit hard to believe that Metaquotes would intentionally set up the Cloud that way, given the wide array of different OTC market data sets.

lpoli2018 #:
Total CopyTicksRange ticks        45,665       45,665

Caution: AI content...

Prompt: Without editing any preexisting files, tell me whether CopyTicksRange() copies Cloud hosted tick data when testing and using Agents in the mql5 Cloud Network.

Response: 

Short answer

No. CopyTicksRange() never "copies cloud-hosted tick data" and it never pulls anything over the network while testing. In the Strategy Tester — on local, remote and MQL5 Cloud Network agents — the function reads only the tester's own tick base on the agent that is running the pass. Which ticks that is depends on the tick-generation mode, not on whether the agent is local or in the cloud...

lpoli2018 #:
P.S.:
The V5 diagnostic source code was already attached for independent inspection and reproduction. I can also provide the local and Cloud optimization result files if needed.
Please provide the Tester log file also for the Cloud optimization.
Alain Verleyen #:

If he compares local optimization with Cloud optimization, the user obviously has the needed data on this local Terminal.

I am currently investigating...

Thank you, Alain, for looking into this issue.

I have attached the Strategy Tester log from the V5 Cloud optimization ( 20261015(1).log).

The log confirms that all 240 unique optimization passes were successfully completed using Cloud agents only, with no local or remote agents involved. The Cloud servers were running build 6251.

For comparison, the local optimization was performed using agents running build 6259.

Please let me know if you need the local Tester log, the full optimization results, or any additional diagnostic information. I will be happy to provide them.

Files:
20261015413.log  11 kb
lpoli2018 #:

Thank you, Alain, for looking into this issue.

I have attached the Strategy Tester log from the V5 Cloud optimization ( 20261015(1).log).

The log confirms that all 240 unique optimization passes were successfully completed using Cloud agents only, with no local or remote agents involved. The Cloud servers were running build 6251.

For comparison, the local optimization was performed using agents running build 6259.

Please let me know if you need the local Tester log, the full optimization results, or any additional diagnostic information. I will be happy to provide them.

I confirm the issue and reported it to MetaQuotes.
Alain Verleyen #:
I confirm the issue and reported it to MetaQuotes.
Thank you very much, Alain, for taking the time to investigate this issue, confirm the findings, and report it to MetaQuotes.

I sincerely appreciate your attention and support.

I hope MetaQuotes can identify the cause and provide a solution.

Best regards.