
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
Gentlemen! If it's not too difficult, please give me some examples of using UGA library.
What kind of examples (on what topic) are you interested in?
any that use UGA, because from the examples in the article it is not quite clear how it works. in the article there is an example with zig-zag, can we have examples with other indicators (RSI, CCI....)?
Write a script in which:
1) loading into the data array of the necessary instrument to calculate the indicator
2) calculation of indicator/s with some set of parameters (these indicator parameters should be optimised).
3) determination of entry/exit points based on indicator signals
4) calculation of a statistical indicator of interest (the number of pips gained taking into account the spread, drawdown, etc.).
Items 2), 3), 4) are steps in one iteration of GA - calculation of FF for an individual. Write such a script, and I, in turn, will try to help you "screw" UGA to it.
PS. I doubt that someone will post a ready trading example using UGA - if someone is seriously engaged in research using this library (or any other similar library), then most likely these developments are private (time is spent on studying something that is not directly related to trading).
Great article! Thank you.
1) As I can see you wanted to use UGA for optimizing the training of NNs. Was it successful?
2) What were the genes of the chromosome in this case?
3) Have you developed your own NN library as well or have you found any existing NN implementation supporting the integration with MT5 and GA?
2) Weights and biases of neurons of a network I represent as chromosome genes.
3) I have written own realization of a neural network.
Andrey, good day to you. Thank you for UGA. I am trying to learn how to use your library by the "scientific method" (on the example of UGA_script.mq5 and skin.mqh proposed by you). If you don't mind, give me an additional introduction how to correctly set the input prameters for solving the problem of Kohonen network training, when we have a set of points on the plane, which we need to assign (classify) to certain kernels. I.e. we have N points with coordinates (x,y), M kernels (which will be "shifted" after training), FF function - "proximity measure". As I understand in UGA_script.mq5 parameters should be set as follows: ChromosomeCount_P= ???? (I do not understand how to set), GeneCount_P=2*M (2 coordinates for each nucleus), Epoch_P= ???? (I don't understand how to set it). Thanks in advance.
Andrey, good day to you. Thank you for UGA. I am trying to learn how to use your library by the "scientific method" (on the example of UGA_script.mq5 and skin.mqh proposed by you). If you don't mind, give me an additional introduction how to correctly set the input prameters for solving the problem of Kohonen network training, when we have a set of points on the plane, which we need to assign (classify) to certain kernels. I.e. we have N points with coordinates (x,y), M kernels (which will be "shifted" after training), FF function - "proximity measure". As I understand in UGA_script.mq5 parameters should be set as follows:
1) ChromosomeCount_P= ???? (I don't understand how to set it),
2) GeneCount_P=2*M (2 coordinates for each nucleus),
3) Epoch_P= ???? (don't understand how to set).
Thanks in advance.
1) Set 50 to start with, if it is not enough, increase the value (don't overdo it, up to 200-300, otherwise you risk not waiting for the result).
2) Yes.
3) Start with 50-100, if it is not enough, increase the value (not too much, up to 200-1000, otherwise you risk not getting results).
The numbers are empirical, you can change them as you like, focusing either on the convergence speed or on the accuracy of the result (these are, in general, mutually exclusive requirements, the middle is somewhere in the middle - pardon the pun).
I'm poking around in the library.
Andrew, I can't understand why you should compute the fitness function BEFORE removing duplicates from the population. It's expensive.
I would control the presence of clones at the stage of descendant generation. (Which I will do, actually.)
1) Andrew, I can't understand why you should compute the fitness function BEFORE removing duplicates from the population. It is expensive.
2) I would control the presence of clones at the stage of descendant generation. (Which I will do, actually.)
1) Repeated FF calculations are not performed, because the check is performed on the historical chromosome database - if at least once FF has been performed before for such an individual, the value is taken from the database.
2) There is one nuance with the settlement of a new colony into the population. But I will keep silent about it. :) Do it the way you think is more correct and tell me about the results - after that I will tell you about the nuance.
PS In general, and not in relation to this comment, you can follow many different strategies of random GA search, each variant is worthy of attention to some extent. The results (convergence rate, search accuracy, getting stuck in local extrema) will almost directly depend on the search strategies used.
1) There are no repeated calculations of FFs, because the historical chromosome database is checked - if a FF has been performed at least once before for such an individual, the value is taken from the database.
2) There is one nuance with the settlement of a new colony into the population. But I will keep silent about it. :) Do what you think is more correct and tell me about the results - after that I will tell you about the nuance.
1) Well, well, well. Storyteller. :) You have at least one mistake there.
This is how real numbers are compared only by... mmmm... mathematicians, yes.
In such a comparison, a difference of fifteen digits after a floating point recognises genes as different. And there will always be a difference, because it's fate. ;)
At least it has to be like this:
I have no doubt that you have tested the removal of duplicates separately from the gene algorithm, so you must have an illusion that this fragment works.
2) How mysterious everything is... Where the thin is thin, the torn is torn. :)
Everything is solvable there, with or without nuances. Okay, I'll show you how I did it.
1) Well, well, well. Storyteller. :)
2) You have at least one mistake there. That's how real numbers are compared only by... mmmm... mathematicians, yes. In such a comparison, a difference of fifteen digits after a floating point recognises genes as different. And there will always be a difference, because it is fate. ;)
At least it has to be like this:
3) And you have exactly the same thing when removing duplicates. I have no doubt that you have tested the removal of duplicates separately from the gene algorithm, so you must have an illusion that this fragment works.
4) How mysterious everything is... Where the thin is thin, the torn is torn. :) Everything is solvable there, with or without nuances. Okay, I'll show you how I did it.
1) Storyteller? Hmm, unfortunately I didn't understand the humour. The database check happens in the function CheckHistoryChromosomes(chromos,historyHromosomes ) which is called from GetFitness(historyHromosomes). That's why I said correctly - there are no repeated runs of FF.
2) Reconciliation with the database occurs with checking by genes. And each gene is normalised by SelectInDiscreteSpace(temp,RangeMinimum,RangeMaximum,Precision,3) when a new chromosome appears. So there are no "fairy tales" here either.
3) See 2)
4) No mystery. The code is open and transparent. There is indeed a nuance (it is related not to implementation problems, but to the quality of convergence).