Accueil Trading Systématique Publication

Optimisation en Temps Réel : Visualisez les Résultats dans MetaTrader 5

Pièce jointe
914.zip (13.48 KB, Télécharger 0 fois)

Le testeur de stratégie MetaTrader 5 permet d'obtenir des paramètres statistiques d'un système de trading après chaque passage de test.

Ces paramètres peuvent être récupérés grâce à la fonction TesterStatistics(), qui est appelée à l'intérieur des fonctions OnTester() et OnDeinit().

Avec l'introduction de nouvelles fonctions pour travailler avec les résultats d'optimisation (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs(), et FrameAdd()), les traders peuvent désormais effectuer des optimisations visuelles. Les données nécessaires peuvent être traitées et affichées en temps réel pendant l'optimisation de l'Expert Advisor ou lors de la résolution de problèmes mathématiques.

Nous allons examiner les détails d'un exemple de visualisation des résultats de test d'un Expert Advisor pendant l'optimisation, comme décrit dans l'article "Visualiser une Stratégie dans le Testeur MetaTrader 5".


1. Visualisation de la dynamique du solde pendant l'optimisation

1.1. Téléchargement des fichiers

L'Expert Advisor Moving Averages_With_Frames.mq5 doit être copié dans le dossier terminal_data_folder\MQL5\Experts.

Les fichiers suivants sont nécessaires au fonctionnement de l'Expert Advisor :

  • FrameGenerator.mqh - Classe CFrameGenerator pour afficher les résultats d'optimisation;
  • SpecialChart.mqh - Classe CSpecialChart pour dessiner plusieurs graphiques de solde;
  • SimpleTable.mqh - Classe CSimpleTable, une table simple avec deux colonnes;
  • ColorProgressBar.mqh - Classe CColorProgressBar, une barre de progression utilisant deux couleurs.

Ils doivent être copiés dans le dossier terminal_data_folder\MQL5\Include.

Les programmes de la Code Base peuvent être téléchargés automatiquement via le terminal MetaTrader 5 (onglet CodeBase de la fenêtre "Boîte à outils"). Pour cela, sélectionnez "Télécharger". Tous les codes seront téléchargés et placés dans leurs dossiers respectifs.

Fig. 1. Téléchargement des programmes CodeBase via le terminal MetaTrader 5

Fig. 1. Téléchargement des programmes CodeBase via le terminal MetaTrader 5


1.2. Tester l'Expert Advisor

L'Expert Advisor Moving Averages_With_Frames.mq5 doit être lancé dans le testeur de stratégie.

Paramètres de test :

Paramètres de test de Moving Averages_With_Frames.mq5

Fig. 2. Paramètres de test de Moving Averages_With_Frames.mq5

Options d'optimisation :

Paramètres d'optimisation de Moving Averages_With_Frames.mq5

Fig. 3. Paramètres d'optimisation de Moving Averages_With_Frames.mq5


Pendant l'optimisation, l'Expert Advisor affiche la dynamique du solde et les données statistiques de passage d'optimisation :

Fig. 4. Optimisation de Moving Averages_With_Frames.mq5

Fig. 4. Optimisation de Moving Averages_With_Frames.mq5

Processus d'optimisation :




1.3. Principe de fonctionnement de l'Expert Advisor

L'Expert Advisor Moving Averages_With_Frames.mq5 est créé à partir de Moving Averages.mq5, inclus dans le package standard du terminal MetaTrader 5 (MQL5\Experts\Examples\Moving Average).

Le code suivant a été ajouté pour la visualisation des résultats :

//--- connexion du code pour travailler avec les résultats d'optimisation
#include <FrameGenerator.mqh>
//--- générateur de cadres
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Fonction Tester                                                  |
//+------------------------------------------------------------------+
double OnTester() 
  { 
//--- insérez ici votre fonction de calcul du critère d'optimisation
   double TesterCritetia=MathAbs(TesterStatistics(STAT_SHARPE_RATIO)*TesterStatistics(STAT_PROFIT));
   TesterCritetia=TesterStatistics(STAT_PROFIT)>0?TesterCritetia:(-TesterCritetia);
//--- appel après chaque test et soumission du critère d'optimisation en tant que paramètre
   fg.OnTester(TesterCritetia);
//---
   return(TesterCritetia);
  }
//+------------------------------------------------------------------+
//| Fonction TesterInit                                              |
//+------------------------------------------------------------------+
void OnTesterInit() 
  {
//--- préparation du graphique pour afficher plusieurs lignes de solde
   fg.OnTesterInit(3); // le paramètre définit le nombre de lignes de solde sur le graphique
  }
//+------------------------------------------------------------------+
//| Fonction TesterPass                                              |
//+------------------------------------------------------------------+
void OnTesterPass() 
  {
//--- traitement des résultats de test obtenus et affichage graphique
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| Fonction TesterDeinit                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit() 
  { 
//--- fin de l'optimisation
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//| Gestion des événements de graphique                                           |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) 
  {
//--- lance l'affichage des cadres après la fin de l'optimisation lors du clic sur l'en-tête
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 est une pause en ms entre les prises de vue
  }
//+------------------------------------------------------------------+

Ce code peut être utilisé de la même manière dans n'importe quel Expert Advisor.

La classe CFrameGenerator est utilisée pour travailler avec les résultats d'optimisation. Cette classe contient des méthodes pour gérer les événements du testeur de stratégie (OnTester(), OnTesterInit(), OnTesterPass(), OnTesterDeinit()) et la méthode pour les événements de graphique (OnChartEvent()). Les objets graphiques utilisés sont préparés dans la méthode OnTesterInit() de la classe CFrameGenerator.

La méthode OnTester() de la classe CFrameGenerator est invoquée sur un agent de test après chaque passage de test. Cette méthode permet de calculer la dynamique de la courbe de solde basée sur les résultats de trading. Le graphique de la courbe de solde est un tableau unidimensionnel dont la longueur dépend du nombre d'opérations effectuées.

Ensuite, la fonction TesterStatistics() est utilisée pour demander des données statistiques (profit net, facteur de profit, facteur de récupération, nombre de trades, nombre de transactions, pourcentage maximum de drawdown de fonds, valeur d'un critère d'optimisation personnalisé) et un cadre (tableau de données de passage de test, dans notre cas) est généré, qui est envoyé au terminal (depuis l'agent de test) à l'aide de la fonction FrameAdd().

Les cadres sont reçus et gérés dans la méthode OnTesterPass() de la classe CFrameGenerator. L'opération de lecture des cadres est effectuée par la fonction FrameNext(). La demande des paramètres d'entrée de l'Expert Advisor, pour lesquels le cadre a été généré, est réalisée à l'aide de la fonction FrameInputs().

Après avoir obtenu les données, elles sont affichées et mises à jour à l'aide des méthodes des classes CSimpleTable, CColorProgressBar, et CSpecialChart.

Il convient de noter que l'exécution des fonctions de traitement de OnTester() se fait sur l'agent de test après qu'un autre passage d'optimisation courant soit terminé. Cela permet d'utiliser les capacités du réseau distribué MQL5 Cloud pour effectuer des calculs mathématiques complexes. Pour cela, placez la partie calcul dans le gestionnaire d'événements OnTester.

Un exemple d'utilisation de l'optimisation pour accélérer les calculs mathématiques (transformation en ondelettes continues de la fonction de Weierstrass) est montré dans le sujet "Gérer les processus d'optimisation en temps réel et transférer des données massives des agents vers MetaTrader 5".


2. Exemples de travail avec les classes CSimpleTable, CColorProgressBar et CSpecialChart

Les scripts Test_SimpleTable.mq5 et Test_CSpecialChart.mq5 joints contiennent des exemples de travail avec les classes CSimpleTable, CColorProgressBar et CSpecialChart. Ils doivent être copiés dans le dossier terminal_data_folder\MQL5\Scripts.

Fig. 5. Résultat de l'opération du script Test_SimpleTable.mq5

Fig. 5. Résultat de l'opération du script Test_SimpleTable.mq5

Fig. 6. Résultat de l'opération du script Test_CSpecialChart.mq5

Fig. 6. Résultat de l'opération du script Test_CSpecialChart.mq5


Articles connexes

Commentaire (0)