another question - I understand, that in MT5 the first copying time of the CopyClose buffer depends on:
1. if previously you didn't receive quotes for a ticker at all, didn't open a chart etc. (depends on the ping, internet speed, hard drive, preparation of the file Bases/Broker/history/ticker/cache/)
2017.04.1111:27:38.828 время копирования буфера (EURUSD,M1) проход = 0 время= 83555812017.04.1111:27:38.828 время копирования буфера (EURUSD,M1) проход = 1 время= 1083
2. if the quotes have been previously received and then the terminal has been reloaded, provided no chart of this ticker has been opened (preparation of the file Bases/Broker/History/Ticker/Cache/)
2017.04.1111:29:14.672 время копирования буфера (EURUSD,M1) проход = 0 время= 5993962017.04.1111:29:14.734 время копирования буфера (EURUSD,M1) проход = 1 время= 259/////////////////////////////2017.04.1219:32:46.489 время копирования буфера (FULT,M5) проход = 0 время= 981672017.04.1219:32:46.557 время копирования буфера (FULT,M5) проход = 1 время= 1552017.04.1219:32:46.557 время копирования буфера (FULT,M5) проход = 2 время= 14
time is 10-15 times less than p.1
for comparison the access time in МТ4 according to point 2, i.e. after the terminal reset
2017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 2 время= 2762017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 1 время= 4342017.04.1219:30:38.831 время копирования буфера EURUSD,M1: проход = 0 время= 22602017.04.1219:30:38.816 время копирования буфера EURUSD,M1: initialized
2017.04.1219:30:38.666 время копирования буфера EURUSD,M1 inputs: Pair=USDCAD;
i.e. the time after MT4 terminal restart is a few orders of magnitude less.
This time I checked everything on the Windows, without SSD!
When I got the quotes, the terminal was not rebooted, the data was accessed
2017.04.1111:35:30.648 время копирования буфера (EURUSD,M1) проход = 0 время= 892017.04.1111:35:30.648 время копирования буфера (EURUSD,M1) проход = 1 время= 42
Did I get it right that after loading the cache, the terminal needs considerably less time for further requests (starting from the 2nd request)?
Can we somehow reduce the time for the first call after the terminal restart to make it like in MT4?
The code was in https://www.mql5.com/ru/forum/1111/page1870#comment_4856899
I have another question - I understand that on MT5 the first copying time of the same CopyClose buffer depends on:
You have a very dirty test method as there is no environment and playback method description at all.
Not specified:
bar limits in the window
actual data volumes in the terminal databases
exactly which server, are the databases on disk? all data must be guaranteed to be on disk.
platform and bit rate of testing (under wine? need to specify in details)
open windows
Without this the conclusions are unfounded.
For example look at EURUSD M1 - MT5 has more than 6 million bars there (if unlimited mode at charts), but MT4 has how many? A couple of tens of thousands of M1 bars in the actual database?
You have a very messy test method as there are no descriptions of the environment and playback method at all.
Not specified:
limits of bars in the window
actual data volumes in terminal databases
what exactly is the server, are the bases on disk? all the data must be guaranteed to be on disk.
platform and bit rate of testing (under wine? need to specify in details)
open windows availability
Without that the conclusions are unfounded.
I have been asked most of the questions in my post, no problem, I'll give you all the data now.
first of all the answer to the
какой точно сервер, находятся ли базы на диске? все данные обязаны быть гарантированно на диске.
MQ-demo server, the data is loaded, as we are talking about point 2 and point 3 in the previous post. With point 1 everything is clear and there are no questions there - as it was written - data is loaded, cache is formed on the specified path.
лимиты баров в окне
MT4
MT5
фактические объемы данных в базах терминалов
MT4
MT5
платформа и битность тестирования (под вайном? нужно указывать детально)
win XP 32bit, all builds of MT all latest
наличие открытых окон
MT4 - open 1 chart, check with another symbol
MT5 - 1 chart opened, check with another symbol
repeat, reload the terminal, send the script to the chart, select OTHER symbol, data on which has been loaded BEFORE reloading the terminal
MT4
2017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 2 время= 362017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 1 время= 2822017.04.1221:18:31.575 время копирования буфера EURUSD,M1: проход = 0 время= 18712017.04.1221:18:31.575 время копирования буфера EURUSD,M1: initialized
2017.04.1221:18:31.405 время копирования буфера EURUSD,M1 inputs: Pair=GBPUSD;
MT5
2017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 0 время= 3039512017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 1 время= 292017.04.1221:19:47.735 время копирования буфера (EURUSD,H1) проход = 2 время= 25
#0 pass, 1000 records in680 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
#0 pass, 1000 records in113497 msc
#1 pass, 1000 records in3 msc
#2 pass, 1000 records in3 msc
Results are warm, second run immediately after the first one
#0 pass, 1000 records in13 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
#0 pass, 1000 records in14 msc
#1 pass, 1000 records in2 msc
#2 pass, 1000 records in2 msc
Test files are attached and all times are in microseconds (not milliseconds, 1 millisecond = 1000 microseconds).
Now the conclusions:
The only difference is the speed of initial initialization of the chart cache - 0.6 ms for MT4 vs. 113 ms for MT5
No problem here - lifting always costs resources. Especially when conceptually different architectures are used: MT5 has more complex caches (cache\*.hc files are built from original *.hcc) for the sake of scaling + mandatory full synchronization control with server data (binary *.hcc chunks).
Repeated requests show identical speed - 2-3 microseconds per data copying
There are no failures in both terminal implementations and everything works fast.
And yet the results between MT4 and MT5 are almost 200 times different (due to -must control full synchronization with server data?? and ping? ).
I kind of got used to it before posting here that it's probably a feature of the terminal. I can even live with it, but it is difficult at some points. For example, as there's no market-screener in MT, I wrote a little script, which adds symbols to market watch, but the prices are only available via CopyClose, they are not available via SymbolInfoDouble or via MqlTick until the symbol is added to the watch, so this script runs "infinitely" long when run with a very large stake. This is just an example.
a bug when using a styler?
Let's assume we were writing using the tab.
There's no error.
then we use the styler, we get
i.e., the styler erases the space between theTWO_DIM(10000)
Result
What's the right way?
1. if previously you didn't receive quotes for a ticker at all, didn't open a chart etc. (depends on the ping, internet speed, hard drive, preparation of the file Bases/Broker/history/ticker/cache/)
2. if the quotes have been previously received and then the terminal has been reloaded, provided no chart of this ticker has been opened (preparation of the file Bases/Broker/History/Ticker/Cache/)
time is 10-15 times less than p.1
for comparison the access time in МТ4 according to point 2, i.e. after the terminal reset
i.e. the time after MT4 terminal restart is a few orders of magnitude less.
This time I checked everything on the Windows, without SSD!
When I got the quotes, the terminal was not rebooted, the data was accessed
Did I get it right that after loading the cache, the terminal needs considerably less time for further requests (starting from the 2nd request)?
Can we somehow reduce the time for the first call after the terminal restart to make it like in MT4?
The code was in https://www.mql5.com/ru/forum/1111/page1870#comment_4856899
You have a very dirty test method as there is no environment and playback method description at all.
Not specified:
Without this the conclusions are unfounded.
For example look at EURUSD M1 - MT5 has more than 6 million bars there (if unlimited mode at charts), but MT4 has how many? A couple of tens of thousands of M1 bars in the actual database?
You have a very messy test method as there are no descriptions of the environment and playback method at all.
Not specified:
limits of bars in the window
Without that the conclusions are unfounded.
I have been asked most of the questions in my post, no problem, I'll give you all the data now.
first of all the answer to the
MQ-demo server, the data is loaded, as we are talking about point 2 and point 3 in the previous post. With point 1 everything is clear and there are no questions there - as it was written - data is loaded, cache is formed on the specified path.
MT4
MT5
MT4
MT5
win XP 32bit, all builds of MT all latest
MT4 - open 1 chart, check with another symbol
MT5 - 1 chart opened, check with another symbol
repeat, reload the terminal, send the script to the chart, select OTHER symbol, data on which has been loaded BEFORE reloading the terminal
MT4
MT5
Here's my test with more detail and more accuracy:
Test files are attached and all times are in microseconds (not milliseconds, 1 millisecond = 1000 microseconds).
Now the conclusions:
No problem here - lifting always costs resources.
Especially when conceptually different architectures are used: MT5 has more complex caches (cache\*.hc files are built from original *.hcc) for the sake of scaling + mandatory full synchronization control with server data (binary *.hcc chunks).
There are no failures in both terminal implementations and everything works fast.
Thank you for your reply.
Overall, the results are as I showed in my posts.
I have been testing on a regular one.
And yet the results between MT4 and MT5 are almost 200 times different (due to -must control full synchronization with server data?? and ping? ).
I kind of got used to it before posting here that it's probably a feature of the terminal. I can even live with it, but it is difficult at some points. For example, as there's no market-screener in MT, I wrote a little script, which adds symbols to market watch, but the prices are only available via CopyClose, they are not available via SymbolInfoDouble or via MqlTick until the symbol is added to the watch, so this script runs "infinitely" long when run with a very large stake. This is just an example.