Discussion de l'article "Le MQL5 Cookbook : Enregistrement des résultats d'optimisation d'un Expert Advisor sur la base de critères spécifiés" - page 2

 
Anatoli Kazharski:

Je n'ai pas l'intention de revenir sur ce sujet de sitôt.

Essayez de formuler votre problème de manière plus précise et postez-le ici. Peut-être quelqu'un vous proposera-t-il une solution.


Ma tâche est simple : enregistrer les passes par numéro de séquence, et non dans l'ordre des résultats de l'optimisation.

 
Aleksey Vyazmikin:

Ma tâche est simple : enregistrer les passes par numéro de séquence, et non dans l'ordre des résultats de l'optimisation.

Ajouter au tableau dynamique tel qu'il est, puis trier à la fin de l'optimisation.
 
Enregistrer où ?
 
Anatoli Kazharski:
Ajouter au tableau dynamique tel quel puis trier à la fin de l'optimisation.

C'est-à-dire pour faire un tableau supplémentaire à deux dimensions, où mettre le numéro du passage et les indicateurs pour celui-ci ?


Et si on écrit dans un fichier à la fois ? C'est à dire est ce qu'il est possible de faire - oublier par des zéros les lignes sans valeur, puis quand la valeur apparaît, les écraser ?

 
Dennis Kirichenko:
Où l'enregistrer ?

Dans un fichier, bien sûr.

 
Aleksey Vyazmikin:

Dans le dossier, bien sûr.


Anatoly vous l'a bien fait remarquer. Rassemblez les résultats dans une liste ou un tableau dynamique (je préfère la liste) pendant le processus d'optimisation, dans le corps du gestionnaire OnTesterPass(). Et à la fin de l'optimisation, dans le corps du gestionnaire OnTesterDeinit(), triez la liste/le tableau selon le critère requis et sauvegardez-le.

 
Dennis Kirichenko:

Anatoly vous l'a indiqué à juste titre. Rassemblez les résultats dans une liste ou un tableau dynamique (je préfère la liste) pendant l'optimisation, dans le corps du gestionnaire OnTesterPass(). Et à la fin de l'optimisation, dans le corps du gestionnaire OnTesterDeinit(), trier la liste/le tableau selon le critère requis et l'enregistrer.


Je n'ai pas vu quelque chose à propos de la liste, que voulez-vous dire ?

 
Aleksey Vyazmikin:

Je n'ai pas vu quelque chose à propos d'une liste, que voulez-vous dire ?


Je veux dire qu'il existe un type de données - CList - une liste. Il est pratique pour collecter les résultats dans votre tâche. Mais les résultats doivent être enveloppés dans le type de nœud - c'est un descendant de CObject.

 
Dennis Kirichenko:

Je veux dire qu'il existe un type de données - CList - une liste. Il est pratique de collecter les résultats dans ce type de données dans le cadre de votre tâche. Mais les résultats doivent être enveloppés dans le type de nœud au préalable - c'est un descendant de CObject.


Je vois - j'ai jeté un coup d'œil et j'ai réalisé qu'il y a beaucoup de complexités - vous devez les comprendre si vous voulez les utiliser... et j'ai trouvé des exemples compliqués. Pouvez-vous me montrer comment procéder dans l'exemple de cette tâche particulière ?

 

Merci beaucoup, Anatoly !

Lorsque je teste le mode d'optimisation du point d'entrée, j'ai besoin de fournir des informations sur le pourcentage de transactions gagnantes/perdantes dans un fichier.

Cela semble être une tâche triviale, mais j'ai lutté pendant 2 jours, puis je me suis offusqué des methaquot et j'ai oublié pendant une quinzaine de jours.

Aujourd'hui, en jurant contre les métaquots (ils ont implémenté les fonctions OnTester et OnTesterPass d'une manière étrange, mais ils ont également omis de mentionner dans le livre de référence que ces fonctions ont besoin que FrameAdd et FrameNext soient "initialisées", sinon elles fonctionnent comme un enfer), j'ai jeté un coup d'œil à votre exemple et je me suis rendu compte qu'il n'y avait pas de problème. ), en jetant un coup d'œil à votre exemple, j'ai fini d'écrire ce dont j'avais besoin))))