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
I've made a test Expert Advisor for the Optimizer's mat mode
This is what an optimization graph looks like for 8 agents in parallel in full brute force mode without interleaving passes (Rand = false)
One can clearly see here that Agents are executing tasks in batches.
In order to see dependence on parameter, let's switch to display mode
Here it is - a native parabola, top of which (unit) we will look for through GA.
In shuffle mode (Rand = true), of course, full brute force finds our vertex
Here is the native parabola, the top of which (one) will be sought through GA.
Without GA mixing I did not find the extremum, but came close to it
It took 179 passes. Let me remind you, the complete set of tasks is 10001 passes. Yes, the problem is very simple, but still.
Now let's try the variant with shuffling (Rand = true).
Close again. It's clearly seen in the log, 182 passes were fully calculated, and 970 were taken from cache.
Good result, therefore, let's try to increase number of points in interval.
This is a good result, so let's try increasing the number of points in the interval.
The number of points in the interval is one million.
Rand = false
Rand = true (out of a million points, randomly chosen pairs were swapped 100 million times)
The result shows that my self-assured statement
Forum about trading, automated trading systems and trading strategies testing
Not for MT Developers! What to replace INIT_PARAMETERS_INCORRECT with ?
fxsaber, 2018.07.10 16:27
Obviously if you trace a full enumeration of y = x^2. Then randomly shuffle the opimization rows and create a new set based on the shuffling. Then the GA will not find the vertex of the parabola.
Is rather false than true.
On the other hand, the choice of fitness function as a parabola was extremely short-sighted initially, as the number of points close to one is off the charts.
There is only one question for the GA, why the exact extremum was not found without mixing, since the chosen function is ideal for this?
On the other hand, choosing a fitness function as a parabola was extremely short-sighted initially, as the number of points close to one is off the charts.
I suppose if you choose a function with a sharp peak, the GA will still break after mixing. And such a function is much closer to TC.
I've put out a test EA for the Optimizer's math mode
Unfortunately, my knowledge is not enough to understand it all ))))
I decided to make it simpler. In general, I added to my Expert Advisor a record in the file of legitimate chains. I have found 1953 possible variants out of 117649. By the way, it took me 3 days to do the full search on interval of 3 days, only open prices and 0 trades.
I have a file now. I don't know yet how to use it for optimization. I will think about it tomorrow...
And why are there fewer successful ones? Will we have to do it again?I assume that if you select a function with a sharp peak, the GA will still break after mixing. And such a function is much closer to TC.
So genetics is not designed to catch peaks. Its purpose is to find stable regions, which is what TC requires. And peaks are noise, as a rule.
As for incorrect parameter combinations, they should be eliminated at population formation stage, i.e. if gene exchange or mutation results in incorrect individual, it is necessary to repeat its generation again until the correct one is obtained. Then everything will be OK.
If sifting out byINIT_PARAMETERS_INCORRECT occurs after the population is formed, thereby reducing the size of this population, then of course this violates the normal mechanism of genetic selection. Apparently MQ has this variant. And in this case the task of the topicstarter is hardly solvable (in general case), dancing with tambourines will not help.
Thanks for your opinion, but there's no discussion here about the architecture of the programme. In case you haven't noticed...
Wrong, wrong.
I agree that your problem is exactly the wrong architecture of the program. I think you can only get the maximum by full brute force, and it will be highly unstable.
Most likely full overshoots are used on every tick. This in itself leads to slowness of operation. If so, we should consider using full searches only at Expert Advisor's start/open bar and then checking for the latest data. Such optimization always reduces resource consumption.
Genetics is not designed to catch peaks. Its purpose is to find stable regions, which is what TC requires. And peaks are noise, as a rule.
Not exactly so. Moreover, even stable areas of optimization space are still areas with dips and peaks, the FF is far from smooth.
Genetics is a versatile tool, it could be tweaked to optimise a corrupted FF but in this case it will take longer to optimise a smooth FF.
Imho, standard genetics should digest sets with half of INIT_PARAMETERS_INCORRECT without even thinking about it. Especially since these areas are usually well clustered.
but in general the best solution is to transform the input parameter space.
In vain, in vain.
I agree that your problem is in the wrong architecture of the program. I think you can only get the maximum by full brute force, and it will be very unstable.
It's not about architecture. It's about the set of functions and the order in which they are applied. In fact, originally, these functions had a single constant sequence. Then I decided that perhaps I should experiment with the order of calling them and not calling some of them. I implemented it through INIT_PARAMETERS_INCORRECT. You may see the progress. But I have a problem with genetic optimization.
Now to the point. I've created a file with legitimate chains. How to use it now? I suspect, that I should use onTester, frames... Looked at the documentation, but something doesn't add up. Can't figure out how to deal with it.
I'm thinking of reading it into an array and taking data from it...