Your symbols and your datafeeds in Metatrader 5 - page 4

 
zaskok:

There are heuristic methods that are best suited to optimising trading systems. This is exactly what they are developed for, unlike the universal GAs. Do you think it would be possible to replace the only heuristic method in the tester with your own one written in MQL5? If we are going to dramatically improve the tester in terms of customization of the input data, then it would be reasonable to customize the optimization methods (custom optimization criteria have long been available) to give it the best performance.

If you want something different from GA, then specify these methods exactly by name and give arguments with direct evidence of advantages, please.

But the most important question is - what exactly is it about GA that you're not happy with? It doesn't find the solution area for you? Even with 10 times successive groping method you don't get an idea of the clusters with the desired characteristics?

Of course you do. Very quickly and efficiently. Tens or hundreds of thousands of times faster than the usual brute force.

Do you get results faster or better by other methods (monte carlo or annealing, for example)? Not a fact.

But here is the fact that our genetic algorithm 's own run evaluation criteria give each programmer the freedom to implement his or her own selection variations. This mechanism is essentially the key to creating our own heuristics.

In addition to this we have MQL5 control/override functions for input parameters, which allows us to implement enumeration of nonnumeric/nonlinear parameters by virtualising them into special linear numeric counters. For example, take 30 non-numeric parameters, including data from files, convert it into a 64 bit counter[i] and twist it as a working parameter. It's up to the programmer to decide what's inside. And the function of your own evaluation criterion also helps to create your own heuristic method.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 
zaskok:

There are heuristic methods that are best suited to optimising trading systems. This is exactly what they are developed for, unlike the universal GAs. Do you think it would be possible to replace the only heuristic method in the tester with your own one written in MQL5? If we are going to dramatically improve the tester in terms of customization of the input data, it would be reasonable to customize the optimization methods (custom optimization criteria have long been available) to give it the best performance.

I apply this method to search for extrema. For example, this is what the search for function maxima looks like:

and this is the search itself:

 

This is in the MT5 tester, including the 3D visualisation.

 
Renat:
We decided to open interfaces to write our own datafeeds for MT5.

You will be free to write your own data sources, including rltime data sources. This will allow any data to be plugged in, including detailed history and Level2 tumblers.

By default we will provide a number of in-house datafiles, including offline ones. Virtual characters will also be available in the tester.

All this is free of charge, of course.

Hallelujah! How many years of asking and here we are at last... Even tears of joy and emotion flow:)

Personally, I was always afraid of using MT5 to the fullest extent, lack of history for it. I had to conduct researches in third-party programs like Wealth-Lab and use MT5 to write trading robots. Now there will be no need in third-party programs.

 
forexman77:

When there are too many variables to optimise, there is a high probability of fitting to history.

As the variables grow, the optimization time grows exponentially and there is no getting away from this.

There is a way out of this, a super powerful computer the size of a house)

I'm familiar with this problem, and I've worked out an algorithm for solving it. What I don't understand is that they forcefully decide for me again that genetics is better than brute force... I don't think so and there are reasons and positive examples, for example Profinity was created exactly by trying variants, now its relevance is in the past. but nevertheless.

Again, it is unclear why such a large market of remote agents should be cut off, are they as busy as they want to be.... not so, 80% (imho) of the existing ones are idle, and then they cut off their potential work front...

 
Renat:

This is in the MT5 tester, including the 3D visualisation.

That's great I didn't know about this thing, only it didn't work for me, the switch positions in 3D are inactive, should there be something special in the code?
 
IvanIvanov:
Great, I didn't know about this thing, but it didn't work for me, switching positions in 3D is inactive, is there something special in the code?
MetaTrader 5 Strategy Tester 3D Visualization
 

О ! Bravo, Admins !

I understand that debugging on historical data will finally appear ?

 
Renat:

If you want something different from GA, then state these methods exactly by name and give arguments with direct evidence of the benefits, please.

But the most important question is, what exactly is your problem with GA? It doesn't find the solution area for you? Even with 10 times successive groping method you don't get an idea of the clusters with the desired characteristics?

Of course you do. Very quickly and efficiently. Tens or hundreds of thousands of times faster than the usual brute force.

Do you get results faster or better by other methods (monte carlo or annealing, for example)? Not really.

It's quite problematic to bring a proof just for you, as you don't quite correctly respond to public argumentation of your shortsightedness in some matters. And this thread, which you yourself started, serves as the culminating proof, unfortunately, of that assertion. Of course, it wasn't others who have been calling for and asking for this for years, and you supposedly have been repulsed.... But what was, is what was. However, proving you wrong seems to be somewhat pointless, as it is the human factor, not logic, that does the assessment.

That's why I will give logic arguments in favor of methods of heuristic optimization which are somewhat different from GA, not for you but for forum users. Below are some excerpts from the article I cited earlier + my stresses that you should pay special attention to:

All stochastic optimization methods have one drawback in common - they can stop at some local extremum and lose sight of the optimal one. To avoid this, it is necessary to maximize the sample areas and the number of iterations. But this impairs the calculation speed. So we must always look for the golden mean.


However, if we think about it, we do not need the global extremum itself if there is no convergence to it. That is, if there is no conditionally uniform decrease around the extremum, it is very likely that this global extremum is random and will be of little use to us as it is inadequate and will spoil our calculations. This is why it is so important to study the parameters around the extremum. If there is convergence, it means that there is a system and this strategy can be studied further.

As I have already mentioned above, it is important to study the area around the extremum and therefore I decided to converge to the end and test all neighboring strategies at the last iteration. I didn't play with the gradients and made convergence static as a percentage of the initial sample. It means we decide at the very beginning how much to cut the multidimensional matrix by 1% or 20% after each iteration. Also, we decide right away, given our time constraints, how many strategies we will take from the matrix at each iteration for testing. Thus, the size of the matrix is not important to us at all, we know exactly how many iterations and in what volume we will iterate! This is the beauty of stochastic methods.

After the first iteration, when the very first space has been explored, we must somehow reduce the exploration area for the next sample. But we know almost nothing about this space yet andit seems to me ratherreckless to cut off unknown areas. Generally speaking, the algorithm is designed to find the global maximum, and we are interested in all local and global maxima.

We need to know all parameters where the strategy can make a profit. Perhaps a strategy at some parameters produces good profits, but more risky, while at other parameters it produces a slightly smaller profit, but turns out to be more stable and less risky, and if we follow our algorithm, we may lose sight of it.

We meaningfully remove the worst strategies from the study space. Thus in the next iterations we explore the areas with the more profitable strategies and do not waste precious testing time exploring the areas we do not need. Eventually, our study area converges to all maxima of the space.

Suppose we have explored the space and have an approximate idea of how many highs there are. So what does this give us? So far almost nothing...
We need to investigate those maxima and find out whether they are of random nature or systemic. For this purpose, the optimizer tester allows us to select the best strategies and additionally, to explore the areas around them in more detail. Investigate those strategies that we have missed during optimization. We now know almost everything about the space extremes! The data obtained can be further investigated for clustering, over-optimization and so on. But that is another story!

It is not about this article, but about general principles of search and optimization of TC which are almost nowhere discussed. Therefore, GA is not what we want to have in the arsenal of TS optimization.

But here is the fact that the proprietary run evaluation criteria in our genetic algorithm gives each programmer the freedom to implement his or her own selection variations. This mechanism is essentially the key to creating our own heuristics.

In addition to this we have MQL5 control/override functions for input parameters, which allows us to implement enumeration of nonnumeric/nonlinear parameters by virtualising them into special linear numeric counters. For example, take 30 non-numeric parameters, including data from files, convert it into a 64 bit counter[i] and twist it as a working parameter. It's up to the programmer to decide what's inside. And the function of your own evaluation criterion also helps to create your own heuristic method.

I've never heard of "MQL5 functions for managing/redefining input parameters" - give me a link.
 
event:

I apply this method to find extrema. For example, this is what finding maxima of a function looks like:

Thank you! Could you provide the formula of your approximate function to try to find its local extrema in OnTester with the regular GA - for comparison.

It would be interesting to hear from you some constructive words on the method (description, sources, pros/cons).