
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Updated to 2269. Profiler results of a large (non-synthetic) EA.
Tester
Virtual
Probably, profiler makes wrong measurements. Otherwise it turns out that OrderSend five takes 912 ms on average.
Any dubbles normalised by the same algorithm (e.g. via NormalizeDouble) can be compared with each other directly.
This obvious fact allows to avoid in many cases costly constructs of comparing real numbers. Which in some tasks may significantly increase performance.
Perhaps one of the most exemplary of these tasks is Tester. Let's analyze it by example.
There is BuyLimit. At each tick, the tester must compare BuyLimit with the Ask price. The standard tester does it this way at present
I.e. any trade level(pending order or SL/TP) triggers one Normalization.
But we can always get by with a very effective comparison construct if prices have been normalized beforehand (before the backtest).
if (BuyLimit_Price >= Ask) BuyLimit -> Buy;
Let's try a comparison. I have run this robot in the tester through Virtual.
Comparison of prices through normalization.
Without normalization.
We can see that the gain is more than 20% if we don't do normalization when comparing prices.
As a consequence, if the in-house Tester is switched to normalised prices and does not do internal normalisation when comparing prices, a serious performance improvement can be achieved.
After direct assignment without mat. operations also
Prefixing, of course, copies the byte representation of the number unchanged.
Should we run a test longer than one second for clarity?
There is a spread of 3 times in one version: shortest pass 0:00:00.604, longest pass 0:00:01.743. what do we compare?
Should we do a test longer than one second for clarity?
There is a spread of 3 times in one version: shortest pass 0:00:00.604, longest pass 0:00:01.743. what do we compare?
Comparing the shortest, of course. I'm used to racing on filtered ticks. Will prepare unfiltered ones later.
Comparing the shortest, of course.
Why? Optimisation does not consist of a single pass. What difference does it make that one pass is so fast, if the average is not much different.
I'm used to racing on filtered ticks. I will prepare unfiltered ones later.
I can just do a longer interval. At least 30 seconds for the test.
Why? It's not like optimisation consists of one pass. What difference does it make that one pass is so fast, if the average is not much different.
This parameter is optimized.
And it does not affect the logic. That's why it is shortest.
This parameter is optimised
And it does not affect the logic. That's why it's shortest.
What does EA logic have to do with it? We are measuring the speed of the tester.
What's the EA's logic got to do with it? We are measuring the speed of the tester.
This is how one agent works, it consecutively counts the same thing. If you take away all the randomness, the net performance is close to the shortest.