I realised that everything needs to be rewritten to make it work correctly. I'm about to do it.
And I can't, because this shit is happening.
2018.01.2812:37:23.692 Tester EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2018.01.2812:37:24.692 Tester EURUSD: preliminary downloading of history ticks completed, 89 bytes in0:00.998 (0.09 Kb/sec)
2018.01.2812:37:24.692 Tester EURUSD: ticks data begins from2017.09.0100:002018.01.2812:37:24.692 Core 1 agent process started
2018.01.2812:37:33.425 Core 1 connecting to 127.0.0.1:30002018.01.2812:37:50.450 Core 1 tester agent authorization error
2018.01.2812:37:50.456 Core 1 connection closed
In single symbol mode, the "spy" is 2.5 times slower than pure OnTick. I.e. the empty indicator (built on PERIOD_W1 so that bar history is minimal) has a huge overhead in the Tester!
Two symbols are 3.5 times slower than one.
But three symbols are only 1.8 times slower than two symbols. I.e. the transition from two to three is due to scalability. as opposed to item 2.
In single symbol mode Spy is 2.5 times slower than pure OnTick. I.e. empty indicator (built on PERIOD_W1, so that bar history is minimal) has a huge overhead in the Tester!
Two symbols are 3.5 times slower than one.
But three symbols are only 1.8 times slower than two symbols. That is, the transition from two to three is due to scalability. unlike in point 2.
Your result is 6, 25, 46. Why not 6, 12 and 18?
You have to look at the deceleration relative to a single character. Then three characters are almost 8 times slower than one, not 3 as expected.
The question is exactly this. Why is there such a result with scalability? And if the result cannot be improved, an option for a new test mode was suggested. This would solve the problem of long tests when using multiple characters.
Is it possible to create such a multisymbol Expert Advisor scheme in MQL, so that the duration of tests does not increase repeatedly when adding symbols to the test?
//---
If this is not possible, then one of the options for the developers of the terminal is to add one more mode, when you can run the test symbol by symbol, rather than all symbols at once. This would produce the expected test time in the end. The point is that multisymbol EAs are very often used simply for those cases where:
More data is needed for tests.
To test the trading algorithm on a larger variety of price behaviour, conditions (spread, stop/limit levels), etc., with the same parameters.
It is for such cases we need a new mode that would allow us to significantly reduce the duration of tests and optimize parameters. And already for the final test to test all symbols simultaneously.
You have a result of 6, 25, 46. Why not 6, 12 and 18?
The deceleration has to be looked at in relation to one symbol.
Two characters with spikes is a much different tester mode than a single character. Therefore it is logical to look at the scalability relative to two.
Moreover, the indicator overhead is so wild that working through the spies is a crutch. Waiting for Services, where scalability should be almost perfect, relative to just one symbol. As is the case with the timer. Only there there will be no tick skips.
Two characters with spies is a very different mode of operation for a tester than a single character. Therefore it is logical to look at scalability relative to two.
Moreover, the indicator overhead is so wild that working through the spies is a crutch. Waiting for Services, where scalability should be almost perfect, relative to just one symbol. As is the case with the timer. Only there there will be no tick skips.
fxsaber: Significantly accelerated
One symbol
Two symbols
Three characters
Four characters
If we look at the results relative to two symbols, then we divide the result of two symbols by two: 17 / 2 = 8.5
Then, when adding symbols, we multiply this value by the number of symbols to get the expected test time.
three characters: 8.5 * 3 = 25, and the actual time is35.462 s.
four characters: 8.5 * 4 = 34, while the actual time is68.459 s.
But this is in any case the best result so far. An interesting variant is to use the current symbol in OnTick, while the rest in custom events.
It turns out that Services will have almost all On functions: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
And if you don't need indicator buffers and don't want to deal with indicators/advisors crutches, write in a new type of program - Services - that doesn't have any limitations (stretching from the previous versions of MT).
Allow the use of cookies to log in to the MQL5.com website.
Please enable the necessary setting in your browser, otherwise you will not be able to log in.
You are signed in. Two-factor authentication has been disabled. Set it up again and scan a new QR code, or continue with two-factor authentication disabled.
The long parameter (lparam) is checked. The identifier of the tick event is contained in it.
The identifier of the user event (int id) is equal to zero.
It can be written in this way to make it clearer:
I understand that everything should be rewritten to make it work correctly. I'll show you now.
I realised that everything needs to be rewritten to make it work correctly. I'm about to do it.
And I can't, because this shit is happening.
and I can't get the tester to run.Indicator
Expert Advisor
EURUSD M1 MetaQuotes-Demo, Hedge, USD, no lag, Core1-agent only, real ticks 01.09.2017 - 28.01.2018.
One symbol
Two symbols
Three symbols
Anatoly, I suggest moving the topic to Forex Experts, Trading Robots and Expert Advisors and fixing it at the top there.
This way it will be always in view. There are already a lot of posted topics here
Anatoly, I suggest moving the topic to Forex Experts, Trading Robots and Expert Advisors and fixing it at the top there.
This way it will be always in view. There are already a lot of posted topics here
...
Your result is 6, 25, 46. Why not 6, 12 and 18?
You have to look at the deceleration relative to a single character. Then three characters are almost 8 times slower than one, not 3 as expected.
The question is exactly this. Why is there such a result with scalability? And if the result cannot be improved, an option for a new test mode was suggested. This would solve the problem of long tests when using multiple characters.
Forum on trading, automated trading systems and trading strategy testing
Analysis of Tests and Optimization in MetaTrader 5 Strategy Tester
Anatoli Kazharski, 2018.01.27 20:15
Question:
Is it possible to create such a multisymbol Expert Advisor scheme in MQL, so that the duration of tests does not increase repeatedly when adding symbols to the test?
//---
If this is not possible, then one of the options for the developers of the terminal is to add one more mode, when you can run the test symbol by symbol, rather than all symbols at once. This would produce the expected test time in the end. The point is that multisymbol EAs are very often used simply for those cases where:
It is for such cases we need a new mode that would allow us to significantly reduce the duration of tests and optimize parameters. And already for the final test to test all symbols simultaneously.
You have a result of 6, 25, 46. Why not 6, 12 and 18?
The deceleration has to be looked at in relation to one symbol.
Two characters with spikes is a much different tester mode than a single character. Therefore it is logical to look at the scalability relative to two.
Moreover, the indicator overhead is so wild that working through the spies is a crutch. Waiting for Services, where scalability should be almost perfect, relative to just one symbol. As is the case with the timer. Only there there will be no tick skips.
One symbol
Two digits
Three symbols
Four symbols
Two characters with spies is a very different mode of operation for a tester than a single character. Therefore it is logical to look at scalability relative to two.
Moreover, the indicator overhead is so wild that working through the spies is a crutch. Waiting for Services, where scalability should be almost perfect, relative to just one symbol. As is the case with the timer. Only there there will be no tick skips.
Significantly accelerated
One symbol
Two symbols
Three characters
Four characters
If we look at the results relative to two symbols, then we divide the result of two symbols by two: 17 / 2 = 8.5
Then, when adding symbols, we multiply this value by the number of symbols to get the expected test time.
But this is in any case the best result so far. An interesting variant is to use the current symbol in OnTick, while the rest in custom events.
You may use it while there are no services.
This is a forum for trading, automated trading systems and strategy testing.
Init() and DeInit() execution sequence
Slava, 2017.04.14 10:18
The services, among other things, will have trading functions and the ability to manage objects. And charts.
Market data provider is only one possibility.
Forum on trading, automated trading systems and trading strategy testing
Init() and DeInit() execution sequence
Slava, 2017.04.14 10:21
The services will have OnTick(string symbol). But the ticks from a particular symbol will need to be subscribed toForum on trading, automated trading systems and trading strategies testing
Init() and DeInit() execution sequence
fxsaber, 2017.04.14 10:46
It turns out that Services will have almost all On functions: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
And if you don't need indicator buffers and don't want to deal with indicators/advisors crutches, write in a new type of program - Services - that doesn't have any limitations (stretching from the previous versions of MT).
Forum on trading, automated trading systems and trading strategies testing
Sequence of Init() and DeInit() execution
Slava, 2017.04.14 10:56
Exactly.
There will be no OnCalculate.
There is no solution with OnChartEvent yet.