Errors, bugs, questions - page 2904

 
suncrypto:

Hello!

Message to the developers.

I am continuing to test Python - MT5. There is one more interesting thing, maybe it is a bug.
The essence.

Now and then I start selecting financial instruments out of all those that are available in the terminal (about 4000k).
I connect to the terminal from an external application, i.e. scripts are not started inside the terminal.

I obtain daily and minute bars for each symbol and then use "pandas" to perform calculations and the initial selection of instruments.
I have noticed that the terminal gradually starts loading the processor up to 70-80% after one such operation.
After the script work processor load is not decreasing (I tried to wait 15 min.), but terminal is very slow. Only helps by closing the terminal.
If I run the script twice without closing the terminal the script works without errors but CPU load remains at 70-80%.

I have simplified the script to the minimum so I can repeat the experiment and leave requesting quotes only. The problem still persists.

If needed, ready to record video or provide information in other form.

The code is pyhton:

Respectfully, Alexander.

There is no error in the terminal behaviour. You need to understand that in order to work with 1000 or more characters - you need a powerful iron and a lot of memory. Also it is recommended to severely limit the number of bars on the chart (in the terminal settings).

At least i7 or i9 of ninth or better tenth generation. Memory of at least 32GB.


"... left only the quote request ..." - If you really think that requesting quotes is a very simple operation - quit trading and never go near your computer.

 
Vladimir Karputov:

There is no error in the terminal's behaviour. You need to understand that in order to work with 1000 or more symbols - you need powerful hardware and a lot of memory. It is also recommended to severely limit number of bars on the chart (in terminal settings).

At least i7 or i9 of ninth or better tenth generation. Memory of at least 32GB.


"... left only the quote request ..." - If you really think that requesting quotes is a very simple operation - quit trading and never go near the computer.

Maybe there is no error, I'm not saying there is, I just pointed out this behaviour as a possible bug, this thread seems to be reserved for that, or am I wrong?

Based on what you say, my hardware is more than adequate. Memory consumption, by the way, is relatively low for this operation, about 3.5 GB. Everything is OK with the memory, and in general everything works steadily.

Now, I intentionally reduced the number of bars in the settings from 1mln to 1k. It did not make any difference. I think it will have more of an effect if I open a few hundred tabs in the terminal.

It's not a question of how much CPU time is eaten in the enumeration process, the question is that after all the queries are finished, the load doesn't go down.
If we assume that for each requested symbol a separate thread is left in memory (not destroyed) for further use, then this explains everything and there are no questions.

And did I claim that requesting quotes is a simple operation? That's not what I wrote about at all. About me simplifying the script to the primitive so that other factors don't have an impact and leaving "request for quotation only".

If you really think that trading requires understanding that requesting quotes is a tricky operation, that's not the case at all.

As for the advice to quit trading and stay away from the computer, too late. You are 25 years too late for the first point and 10 years too late for the second one.

If the developers will consider it necessary, they will take the information into account. If they don't, they don't.

Regards, Alexander.

 
suncrypto:

Maybe there is no error, I'm not claiming, I pointed out this behaviour as a possible bug, this thread seems to be designed for that, or am I wrong?

From what you say, I have more than enough hardware. Memory consumption, by the way, is relatively low for this operation, about 3.5 GB. Everything is OK with the memory, and in general everything works steadily.

Now, I intentionally reduced the number of bars in the settings from 1mln to 1k. It did not make any difference. I think it will have more of an effect if I open a few hundred tabs in the terminal.

It's not a question of how much CPU time is eaten in the enumeration process, the question is that after all the queries are finished, the load doesn't go down.
If we assume that for each requested symbol a separate thread is left in memory (not destroyed) for further use, then this explains everything and there are no questions.

And did I claim that requesting quotes is a simple operation? That's not what I wrote about at all. About me simplifying the script to the primitive so that other factors don't have an impact and leaving "request for quotation only".

