Bibliothèque: MultiTester - page 17

 

J'ai regardé le mien, en effet pour certains symboles n'apparaissaient pas les fichiers avec l'historique des tics, j'ai regardé dans le journal et c'est là :

2020.02.12 16:02:30.144 Core 1  NZDUSD : real ticks begin from 2017.01.02 00:00:00

Maintenant je comprends, le reste n'était qu'une simulation.


A propos, MultiTester ne bascule pas le symbole sur le terminal minimisé, il est préférable d'ajouter l'ouverture d'une fenêtre avant de commencer une nouvelle passe. J'ai ajouté une telle fonction à fInit pour l'instant.

bool ActivateTerminalWindow(){
   HANDLE ChartWindow = (HANDLE)ChartGetInteger(0, CHART_WINDOW_HANDLE);
   if(ChartWindow){
      HANDLE TerminalWindow = GetParent(ChartWindow);
      TerminalWindow = GetParent(TerminalWindow);
      TerminalWindow = GetParent(TerminalWindow);
      if(TerminalWindow){
         ShowWindow(TerminalWindow, 3);
         return true;
      }
   }
   return false;
}
 
Evgenii Kuznetsov:

D'ailleurs MultiTester ne bascule pas le symbole sur le terminal minimisé, il vaut mieux ouvrir une fenêtre avant de commencer une nouvelle passe.

Je ne l'ai pas vérifié, je ne l'ai pas rencontré.

 
fxsaber:

En fin de compte, j'ai procédé de la manière suivante. Former un lot de tâches à partir de fichiers ini et l'envoyer pour exécution.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Expert Advisors : Valider

fxsaber, 2020.02.22 10:46 AM

Lorsque j'ai besoin d'effectuer un grand nombre de tâches de test différentes, j'utilise Validate.


1. Je configure une tâche dans le Testeur que je veux exécuter.

2. Dans l'onglet Paramètres, j'appuie sur CTRL+C. Tous les paramètres apparaissent dans le presse-papiers.

3) En utilisant CTRL+V, je copie ces paramètres dans un fichier ini, que je place dans le dossier des tâches.

4) C'est ainsi que je crée le nombre requis de tâches - des fichiers ini (quatre tâches à l'écran).


5. Au lancement de Validate, j'indique le nom du dossier où se trouvent les tâches.


C'est terminé, Validate va maintenant exécuter ces tâches avec toutes ses astuces.


Je n'utilise MultiTester-derivatives que dans des cas spécifiques, lorsque j'ai besoin de créer des tâches au fur et à mesure que je les exécute.

Je recommande d'utiliser Validate pour exécuter un lot de tâches prêtes à l'emploi.

 

Merci de nous faire part de votre expérience sur la façon de procéder correctement. J'ai rencontré une situation où le GA ne trouve qu'un seul des extrema locaux requis.

Pour un TS/symbole particulier, je sais où chercher, donc je fais le GA sur différentes fourchettes. Mais en général, la manière de procéder n'est pas claire.

 
fxsaber:

Merci de nous faire part de votre expérience sur la façon de procéder correctement. J'ai rencontré une situation où GA ne trouve qu'un seul des extrema locaux requis.

Pour un TS/symbole particulier, je sais où chercher, donc je fais le GA sur différentes fourchettes. Mais en général, la manière de procéder n'est pas claire.

Je pense qu'il y a eu quelque chose sur le sujet ici - https://www.mql5.com/ru/forum/87536.

Ou appelez l'auteur(@Andrey Dik).

Чемпионат Алгоритмов Оптимизации.
Чемпионат Алгоритмов Оптимизации.
  • 2016.06.09
  • www.mql5.com
Чемпионат алгоритмов оптимизации задуман как соревнование для людей ищущих, любознательных, для которых стоять на месте означает движение назад...
 
Andrey Khatimlianskii:

Je pense qu'il y a eu quelque chose sur le sujet ici - https://www.mql5.com/ru/forum/87536

Ou appelez l'auteur(@Andrey Dik).

Je pose des questions dans le contexte de l'utilisation de MT5-Tester. Par conséquent, les algorithmes d'optimisation personnalisés ne sont pas appropriés.

 
fxsaber:

Merci de nous faire part de votre expérience sur la façon de procéder correctement. J'ai rencontré une situation où GA ne trouve qu'un seul des extrema locaux requis.

Pour un TS/symbole particulier, je sais où chercher, donc je fais le GA sur différentes fourchettes. Mais en général, la manière de procéder n'est pas claire.

J'arrête maintenant de tester si le drawdown est important.

et pour égayer un peu l'AG, je fais ceci :

#define  TESTER_STOP(ret) { EA_STOP = true; TesterStop(); return ret; }
double OnTester()
{
   srand((int)TimeCurrent());
// if(StartHour==20 && CountHours==22) return (-(rand() % 1000)) ;// Je l'utilise si l'AG a commencé à converger autour d'un maximum par temps d'exécution

   if(EA_STOP) return (-(rand() % 1000));                                                               // essai infructueux, interrompu par un important drawdown

   int o_count = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType() < 2) o_count++;
   }
   if(o_count < 160) return (-(rand() % 1000));                                                         // cherche à conclure au moins 160 accords en six mois

   return(AccountInfoDouble(ACCOUNT_BALANCE));
}


void OnTick()
{
   if(IS_OPTIMIZATION)
   {
      double balance = AccountInfoDouble(ACCOUNT_BALANCE);
      MaxBalance = fmax(MaxBalance, balance);
      if(MaxBalance - balance > 200) TESTER_STOP();                                                     // arrêter le test à un drawdown de 200
   }


C'est la méthode que je teste depuis une semaine, maintenant je suis très content de l'AG.

 

Dans mon optimiseur, je répète GA jusqu'à ce que, quatre fois, il n'y ait pas d'amélioration par rapport au dernier résultat. Cela peut prendre une douzaine de tentatives ou plus. J'obtiens généralement de bons résultats. Bien que cela prenne beaucoup de temps.

Lorsque je ré-optimise aux dates actuelles, je peux obtenir un nouveau maximum local amélioré, et si ce n'est pas le cas, je repars de l'ancien et je l'affine pour le nouveau marché par une optimisation lente (je choisis un groupe de variables interdépendantes et j'optimise itérativement chaque combinaison par paires).

En outre, j'ai introduit des micro-pénalités (mutagènes supplémentaires) dans OnTester. Dans ce cas, l'AG effectue plus de passes en raison de mutations plus fréquentes et, par conséquent, de nouveaux maxima sont trouvés plus souvent.

// Les micro-pénalités permettent de choisir une valeur de paramètre plus petite lorsque les résultats sont égaux.
res -= BP * 0.0001 / 200;       // Diviser par la plage d'optimisation (0...200)
 
Igor Makanu:

J'arrête les tests maintenant s'il y a une forte baisse.

et pour remonter un peu le moral de l'AG, je fais ceci :

Je teste depuis une semaine avec cette méthode, je suis maintenant très satisfait de GA.

Je procède à peu près de la même manière. Le contrôle du drawdown permet une optimisation plus rapide, et le contrôle du nombre de trades permet de mieux diriger l'AG, en filtrant les déchets.

Mais ce n'est pas suffisant.


ZY C'est moins cher.

TesterStatistics(STAT_TRADES)
 
Edgar Akhmadeev:

a introduit des micro-pénalités (mutagène supplémentaire) dans OnTester. Dans ce cas, l'AG effectue plus de passes en raison de mutations plus fréquentes et, par conséquent, de nouveaux maxima sont trouvés plus souvent.

Veuillez clarifier ce point.