Bonjour à tous !
J'espère que vous avez apprécié l'article.
Je serais heureux d'entendre vos conseils sur la façon de convertir UGA en OOP.
J'aimerais savoir si cela
MathSrand((int)TimeLocal());
fonctionnera-t-il une fois optimisé ?
Avez-vous exécuté votre bibliothèque dans le testeur ?
1) J'aimerais savoir si ce sera
MathSrand((int)TimeLocal());
fonctionnera-t-il une fois optimisé ?
2) Avez-vous exécuté votre bibliothèque dans le testeur ?
1) Je ne vois pas pourquoi cela ne fonctionnerait pas.
2) Vous ne pouvez pas donner une réponse exhaustive à cette simple question en deux mots.
Les problèmes d'optimisation des traders peuvent être divisés en deux types : a) les "problèmes locaux" et b) les "problèmes globaux".
a) Local - un ensemble de toutes les actions d'un trader/TS (qui, à leur tour, peuvent également être divisées en tâches locales) effectuées sur chaque tic-tac. La première tâche de l'article (résolution d'équations, choix du prix optimal de l'option et autres tâches similaires) est un exemple de ce type. Elles ne nécessitent pas d'historique de prix "futur".
b) Tâches globales - optimisation d'une fonction de toutes les tâches locales (il peut s'agir du bénéfice total pour la période considérée, du drawdown, du MO, etc.) L'ensemble de l'historique des prix pour la période à optimiser est nécessaire. Le testeur interne effectue exactement ce type de tâches.
UGA a été conçu pour ne pas dépendre du testeur standard et peut être utilisé pour des tâches globales et locales sans modifier le code de l'algorithme, y compris dans les testeurs "maison". Dans le cadre du testeur standard, l'UGA ne peut être utilisé sans modifications que pour les tâches locales. Pour les tâches globales, il doit être modifié dans le testeur.
Je n'ai pas encore eu besoin d'utiliser l'algorithme d'optimisation dans un testeur qui possède son propre algorithme d'optimisation.
Décrivez votre tâche en termes généraux et nous examinerons ici les moyens de la résoudre.
Merci, joo- travail intéressant !
Des questions ont été posées sur l'application pratique de l'algorithme génétique
L'article décrit :
- la recherche du maximum/minimum d'une fonction de deux variables sur un intervalle donné
- la recherche du maximum de la fonction de profit (exemple avec ZigZag).
Veuillez donner des exemples de tâches commerciales pratiques pour lesquelles vous pensez que l'algorithme peut être utile.
- 2010.05.25
- Andrey Dik
- www.mql5.com
Décrivez votre problème en termes généraux et nous examinerons les moyens de le résoudre ici.
Le problème est simple : je veux que la fonction srand() place le générateur à un point de départ aléatoire à chaque fois que je lance le testeur.
Il s'avère que MathSrand((int)TimeLocal()) place le générateur à l'état initial précédent (le même) lors des différentes exécutions du testeur.
La tâche est simple : je veux que la fonction srand() règle le générateur sur un point de départ aléatoire à chaque fois que je lance le testeur.
Il s'avère que MathSrand((int)TimeLocal()) place le générateur à l'état initial précédent (le même) à différentes exécutions multiples du testeur.
TimeLocal donne le temps en secondes. Lors du test, il s'agira du même temps de test généré.
Essayez d'utiliser GetTickCount. Il donne honnêtement des millisecondes et n'émule rien.
Lors des tests, le temps de test généré sera le même.
О ! Nous vous remercions.
Merci, joo- travail intéressant !
Des questions ont été posées sur l'application pratique de l'algorithme génétique
L'article décrit :
- la recherche du maximum/minimum d'une fonction de deux variables sur un intervalle donné
- la recherche du maximum de la fonction de profit (exemple avec ZigZag).
Veuillez donner des exemples de tâches commerciales pratiques pour lesquelles vous pensez que l'algorithme peut être utile.
Les tâches économiques en général et les tâches des traders en particulier sont essentiellement des tâches d'optimisation.
Les traders sont constamment à la recherche des paramètres optimaux de leur TS. Voici une liste très incomplète des types de tâches que l'UGA peut aider à résoudre :
-recherche des paramètres optimaux des indicateurs
-recherche des paramètres optimaux des MM
-recherche des paramètres optimaux des filtres (tous, y compris la recherche de coefficients dans les filtres numériques) dans les indicateurs
-la formation de réseaux neuronaux de n'importe quelle topologie et de taille arbitraire
-formation de comités de réseaux de n'importe quelle topologie et de n'importe quelle taille. (un comité est un groupe de réseaux indépendants les uns des autres).
L'UGA peut être utilisé à la fois pour résoudre les tâches distinctes mentionnées ci-dessus et toutes ensemble en même temps. Pour vous aider à comprendre la puissance de l'UGA, je dirai que la possibilité de résoudre le dernier type de tâches de la liste vous permet de créer des modèles du cerveau (comme vous le savez, le cerveau est constitué de départements).
La liste des tâches peut être longue, il suffit de regarder les fils de discussion du forum.
C'est très intéressant et bien écrit. J'ai moi-même joué avec l'optimisation génétique, mais j'ai malheureusement trouvé peu d'avantages. L'AG est généralement considérée comme une méthode d'optimisation globale. C'est vrai si vous disposez de beaucoup de temps pour traiter de très grandes colonies, mais lorsque le temps (la taille de la colonie) est limité, l'AG, comme les méthodes de descente de gradient, converge vers un minimum local, et assez lentement. Bien entendu, par rapport aux méthodes de recherche brutale de toutes les combinaisons possibles de paramètres d'entrée, l'AG offre un avantage indéniable en termes de rapidité. L'une des applications les plus répandues de l'AG est la formation de réseaux neuronaux multicouches avec leur grand nombre de coefficients. Ces réseaux présentent un grand nombre de minima locaux. Pour une raison quelconque, les AG sont considérés comme le remède à ce mal. Mais en fait, le remède est l'outil appliqué, c'est-à-dire le réseau multicouche dans ce cas. Il est beaucoup plus facile de choisir un autre outil capable d'une grande précision de classification (comme buy/sell/hold) ou d'une extrapolation de régression avec une optimisation simple et sans ambiguïté ;-).
1) C'est très intéressant et bien écrit.
2) J'ai moi aussi joué avec l'optimisation génétique, mais je n'ai malheureusement pas trouvé beaucoup d'avantages. L'AG est généralement considérée comme une méthode d'optimisation globale. C'est vrai si vous disposez de beaucoup de temps pour traiter de très grandes colonies, mais lorsque le temps (la taille de la colonie) est limité, l'AG, comme les méthodes de descente de gradient, converge vers un minimum local, et assez lentement. Bien entendu, par rapport aux méthodes de recherche brutale de toutes les combinaisons possibles de paramètres d'entrée, l'AG offre un avantage indéniable en termes de rapidité. L'une des applications les plus répandues de l'AG est la formation de réseaux neuronaux multicouches avec leur grand nombre de coefficients. Ces réseaux présentent un grand nombre de minima locaux. Pour une raison quelconque, les AG sont considérés comme le remède à ce mal. Mais en fait, le remède est l'outil appliqué, c'est-à-dire le réseau multicouche dans ce cas. Il est beaucoup plus facile de choisir un autre outil capable d'effectuer une classification de haute précision (comme acheter/vendre/maintenir) ou une extrapolation de régression avec une optimisation simple et sans ambiguïté ;-).
1) Je vous remercie pour vos aimables paroles.
2) Je ne doute pas de votre connaissance du sujet, mais il vous faut tout de même quelques compétences pour travailler avec les algorithmes génétiques (4ème conseil dans la section de l'article "Recommandations pour travailler avec l'UGA" ).
L'UGA a été développé comme un outil universel qui peut être utilisé pour n'importe quel problème d'optimisation (section de l'article "Un peu d'histoire") sans aucune modification de l'algorithme. Il est disponible au maximum pour des modifications ultérieures et l'ajout d'opérateurs spécifiques. Connaissez-vous beaucoup d'algorithmes d'optimisation ayant de telles propriétés ?
Je ne sais pas pourquoi l'AG est considéré comme une panacée pour divers problèmes d'optimisation, je ne le pense pas personnellement et je ne l'ai jamais affirmé nulle part. Bien sûr, pour chaque tâche spécifique, vous pouvez choisir le meilleur outil d'optimisation en termes de vitesse d'exécution et de résultat final. L'UGA a un objectif différent : être universel.
J'ai posté quelques fonctions de test intéressantes dans le fil de discussion du forum MQL4 "Test Multivariable Multiextreme Function", l'une d'entre elles est présentée dans l'article.
Si vous le souhaitez, vous pouvez essayer de trouver les extrema des fonctions proposées en utilisant d'autres algorithmes d'optimisation que l'AG et poster les résultats ici. Vous êtes les bienvenus. Ce sera intéressant pour tout le monde et pour moi en premier lieu.
PS Je vous recommande de vous familiariser avec l'algorithme proposé dans l'article pour être convaincu du contraire (en gras), bien que je n'ai pas pour but de convaincre qui que ce soit de quoi que ce soit.
Bonne chance dans vos recherches !
- www.mql5.com
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Algorithmes Génétiques - C'est Facile ! a été publié :
Dans cet article, l'auteur parle de calculs évolutifs à l'aide d'un algorithme génétique personnellement élaboré . Il démontre le fonctionnement de l'algorithme, à l'aide d'exemples, et fournit des recommandations pratiques pour son utilisation.
GA comporte les principes, empruntés à la nature elle-même. Ce sont les principes d'hérédité et de variabilité. L'hérédité est la capacité des organismes à transférer leurs traits et leurs caractéristiques évolutives à leur progéniture. Grâce à cette capacité, tous les êtres vivants laissent derrière eux les caractéristiques de leur espèce dans leur progéniture.
La variabilité des gènes dans les organismes vivants assure la diversité génétique de la population et est aléatoire, car la nature n'a aucun moyen de savoir à l'avance quelles caractéristiques seront les plus préférables à l'avenir (changement climatique, diminution/augmentation de la nourriture, l’émergence d'espèces concurrentes, etc.). Cette variabilité permet l'apparition de créatures avec de nouveaux traits, qui peuvent survivre et laisser une progéniture dans les nouvelles conditions altérées de l'habitat.
En biologie, la variabilité, qui est due à l'émergence de mutations, est appelée mutationnelle, la variabilité due à une nouvelle combinaison croisée de gènes par accouplement, est appelée combinatoire. Ces deux types de variantes sont implémentés dans l' AG. De plus, il existe une implémentation de la mutagenèse, qui imite le mécanisme naturel des mutations (modifications de la séquence nucléotidique de l'ADN) - naturelle (spontanée) et artificielle (induite).
L'unité la plus simple de transfert d'informations sur le critère de l'algorithme est le gène - unité structurelle et fonctionnelle de l'hérédité, qui contrôle le développement d'un trait ou d'une propriété particulière. Nous appellerons une variable de la fonction le gène. Le gène est représenté par un nombre réel. L'ensemble des variables génétiques de la fonction étudiée est le trait caractéristique du -chromosome
Entendons-nous pour représenter le chromosome sous la forme d'une colonne. Alors le chromosome pour la fonction f (x) = x ^ 2 ressemblerait à ceci :
Figure 1. Chromosome pour la fonction f (x) = x ^ 2
où 0-ième indice - valeur de la fonction f (x), appelée l'adaptation des individus (nous appellerons cette fonction la fonction d’aptitude - FF , et la valeur de la fonction - VFF ). Il est pratique de stocker le chromosome dans un tableau unidimensionnel. Il s'agit du double tableau Chromosome [].
Auteur : Andrey Dik