MetaTrader 5 Strategy Tester: bugs, bugs, suggestions for improvement - page 13

 

Performance comparison. Taken combat TC, which consists of several independent TCs (different by magic).

We measure speed of Tester and Virtual depending on number of TCs and implementation on market or on limits (ticks) on Hedge settings.


TS is raced on custom symbol on real ticks in points mode with one enabled Agent full brute force of four passes, RAM-Drive. Time is taken the shortest of the passes.

Number of ticks MT5-Tester
market-orders
MT5-Tester
limit-orders
MT5-Tester+Virtual
market-orders
MT5-Tester+Virtual
limit-orders
Virtual-Script
market-orders
Virtual-Script
limit-orders
0 00:00.857 00:00.857 00:00.931 00:00.931 00:00.147 00:00.147
1 00:02.689 00:14.677 00:02.728 00:12.053 00:01.886 00:18.826
2 00:06.876 00:42.588 00:06.250 00:38.657 00:06.362 00:55.624
3 00:11.977 01:24.982 00:12.151 01:17.236 00:12.813 01:49.181
4 00:18.925 02:19.222 00:19.649 02:13.381 00:21.891 02:59.191

Virtual-Script is running the tester script on a chart. I.e. it is executed outside the MT5-Tester like a normal script.


Conclusions:

  1. Code in the Terminal is almost always executed slower than in the Agent (up to 50%).
  2. On markets, MT5-Tester is now not one bit slower than the Virtual add-in.
  3. On Limits, MT5-Tester is up to 15% slower than Virtual. It is understandable, so it's OK.
The first point needs to be dealt with.
 
fxsaber:
4 00:18.925 02:19.222 00:19.649 02:13.381 00:21.891 02:59.191

Why is there such a difference between marques and limiters?

 
Andrey Khatimlianskii:

Why is there such a difference between a market and a limit?

The EA is not mine, so it is not correct to compare directly. I think the logic is significantly different.

And the Limiters are a greater load on Tester's checks (it is obvious that Virtual has also gone down). So giving in to the market logic is a must.


I was puzzled by another thing. Why Virtual-Script appeared significantly slower than MT5-Tester+Virtual. In the first case it is a stupid for-cycle by ticks and nothing else. It turns out that Terminal is slower to execute code than Agents.

Profiler shows nonsense, unfortunately. You can't tell from it why the result is a performance degradation.


I work with an array of structures in Virtual. Perhaps it would be faster if we worked with pointers to class objects. I have to try it, but the list of important tasks is still growing.

 

On exchange custom symbols, the take is accepted at last-price and executed at bid/ask.

For example, the take for the BUY position is at 1.09801. A bid/ask/last = 1.09799/1.09802/1.09801. It triggers, as the price is touched, but it also triggers at the bid price, which is worse than last.

It turns out that the takes are triggered all the time with negative slippage.

 
fxsaber:

On exchange custom symbols, the take is accepted at last-price and executed at bid/ask.

For example, the take for the BUY position is at 1.09801. A bid/ask/last = 1.09799/1.09802/1.09801. It triggers, as the price is touched, but it also triggers at the bid price, which is worse than last.

It turns out that the takes are triggered all the time with negative slippage.

Are three prices at once specified in the custom symbol? Or it may happen that all prices are translated even if the chart is plotted by Last? In this case, can the Bid also be calculated using the non-custom symbol? I am just curious. If it exists, I need to correct some of my codes.

 
Artyom Trishkin:

Are these three prices made in the custom symbol on purpose?

On an exchange symbol, market orders are triggered by the flipper. All open positions at the end of a pass are forcibly closed by the Tester with market orders - on the flipper. And if there is zero there will be a "poker". I prescribe the flippers as an average value between bid and ask to avoid the "poker face".

 
Latest update. The tester is blatantly crooked. After optimisation, when trying to run a test with visualisation, the visualisation is HOLDING. Have to reboot . But if I can somehow tolerate it (accompanied by swear words), at some point the testing ceased to run at all. It turned out that in the window "symbol" disappeared all the symbols selected in the market review. That's it Finish !!! There is no help in dances with tambourine (and rebooting and even reinstalling MT5).
 

I do a lot of optimisations of different EAs (they automatically go through a set list). Then I watch their caches.

I notice the current inconvenience

I want to see the caches of my previous optimizations, so every time I have to select the necessary Expert Advisor first. And the list of recent optimizations, conducted in the Tester itself, is not available.


It would be much friendlier, if the list of the latest optimizations of the tester with names of EAs in them were dropped down in the marked area, like in the screenshot. Would that make sense?

 
KENT3004:
Latest update. The tester is blatantly crooked. After optimisation, when trying to run a test with visualisation, the visualisation is HOLDING. Have to reboot . But if I can somehow tolerate it (accompanied by swear words), at some point the testing ceased to run at all. It turned out that in the window "symbol" disappeared all the symbols selected in the market review. That's it Finish !!! There is no help in dances with tambourine (and rebooting and even reinstalling MT5).

If reinstalling the operating system will not help, I advise to change the computer. Well, or at least the gasket.

 
Alexey Viktorov:

If reinstalling the operating system doesn't help, I suggest replacing the computer. Well, or at least a gasket.

Humour appreciated! But business - how do you get the characters back into the tester? Similar disappearance and hang-ups confirmed by several users on other forums.