Is the linear deceleration a programming error or a feature of MT4? - page 9

 
Serj_Che:

I have no complaints against you.

Neither does papaklass .

Are you his lawyer?

Are you his prosecutor? I didn't like the fact that you thought that you could say it for him, but not for you, and that you can't say it here, but you can say it for that man.

I just didn't like it, so I spoke out. No personal claims, just in relation to the situation.

 

-Aleks-:

So the approximate processing rate is 23 passes from 2000 to 2013 on the hourly timeframe at the opening prices:

1. Kamikadze_MA_V_01 - 5 minutes

2. Kamikadze_MA_V_02 - 15 minutes.

3. Kamikadze_MA_V_03 - more than 30 minutes

Such an operation simply kills the possibility of EA fine-tuning in real time.


So 23 passes in 30 minutes is a long time? That's interesting.

My Expert Advisor on M15 from June till September takes 24 hours for one pass in the tester. That's a long time. I am not even going to talk about optimization. And it is not necessary...

 
decanium:

My EA on M15 from June to September on all ticks in the tester takes 24 hours per pass. That is a long time. I am not even talking about the optimization. And there is no need for it.

And the multicurrency one on M5 on the opening prices on the 9-month history spends 20 minutes for 15000 passes of the genetics. But that's no indicator either. Much depends on the number of indicators used...
 
decanium:

So 23 passes in 30 minutes is a long time...? Interesting.

My EA on M15 from June till September on all ticks in the tester spends a day for one pass. That is a long time. I am not even going to talk about the optimization. And there is no need for it.

The most important thing is that I've shown how the speed has regressed during the evolution of the Expert Advisor. In general, I doubt an EA that uses ticks because ticks are generated and have nothing to do with history.

micle:
And I have a multicurrency EA on M5 on opening prices on a 9 month history spends 20 minutes on 15000 genetic passes. But it's not an indicator either. A lot depends on the number of indicators used...

But is it possible to significantly speed up the performance of the EA on the history by preparing the calculated data of the indicators and saving them into a file?

 
-Aleks-:

Most importantly, I have shown how the speed has regressed as the EA has evolved. An EA that works on ticks - I doubt such EAs at all, as ticks are generated and have nothing to do with history.

Is it possible to significantly speed up the work of the EA on the history, by preparing the calculated data of indicators and saving them into a file?

It is likely that the speed of reading from the disk will be slower than the calculation speed of the optimized indicator. And what about the calculations of the remote agents? Do you want to send them the calculated indicators? In your case there are many ways of optimizing the speed of execution. You need to avoid unnecessary loops. + to think whether it is so critical to perform all actions on every tick, perhaps it will be enough to limit it to " new bar event".

 
micle:

There is a chance that the speed of reading from the disk will lose out to the calculation speed of the optimised indicator. And what about the calculations on the remote agents? Do you want to send them the calculated indicators? In your case there are many ways of optimizing the speed of execution. You need to avoid unnecessary loops. + to think whether it is so critical to do everything on every tick, maybe it will be enough to limit with " new bar event".

Can't we read the data once, create an array from it and access it later?

As for my specific EA, I remind that I optimized it by opening prices - i.e. without ticks, apparently. And as for thinking about it, in the end I'm paying to the Appliciant/Developer for optimization of my own code, but without checking of events in the code for the action of the EA, which promises a significant speed increase in the optimizer, I hope it is so.

I hope so! Thank you for the wise advice!

I would like to ask a question, if 20 EAs work simultaneously at the moment of bar opening, won´t it cause a peak slowdown and errors in order opening because the price changes drastically during the data estimation?

 
-Aleks-:

Can't we read the data once, create an array of them and then access them?

During testing, we run it through the history. Emulation of trading. When the Expert Advisor receives only those data that have already been received at every next count (Expert Advisor call). In the case of the file, it will have at its disposal the entire history of the indicator, including the future that awaits it in future calls. By the way, the array will occupy a lot of memory space in this case. I assure you that this is not the direction we should move to during optimization. At least, not in this case anyway.


-Aleks-:

I have a relevant question: if 20 EAs work simultaneously at the moment of bar opening, won't it cause a peak slowdown and errors in order opening, because the price will greatly change during the data calculation?

If all 20 EAs work on the same symbol, yes. They will start calculations almost simultaneously. But we must take into account that:

- Each of them will be executed in a separate thread. In case of 4-core computer's configuration 4 of them can be executed simultaneously and have almost no mutual influence.

- the time required for a single calculation will most likely be incomparably short compared to the time of sending a trade order. It is for this reason, it would be better to send asynchronously trade orders for current prices (if several orders can be generated in 1 pass). This will not have to wait for the result of the first order before sending the second. But there may be different options here, too. Everything depends on the trading strategy.


In the case of Expert Advisors running on different symbols, the ticks and the new bar will most often not occur simultaneously.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
micle:

When testing, a run through the history is performed. Emulation of trading. When at each next countdown (call of the Expert Advisor) it receives only the data that would have already been received. In the case of the file, it will have at its disposal the entire history of the indicator, including the future that awaits it in future calls. By the way, the array will occupy a lot of memory space in this case. I assure you that this is not the direction we should move to during optimization. At least, not in this case anyway.

In case all 20 Expert Advisors are running on one and the same tool, yes. They will start calculations almost simultaneously. But we must take into account that:

- Each of them will be executed in a separate thread. In case of 4-core computer configuration 4 can be executed simultaneously with practically no mutual influence.

- The time for a single calculation will most likely be incomparably short with the time of sending a trade order. It is for this reason, it would be better to send trade orders for current prices (if several of them can be generated on 1 pass) asynchronously. This will not have to wait for the result of the first order before sending the second. But there may be different options here, too. It all depends on the trading strategy.

In the case of Expert Advisors operating in different symbols, the ticks and a new bar will not usually occur simultaneously.

Did I get it right that we should make an artificial delay in sending orders to open orders without waiting for the confirmation that they have opened?

 
-Aleks-:

Am I correct in assuming that there should be an artificial delay when orders are sent to open orders, but without waiting for confirmation that they have opened?

There is no need to make any artificial delays. The internet and the broker will do it for you...
 

micle:
никаких искусственных задержек делать не нужно. Это за вас сделает интернет и брокер... 

I am talking about the situation that occurs in manual trading - you send a request to open an order and wait for it to be processed, sometimes you wait for a minute and when you try to send another order you get "channel is busy", as a result, the first order is not opened because of price changes and the second one was not sent by the terminal (or the broker did not accept it?).How will the EA behave in such a case? Is it necessary to prescribe in any special way or will it be able to send orders without waiting for their execution?

Reason: