Development plans for the MetaTrader 5 Strategy Tester

 

Don't be intimidated by the half-assed state of the tester in the betas. We have purposely rolled out all the intermediate versions in betas to get the results faster.


How we are reforming the strategy tester:

  1. To make it easier to understand for newbies, we are introducing a new look of the tester's start page, where you can see the research options:




  2. Great emphasis is placed on storing all the results of previous tests, where an easy search will allow you to go back to view previous tests

    A search box makes it easy to find past results in addition to the direct download from a file.

  3. Among the previous tests we will make it possible to make comparisons






  4. We are likely to add new optimization options

  5. We will dramatically expand the detailed settings of testing with commissions, conditions of order triggering, slippage, etc.

    For now, in beta-versions we have enabled the mode of testing in pips which considerably reduces the amount of modeling and accelerates the tests.

    We will introduce the full set of settings a bit later.

  6. We will rewrite the source data preparation mechanisms to reduce agent synchronization costs

    The acceleration will be especially noticeable on local agents, where we won't have to pump large amounts of data and won't have multiple copies of historical data.

  7. New 3D visualization engine and displaying test results in full windows

  8. Reform of the cluster network, with more detailed control over the conditions of each expert, so that you can individually select a group of agents

    The goal is to speed up tasks as much as possible, so that there are no delays due to unsuitable or slow agents.


Besides, the MQL5 language itself is being actively developed, we have included scopes, expanded support of templates, work with implicitly created classes and so on.

Most likely to include new features soon:

  • SQLite databases
  • Graphics library extension, including 3D


Later we will move on to the revolutionary task of including modules in the language.

These are C++ libraries recompiled into EX5 format and available for direct use from the MQL5 code. That is, we will start work on re-compiling the opsorced libraries, when their low-level/dangerous calls are fully mapped to our safe runtime and safe wrappers are made for MQL5 code.

This way we plan to increase the functionality of the language without compromising the security. Module assemblies are available only to us, which provides a certain level of security for the resulting solutions.

This mechanism already works.

For example, some of the functionality of the MQL5 environment has long been built natively right into the EX5 code during the compilation, which provides a very good optimization at build level.

 

Renat Fatkhullin:

We will drastically expand the detailed testing settings with commissions, order triggering conditions, slippage, etc.

This addition would be one of the first to be seen.

 

Comparing runs is a great thing.

There's also a need from the bearded days that third-party solutions have become popular: combining multiple runs into one.

I.e. several TCs are run "simultaneously" but their overall history and equity is built.

 

Forum on trading, automated trading systems and strategy testing

Libraries: MultiTester

fxsaber, 2019.07.22 01:54

A tester becomes a very strong thresher when endowed with the ability to automate.

If the developers include in MQL the in-house Tester management functions(set date/symbol/mode, run best single run, save report, etc. ), it will become a hundred times stronger than all potential competitors. And it will go from being a serious toy to an unprecedented research tool, as it will become a real computing thresher.

But I doubt it will do that. If anyone can help automate the highlighted, that would be great.


TesterSetInfo, TesterGetInfo.

 
fxsaber:

There's also a need from the bearded days that third-party solutions have become popular: combining several passes into one.

I.e. several TCs are run "simultaneously", but their overall history and equity are built.

Supporting a colleague. I have to implement it on the side, but on the other hand, how to arrange it in the tester? Hm, add some attribute to such a pass like "Portfolio #". - maybe like this?

 
Aleksey Vyazmikin:

Supporting a colleague. Have to implement this on the side, but on the other hand, how do you organise this in the tester? Hmm, add some kind of attribute to such a pass like "Portfolio #" - maybe like this?

Manually assign agents to each programme being tested at the same time.
For example, we have 8 agents, and 4 of them are assigned to one expert and 4 to another. As a result, only two mql programs can be tested simultaneously.
Or each expert will be assigned 2 agents, and then the same 8 agents will be already testing 4 programs etc.

Or, automatically allocate agents, like a race, the first one to take the agent, the first one to take the agent.
An agent has completed one task, again waits until it is picked up from the task queue, etc.
Thus, the number of simultaneously tested programs increases.

Each program being tested at the same time, automatically allocates its own virtual tester environment.
And each test is executed by itself at the same time, after completion of all passes, results of each program are summarized and average values are calculated.
The overall statistics are displayed.

 
Roman:

We manually assign agents to each program being tested at the same time.
For instance, we have 8 agents and 4 are assigned to one Expert Advisor, and 4 to another. As the result, only two mql programs may be tested simultaneously.
Or, automatically assign agents, like a race, so who gets the agent first, gets the same.
The agent has completed one task and is waiting to be picked up again from the task queue, etc.
Thus, the number of simultaneously tested programs increases.

Each program to be tested at the same time, automatically allocated its own virtual tester environment.
And each test is executed by itself at the same time, after completion of all passes, the result of each program is summarized, and the general statistics is displayed.

My variant is simpler and more functional, it allows you to test as many EAs and their settings as you need, without any unnecessary fuss. Your variant requires a manager for distributing tasks... You need to add a manager of portfolio testing that is formed by a user and where the Expert Advisor and the set / settings of it are indicated, as well as the ID of the portfolio - so that you can then compare different portfolios, then it will be universal and functional.

 
Aleksey Vyazmikin:

My variant is simpler and more functional, it allows you to test as many EAs and their settings as you want without any unnecessary fuss. Your variant requires a manager for distributing tasks... We need to add a manager for portfolio testing, which is formed by a user and where the Expert Advisor and the set / settings for it are indicated, as well as the ID of the portfolio - so that we can then compare the different portfolios, in this case, it will be universal and functional.

So, we have two approaches.
Or test each program sequentially, and then generate the results by the portfolio number, for general statistics.
Or test each program simultaneously in multi-threaded mode, and immediately display general statistics for these set sets.
The only difference is in the initial settings action, or manual generation of overall statistics after the test.
And possibly in the overall speed of test execution.

p.s. MetaQuotes - dreams come true sometimes.

 

Renat, please add another option, MQ Old, to the ME styling choice. The one that was there before. It's a small thing for you, but for many users it will save a lot of nerves.

I don't want to get used to a new style... I'm quite happy with the old one.

Thank you.

 

What is a stress test?

(i.e. what functionality is involved)

 

Great news!

This will encourage the migration to MT5.

After all, everyone will be rewriting programs for mt5 in order to test them there...

Reason: