Bibliothèque: MultiTester - page 22

 
Je réponds à ma propre question : les fichiers mqh n'ont pas besoin d'être compilés séparément. Et vous avez commencé à chercher aussi, n'est-ce pas ? Cela fonctionne. Je vous remercie de votre attention.
 

Lorsque vous consultez les résultats de l'optimisation, il se peut que certains passages vous plaisent et que vous souhaitiez obtenir rapidement des informations utiles à leur sujet afin de les utiliser ultérieurement.

J'ai trouvé cette méthode très pratique.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Place la chaîne de la passe unique dans le presse-papiers.
  }

Après un passage unique, toutes les informations nécessaires sont disponibles sous forme de chaîne de caractères dans le presse-papiers. Je la colle via CTRL+V, là où c'est le plus pratique.

Ensuite, lorsque j'ai accumulé un grand nombre de chaînes intéressantes, j'évalue la situation globale.


Vous pouvez bien sûr former la chaîne vous-même. Ce qui précède n'est qu'un exemple. L'essentiel est qu'elle tienne dans le presse-papiers.

 

fxsaber, merci pour le multitester ! Vos publications sont toujours au top !


Avant d'inventer une bicyclette, j'aimerais demander un conseil.

Suite à l'optimisation des paramètres de l'EA par une liste de symboles à l'aide de multitester, j'obtiens une liste de fichiers .opt et les résultats de l'optimisation ne peuvent être visualisés que séparément pour chaque symbole.

Comment puis-je les combiner en un résultat moyenpour tous les symboles? Disons que je souhaite obtenir un graphique MT5 2D standard de deux paramètres (des carrés verts ombrés).

Ou comment est-il plus facile de combiner tous les résultats dans un tableau Excel, l'exportation manuelle de tous les résultats du S&P500 vers Excel n'est pas très pratique.....

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

L'optimisation des paramètres de l'EA par la liste des symboles à l'aide du multitester permet d'obtenir une liste de fichiers .opt et les résultats de l'optimisation ne peuvent être visualisés que séparément pour chaque symbole.

Et comment les combiner en un résultat moyenpour tous les symboles? Supposons que je veuille obtenir un graphique MT5 2D standard de deux paramètres (des carrés verts ombrés).

Ou comment est-il plus facile de combiner tous les résultats dans un tableau Excel, l'exportation manuelle de tous les résultats du S&P500 vers Excel n'est pas très pratique.....

Il est possible de consolider tous les fichiers opt de la multi-optimisation en un seul via TesterCache.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
J'essaie d'utiliser google translate mais je n'arrive pas à m'y retrouver. Est-ce qu'il y a un tutoriel sur l'anglais ? Je ne comprends pas à quel moment je peux l'activer et faire la liste des symboles à tester avec mon expert. Ou dois-je éditer un fichier de code manuellement et l'importer? Merci de votre réponse.
 
Thierry Waltrich:
J'essaie d'utiliser google translate mais je n'arrive pas à m'y retrouver. Est-ce qu'il y a un tutoriel sur l'anglais ? Je ne comprends pas à quel moment je peux l'activer et faire la liste des symboles à tester avec mon expert. Ou dois-je éditer un fichier de code manuellement et l'importer? Merci d'avance !

Il y a ici des personnes qui utilisent activement cet outil (ou qui s'en inspirent). Ce serait formidable s'ils pouvaient vous aider à le comprendre.

Malheureusement, j'ai tellement partagé mon travail avec la communauté que non seulement je ne trouve plus le temps de répondre de manière constructive aux questions des débutants, mais j'ai aussi presque cessé de publier mes développements et mes résultats.

 

Une façon pratique d'exécuter des tests en amont lors de l'analyse manuelle des résultats des optimisations.

// Exécuter Forward à partir du tableau des résultats de l'optimisation (exécuté dans le terminal).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/fr/code/26132

sinput datetime inForward = D'2020.01.01'; // En avant de

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

J'ouvre le tableau d'optimisation de n'importe quel Expert Advisor et je clique sur "Exécuter un test unique" sur les passages qui m'intéressent. J'obtiens le résultat de la passe.

Cela permet de gagner beaucoup de temps (pour moi, une passe dure quelques secondes), en particulier avec BestInterval.

 
Thierry Waltrich:
J'essaie d'utiliser google translate mais je n'arrive pas à m'y retrouver. Est-ce qu'il y a un tutoriel sur l'anglais ? Je ne comprends pas à quel moment je peux l'activer et faire la liste des symboles à tester avec mon expert. Ou dois-je éditer un fichier de code manuellement et l'importer? Merci de votre réponse.

Vous devez sélectionner l'expert que vous souhaitez optimiser dans le testeur de stratégie et définir les paramètres à optimiser.

Ensuite, compilez l'exemple 1 et glissez-le sur n'importe quel graphique (exécuter), il commencera à exécuter votre conseiller expert sur les graphiques et les périodes définis dans le code de l'exemple 1.

Vous avez donc besoin d'un MultitesterExpert qui, en tant qu'automate, exécute votre Expert optimisé sur différents _Symbol / _Period etc.

En étudiant les commentaires de l'exemple 1 et de l'exemple 2, vous serez en mesure de créer votre propre MultitesterExpert sur la base de ces commentaires.

 

GetSettings(Str) interrompt les tests sur les agents locaux.

GetSettings(Str) est utilisé pour connaître le type de modèle de tic-tac utilisé dans le test.

Exemple :

J'ai ajouté ce qui suit au code d'exemple du conseiller expert en moyenne mobile :

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// Code standard du conseiller expert

//obtenir les paramètres du testeur
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

Je lance l'optimisation avec une énumération complète des paramètres, ce qui fait que le testeur a tendance à passer de n'importe quel onglet à l'onglet "Paramètres".

Un nombre disproportionné de bâtiments sont distribués aux agents locaux et ne sont pas exécutés.


Pouvez-vous suggérer quelque chose par vous-même ?

Dossiers :
 
Sunriser:

Pouvez-vous me donner un indice ?

Dans OnTesterInit, faites GetSettings et passez les valeurs obtenues via ParametersSetRange à la variable sinput.

Sur les agents locaux, cette variable sinput vous dira quel est le mode.


Le mode peut être déterminé par des ticks réels sans DLL.