Vos symboles et vos flux de données dans Metatrader 5 - page 4

 
zaskok:

Il existe des méthodes heuristiques qui conviennent le mieux à l'optimisation des systèmes de négociation. C'est pour cela qu'ils sont personnalisés, contrairement aux AG universels. Pensez-vous qu'il serait possible de remplacer la seule méthode heuristique du testeur par votre propre méthode écrite en MQL5 ? Si nous voulons améliorer considérablement le testeur en termes de personnalisation des données d'entrée, il serait raisonnable de personnaliser les méthodes d'optimisation (les critères d'optimisation personnalisés sont disponibles depuis longtemps) pour lui donner les meilleures performances.

Si vous voulez quelque chose de différent de GA, alors spécifiez ces méthodes exactement par leur nom et donnez des arguments avec des preuves directes des avantages, s'il vous plaît.

Mais la question la plus importante est de savoir ce qui vous pose problème avec GA. Il ne trouve pas la zone de solution pour vous ? Même en tripotant 10 fois de suite, vous n'arrivez pas à vous faire une idée des groupes ayant les caractéristiques souhaitées ?

Bien sûr que oui. Très rapidement et efficacement. Des dizaines ou des centaines de milliers de fois plus rapide que la force brute habituelle.

Obtenez-vous des résultats plus rapides ou meilleurs par d'autres méthodes (monte carlo ou recuit, par exemple) ? Ce n'est pas un fait.

Mais voilà, les critères d' évaluation de l'exécution propres à notre algorithme génétique donnent à chaque programmeur la liberté de mettre en œuvre ses propres variations de sélection. Ce mécanisme est essentiellement la clé pour créer nos propres heuristiques.

En outre, nous disposons de fonctions de contrôle/override MQL5 pour les paramètres d'entrée, ce qui nous permet de mettre en œuvre l'énumération de paramètres non numériques/non linéaires en les virtualisant dans des compteurs numériques linéaires spéciaux. Par exemple, prenez 30 paramètres non numériques, y compris des données provenant de fichiers, convertissez-les en un compteur [i] de 64 bits et tordez-le comme paramètre de travail. C'est au programmeur de décider ce qu'il y a à l'intérieur. Et la fonction de votre propre critère d'évaluation permet également de créer votre propre méthode heuristique.

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

Il existe des méthodes heuristiques qui conviennent le mieux à l'optimisation des systèmes de trading. C'est exactement pour cela qu'ils sont développés, contrairement aux AG universels. Pensez-vous qu'il serait possible de remplacer la seule méthode heuristique du testeur par votre propre méthode écrite en MQL5 ? Si nous allons améliorer considérablement le testeur en termes de personnalisation des données d'entrée, il serait raisonnable de personnaliser les méthodes d'optimisation (les critères d'optimisation personnalisés sont disponibles depuis longtemps) pour lui donner les meilleures performances.

J'applique cette méthode à la recherche des extrema. Par exemple, voici à quoi ressemble la recherche des maxima de la fonction :

et c'est la recherche elle-même :

 

C'est dans le testeur MT5, y compris la visualisation 3D.

 
Renat:
Nous avons décidé d'ouvrir des interfaces pour écrire nos propres flux de données pour MT5.

Vous serez libre d'écrire vos propres sources de données, y compris les sources de données rltime. Cela permettra de brancher n'importe quelle donnée, y compris l'historique détaillé et les tumblers de niveau 2.

Par défaut, nous fournissons un certain nombre de flux de données internes, y compris des flux hors ligne. Des personnages virtuels seront également disponibles dans le testeur.

Tout cela est gratuit, bien sûr.

Hallelujah ! Combien d'années à demander et nous voilà enfin... Même les larmes de joie et d'émotion coulent :)

Personnellement, j'ai toujours été gêné par le manque d'historique pour MT5. J'ai dû effectuer des recherches dans des programmes tiers comme Wealth-Lab et utiliser MT5 pour écrire des robots de trading. Désormais, il n'y aura plus besoin de programmes tiers.

 
forexman77:

Lorsqu'il y a trop de variables à optimiser, il y a une forte probabilité d'ajustement à l'histoire.

À mesure que les variables augmentent, le temps d'optimisation croît de manière exponentielle et il est impossible d'y échapper.

Il existe un moyen de s'en sortir, un ordinateur super puissant de la taille d'une maison).

Je connais bien ce problème, et j'ai élaboré un algorithme pour le résoudre. Ce que je ne comprends pas, c'est qu'on décide à nouveau de force pour moi que la génétique est meilleure que la force brute... Je ne pense pas et il y a des raisons et des exemples positifs, par exemple Profinity a été créé exactement en essayant des variantes, maintenant sa pertinence est dans le passé. mais néanmoins.

Encore une fois, on ne comprend pas pourquoi un marché aussi important d'agents à distance devrait être coupé, sont-ils aussi occupés qu'ils le souhaitent..... non, 80% (imho) des existants sont désœuvrés, et puis ils se coupent de leur front de travail potentiel....

 
Renat:

C'est dans le testeur MT5, y compris la visualisation 3D.

C'est génial, je ne connaissais pas ce truc, seulement ça ne marche pas pour moi, les positions des interrupteurs en 3D sont inactives, doit-il y avoir quelque chose de spécial dans le code ?
 
IvanIvanov:
Super, je ne connaissais pas ce truc, mais ça n'a pas marché pour moi, le changement de position en 3D est inactif, y a-t-il quelque chose de spécial dans le code ?
Visualisation 3D du testeur de stratégie MetaTrader 5
 

О ! Bravo, Admins !

Je comprends que le débogage sur les données historiques va enfin apparaître ?

 
Renat:

Si vous voulez quelque chose de différent de GA, alors énoncez ces méthodes exactement par leur nom et donnez des arguments avec des preuves directes des avantages, s'il vous plaît.

Mais la question la plus importante est la suivante : quel est exactement votre problème avec GA ? Il ne trouve pas la zone de solution pour vous ? Même en tripotant 10 fois de suite, vous n'arrivez pas à vous faire une idée des groupes ayant les caractéristiques souhaitées ?

Bien sûr que oui. Très rapidement et efficacement. Des dizaines ou des centaines de milliers de fois plus rapide que la force brute habituelle.

Obtenez-vous des résultats plus rapides ou meilleurs par d'autres méthodes (monte carlo ou recuit, par exemple) ? Pas vraiment.

Il est assez problématique d'apporter une preuve juste pour vous, car vous ne répondez pas tout à fait correctement à l'argumentation publique de votre myopie dans certains domaines. Et ce fil de discussion, que vous avez vous-même lancé, sert de preuve culminante, malheureusement, de cette affirmation. Bien sûr, ce ne sont pas les autres qui ont réclamé et demandé cela pendant des années, et vous avez soi-disant été repoussés..... Mais ce qui était, est ce qui était. Toutefois, vous prouver que vous avez tort semble quelque peu inutile, car c'est le facteur humain, et non la logique, qui fait l'évaluation.

C'est pourquoi je vais donner des arguments logiques en faveur des méthodes d'optimisation heuristique qui sont quelque peu différentes de GA, non pas pour vous mais pour les utilisateurs du forum. Vous trouverez ci-dessous quelques extraits de l'article que j'ai cité plus haut + mes contraintes auxquelles vous devriez prêter une attention particulière :

Toutes les méthodes d'optimisation stochastique ont un inconvénient en commun : elles peuvent s'arrêter à un certain extremum local et perdre de vue l'optimum. Pour éviter cela, il est nécessaire de maximiser les zones d'échantillonnage et le nombre d'itérations. Mais cela nuit à la vitesse de calcul. Nous devons donc toujours rechercher le juste milieu.


Cependant, si l'on y réfléchit, nous n'avons pas besoin de l'extremum global lui-même s'il n'y a pas de convergence vers lui. En d'autres termes, s'il n'y a pas de diminution conditionnellement uniforme autour de l'extremum, il est très probable que cet extremum global soit aléatoire et ne nous sera guère utile car il est inadéquat et gâchera nos calculs. C'est pourquoi il est si important d'étudier les paramètres autour de l'extremum. S'il y a convergence, cela signifie qu'il existe un système et que cette stratégie peut être étudiée plus avant.

Comme je l'ai déjà mentionné plus haut, il est important d'étudier la zone autour de l'extremum et j'ai donc décidé de converger vers la fin et de tester toutes les stratégies voisines à la dernière itération. Je n'ai pas joué avec les gradients et j'ai rendu la convergence statique en pourcentage de l'échantillon initial. Cela signifie que nous décidons dès le début de la réduction de la matrice multidimensionnelle de 1% ou 20% après chaque itération. De plus, nous décidons tout de suite, compte tenu de nos contraintes de temps, combien de stratégies nous allons prendre dans la matrice à chaque itération pour les tester. Ainsi, la taille de la matrice n'est pas du tout importante pour nous, nous savons exactement combien d'itérations et dans quel volume nous allons itérer ! C'est la beauté des méthodes stochastiques.

Après la première itération, lorsque le tout premier espace a été exploré, nous devons d'une manière ou d'une autre réduire la zone d'exploration pour l'échantillon suivant. Mais nous ne savons encore presque rien de cet espace etil me semble plutôtimprudent de couper des zones inconnues. De manière générale, l'algorithme est conçu pour trouver le maximum global, et nous sommes intéressés par tous les maxima locaux et globaux.

Nous devons connaître tous les paramètres où la stratégie peut réaliser un profit. Il se peut qu'une stratégie produise, pour certains paramètres, de bons bénéfices, mais plus risqués, tandis que pour d'autres paramètres, elle produit un bénéfice légèrement inférieur, mais s'avère plus stable et moins risquée, et si nous suivons notre algorithme, nous risquons de le perdre de vue.

Nous éliminons significativement les pires stratégies de l'espace d'étude. Ainsi, lors des itérations suivantes, nous explorons les zones avec des stratégies plus rentables et ne perdons pas de temps précieux à explorer des zones dont nous n'avons pas besoin. Finalement, notre zone d'étude converge vers tous les maxima de l'espace.

Supposons que nous ayons exploré l'espace et que nous ayons une idée approximative du nombre de sommets. Alors, qu'est-ce que cela nous donne ? Jusqu'à présent, presque rien...
Nous devons étudier ces maxima et déterminer s'ils sont de nature aléatoire ou systémique. Pour ce faire, le testeur d'optimiseur nous permet de sélectionner les meilleures stratégies et, en outre, d'explorer plus en détail les zones qui les entourent. Examinez les stratégies que nous avons manquées lors de l'optimisation. Nous savons maintenant presque tout sur les extrêmes de l'espace ! Les données obtenues peuvent faire l'objet d'un examen plus approfondi en vue d'un regroupement, d'une sur-optimisation, etc. Mais c'est une autre histoire !

Il ne s'agit pas de cet article, mais des principes généraux de la recherche et de l'optimisation des CT qui ne sont presque nulle part abordés. Par conséquent, GA n'est pas ce que nous voulons avoir dans l'arsenal de l'optimisation TS.

Mais voici le fait que les critères d'évaluation d'exécution exclusifs de notre algorithme génétique donnent à chaque programmeur la liberté de mettre en œuvre ses propres variations de sélection. Ce mécanisme est essentiellement la clé pour créer nos propres heuristiques.

En outre, nous disposons de fonctions de contrôle/override MQL5 pour les paramètres d'entrée, ce qui nous permet de mettre en œuvre l'énumération de paramètres non numériques/non linéaires en les virtualisant dans des compteurs numériques linéaires spéciaux. Par exemple, prenez 30 paramètres non numériques, y compris des données provenant de fichiers, convertissez-les en un compteur [i] de 64 bits et tordez-le comme paramètre de travail. C'est au programmeur de décider ce qu'il y a à l'intérieur. Et la fonction de votre propre critère d'évaluation permet également de créer votre propre méthode heuristique.

Je n'ai jamais entendu parler des "fonctions MQL5 pour la gestion/redéfinition des paramètres d'entrée" - donnez-moi un lien.
 
event:

J'applique cette méthode pour trouver les extrema. Par exemple, voici à quoi ressemble la recherche des maxima d'une fonction :

Merci ! Pourriez-vous fournir la formule de votre fonction approximative pour essayer de trouver ses extrema locaux dans OnTester avec l'AG ordinaire - pour comparaison.

Il serait intéressant d'entendre de votre part quelques mots constructifs sur la méthode (description, sources, pour/contre).