If you really think that trading requires understanding that requesting quotes is a tricky operation, that's not the case at all.

As for the advice to quit trading and stay away from the computer, too late. You are 25 years too late for the first point and 10 years too late for the second one.

If the developers will consider it necessary, they will take the information into account. If they don't, they don't.

Regards, Alexander.

Did you restart your terminal after you decreased the number of bars?

 
Vladimir Karputov:

Did you restart the terminal after reducing the number of bars?

Of course I did.
 
Vladimir Karputov:

Did you restart the terminal after reducing the number of bars?

suncrypto:
Of course.

I made an experiment.

I opened about 100 windows in the terminal (it does not open more, there is a limit).
Processor load slightly increased to 8-10% and used memory size increased, which is logical.
Then I closed terminal, opened it again, load increased up to 70-80% and after about one minute it normalized and returned to 8-10%.

(Set it to 1 million bars in the settings).


Therefore, the situation described above (with external connection), it's like they say, either a bug or a feature.
Only developers know the right answer.
If it is a bug, then close the terminal and re-open it after such an operation. The operation is not frequent.

 
suncrypto:

If this is a feature, then closing the terminal after such an operation and reopening it is quite a solution. The operation is not frequent.

Yes, the terminal is supposed to maintain a cache of recently requested timeseries.

But it doesn't have to do it forever, I think there was a 3 or 5 minute timeout.

 
suncrypto:


Please note that from build 2650 onwards:


1.Terminal: Added setting "Load chart data in advance for open positions and orders".


To save traffic, the trading platform only downloads the price history for instruments at the moment of its actual request, e.g. when opening a chart or running a test. However, for actively used instruments this may not always be convenient. If you enable the new option, the charts of instruments for which you have open positions or pending orders will be updated in the background each time you launch the platform. Thus, when you open the charts, you will not have to wait for the data to be reloaded, they will be immediately available for analysis.

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода
  • 2020.10.08
  • www.mql5.com
В пятницу 9 октября 2020 года будет выпущена обновленная версия платформы MetaTrader 5...
 
Andrey Khatimlianskii:

Yes, the terminal is supposed to maintain a cache of recently requested timeseries.

But it shouldn't do this forever, I think there was a 3 or 5 minute timeout.

Yes, everything is fine in the terminal itself. Closing "unnecessary" windows reduces both CPU load and memory consumption.
The only question so far is about external connection from python.
 
Vladimir Karputov:

Please note that from build 2650 onwards:


1.Terminal: Added setting "Load chart data in advance for open positions and orders".


To save traffic, the trading platform only downloads the price history for instruments at the moment of its actual request, e.g. when opening a chart or running a test. However, for actively used instruments this may not always be convenient. If you enable the new option, the charts of instruments for which you have open positions or pending orders will be updated in the background each time you launch the platform. Thus, when you open a chart, you will not have to wait for the data to be reloaded - it will be immediately available for analysis.

On this point, there is a disclaimer:"Charts of instruments for which you have open positions or pending orders.
Plus, all of the charts have already been uploaded to the local database while the script is running, the traffic is minimal.

Although it is not quite correct, if we draw an analogy with the SQL Server to which we make at least 1 million requests for data, then, yes, there will be a peak load on the processor at the moment, but the load on the processor will definitely be reduced after the operation is completed.

Of course, Metatrader is not a sql server, it is a different platform, but for some reason it seems to me that after the execution of requests to MetaTrader for quotes and closing the connection with it, everything should go back to normal. I hope the metatrader developers will explain.

 
mox_dimass:

What is the bug with the rollover in the tester? In the file attached a screenshot with an example: anopen Sell position, closed by the rollover through Buy, then reopened through Sell, but with zero volume.

As a result, the position is not reopened; it disappears. It is highlighted in the screenshot. I have already written about it but without pictures. What kind of bug is this? It makes it impossible to test it.

I wonder if developers will respond to this glitch. After all, rollover is generated by the tester and not my software.

Reason: