Bibliothèque: MultiTester - page 41

 
La mise en veille pendant 10 secondes n'aide pas non plus. Seul l'effacement de ce dossier résout le problème.
 
klycko mise en veille pendant 10 secondes n'aide pas non plus. Seul l'effacement de ce dossier résout le problème.

Postez le code d'optimisation de MQL5\Experts\Examples\MACD\MACD Sample.mq5. Vous pourrez alors essayer de le reproduire. Il n'y a pratiquement plus de travail constructif.

 
fxsaber #:

Téléchargez le code d'optimisation de MQL5\Experts\Examples\MACD\MACD Sample.mq5. Vous pourrez ensuite essayer de le reproduire. Il n'y a pratiquement plus de travail constructif.

Je vous remercie ! Je vais essayer de préparer les fichiers et de les publier. Pour l'instant, tout est encore en désordre.

 
fxsaber #:

Téléchargez le code d'optimisation de MQL5\Experts\Examples\MACD\MACD Sample.mq5. Vous pourrez ensuite essayer de le reproduire. Il n'y a pratiquement plus de travail constructif.

Bonjour !

J'ai préparé les fichiers et je les ai joints.

Optimisation du 25.03 au 20.05.2024 sur le timeframe M1.

Dépôt 17000. Effet de levier 40. Maximum du critère complexe.


Tout d'abord, nous devons nettoyer le dossier "C:Úsers\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" pour la pureté de l'expérience.

Le script Nocturne doit être exécuté un paramètre à la fois pour l'optimiser.

Il produit ensuite des résultats :

Pour le premier paramètre : ProfitNow -1478 ParamMax 0.37 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 30 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.


Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 à plusieurs reprises.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 à plusieurs reprises.


Cela montre que le cache de données se bloque sur le troisième paramètre.


Nous devons à présent effacer le dossier "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" une nouvelle fois.

Et c'est reparti pour un tour :


Sur le premier paramètre : ProfitNow -1478 ParamMax 0.37 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 30 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.


Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 à plusieurs reprises.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 plusieurs fois


Les lignes 151-154 du script Nocturne disent tout comme vous me l'avez demandé :

Run(Odinar) ;

int GLOC = MTTESTER::GetLastOptCache(Bytes) ; // Récupère le fichier opt dans un tableau d'octets Bytes

TESTERCACHE<ExpTradeSummary> Cache ;

bool CL = Cache.Load(Bytes) ; // Introduit le tableau d'octets Bytes dans Cache


Le bogue se trouve bien sûr dans le code que j'ai écrit, mais je ne sais pas encore comment le corriger.

Cependant, j'ai découvert expérimentalement que si vous supprimez manuellement tous les fichiers opt du dossier "C:\NOctets" avant d'exécuter Run.

à partir du dossier "C:ÚsersäusAppAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache",

alors mon code fonctionne correctement et effectue l'optimisation sur le paramètre sélectionné.


Si ce dossier n'est pas nettoyé, le testeur n'effectue pas d'optimisations répétées (avec les mêmes données inchangées), mais lit les fichiers suivants

le fichier opt déjà existant dans ce dossier. Ceci est clairement visible lors de l'exécution manuelle répétée de la même optimisation.

On peut voir que l'optimisation réelle n'est effectuée que la première fois, et qu'elle ne lit alors que le fichier opt du dossier.

Cette lecture répétée ne semble pas mettre à jour le contenu du cache, et c'est ce qui provoque l'erreur dans mon code.


Le fait d'effacer ce dossier pourrait aider à résoudre l'erreur. Bien sûr, c'est une mauvaise solution, et il serait plus élégant de pouvoir restaurer les bonnes données dans le cache.

Mais je ne sais pas comment faire. Pour l'instant, les données de l'optimisation réelle précédente sont suspendues dans le cache (elles ne correspondent pas à la relecture du dossier).

Malheureusement, ce dossier ne peut pas être nettoyé à partir du script à l'aide de FolderClean, car cela est interdit dans MQL5.

Il est hors du "bac à sable" et n'est rempli que par le testeur de stratégie.


Peut-être devriez-vous créer un module complémentaire externe au moyen de C++ et l'exécuter à partir du script.


Cordialement, Alexander

Dossiers :
 

Erreur dans le texte :



Bonjour !

J'ai préparé les fichiers et je les ai joints.

Optimisation du 25.03 au 20.05.2024 sur le timeframe M1.

Dépôt 17000. Effet de levier 40. Maximum du critère complexe.


Tout d'abord, nous devons nettoyer le dossier "C:Úsers\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" pour la pureté de l'expérience.

Le script Nocturne doit être exécuté un paramètre à la fois pour l'optimiser.

Il produit ensuite des résultats :

Pour le premier paramètre : ProfitNow -1478 ParamMax 0.37 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 30 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.


Pour le premier paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 à plusieurs reprises.


Cela montre que le cache de données est bloqué pour le troisième paramètre.


Nous devons à présent vider le dossier "C:\Users\ASUS\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" une nouvelle fois.

Et c'est reparti pour un tour :


Sur le premier paramètre : ProfitNow -1478 ParamMax 0.37 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 30 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.


Pour le premier paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le deuxième paramètre : ProfitNow -379 ParamMax 6 pour la première fois.

Pour le troisième paramètre : ProfitNow -379 ParamMax 6 à plusieurs reprises.


Les lignes 151-154 du script Nocturne disent tout comme vous me l'avez demandé :

Run(Odinar) ;

int GLOC = MTTESTER::GetLastOptCache(Bytes) ; // Récupère le fichier opt dans un tableau d'octets Bytes

TESTERCACHE<ExpTradeSummary> Cache ;

bool CL = Cache.Load(Bytes) ; // Introduit le tableau d'octets Bytes dans Cache


Le bogue se trouve bien sûr dans le code que j'ai écrit, mais je ne sais pas encore comment le corriger.

Cependant, j'ai découvert expérimentalement que si vous supprimez manuellement tous les fichiers opt du dossier "C:\NOctets" avant d'exécuter Run.

à partir du dossier "C:ÚsersäusAppAppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache",

alors mon code fonctionne correctement et effectue l'optimisation sur le paramètre sélectionné.


Si ce dossier n'est pas nettoyé, le testeur n'effectue pas d'optimisations répétées (avec les mêmes données inchangées), mais lit les fichiers suivants

le fichier opt déjà existant dans ce dossier. Ceci est clairement visible lors de l'exécution manuelle répétée de la même optimisation.

On peut voir que l'optimisation réelle n'est effectuée que la première fois, et qu'elle ne lit alors que le fichier opt du dossier.

Cette lecture répétée ne semble pas mettre à jour le contenu du cache, et c'est ce qui provoque l'erreur dans mon code.


Le fait d'effacer ce dossier pourrait aider à résoudre l'erreur. Bien sûr, c'est une mauvaise solution, et il serait plus élégant de pouvoir restaurer les bonnes données dans le cache.

Mais je ne sais pas comment faire. Pour l'instant, les données de l'optimisation réelle précédente sont suspendues dans le cache (elles ne correspondent pas à la relecture du dossier).

Malheureusement, ce dossier ne peut pas être nettoyé à partir du script à l'aide de FolderClean, car cela est interdit dans MQL5.

Il est en dehors du "bac à sable" et n'est rempli que par le testeur de stratégie.


Peut-être devriez-vous créer un module complémentaire externe au moyen de C++ et l'exécuter à partir du script.


Cordialement, Alexander

 

J'ai posté mon robot pour optimisation, car Nocturne est orienté sur sa liste de paramètres.

Mais pour MQL5\Experts\Examples\MACD\MACD Sample.mq5, il a besoin de beaucoup de modifications.


D'ailleurs, pourquoi avez-vous besoin du paramètre d'entrée int inNum = 0 ?

Ou s'agit-il simplement d'un atavisme ?

 
fxsaber #:

Téléchargez le code d'optimisation de MQL5\Experts\Examples\MACD\MACD Sample.mq5. Vous pourrez ensuite essayer de le reproduire. Il n'y a pratiquement plus de travail constructif.

Bon après-midi !

J'ai réussi à résoudre tous mes problèmes avec l'aide d'Alexander Slavsky : https://www.mql5.com/fr/users/s22aa.

Il m'a envoyé le code pour supprimer le contenu du cache.

Je n'ai pas pu nettoyer le cache directement, car il est en dehors du bac à sable.

Peut-être que cela sera utile à quelqu'un avant d'exécuter la procédure Run, afin que les résultats des optimisations passées n'interfèrent pas avec les nouvelles.

Je joins ce script.

Vos bibliothèques et cette procédure de nettoyage m'ont permis d'optimiser le robot de manière cohérente.

Merci beaucoup pour ces codes et votre aide.

Cordialement, Alexander

Aleksandr Slavskii
Aleksandr Slavskii
  • 2024.05.27
  • www.mql5.com
Профиль трейдера
Dossiers :
 
klycko optimisations répétées (avec les mêmes données inchangées), mais les lit.

le fichier opt déjà existant dans ce dossier. Cela peut être clairement observé lors de l'exécution manuelle répétée de la même optimisation.

Vous pouvez voir que l'optimisation réelle n'est effectuée que la première fois, et qu'elle ne lit alors que le fichier opt du dossier.

Cette lecture répétée ne semble pas mettre à jour le contenu du cache, et c'est ce qui provoque l'erreur dans mon code.

sinput uint Range = 2;

void OnTesterInit( void )
{
  ::MathSrand((int)::TimeLocal());

  const int Start = ::MathRand();
  const int Step = ::MathRand();

  const uint TmpRange = (::Range < 2) ? 2 : ::Range;

  ::ParameterSetRange("Range", true, TmpRange, Start, Step, Start + (TmpRange - 1) * Step);
}
 
klycko #:

pour effacer le contenu du cache.

Dans MTTester.mqh, il y a une fonction très demandée lorsque vous faites beaucoup d'exécutions uniques.

  static bool DeleteLastTST( void )
  {
    const string Path = ::TerminalInfoString(TERMINAL_DATA_PATH)+ "\\Tester\\cache\\";
    string FileNames[];

    const int Size = MTTESTER::GetFileNames(Path, "*.tst", FileNames);

    return(Size && kernel32::DeleteFileW(Path + FileNames[Size - 1]));
  }

Si vous remplacez tst par opt, le dernier fichier opt sera supprimé. Il semble redondant de nettoyer tout le dossier Cache.

 
Merci de votre attention !