Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Experts

Visualisation des résultats d'optimisation en temps réel - expert pour MetaTrader 5

Vues:
394
Note:
(48)
Publié:
2022.01.31 09:44
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Le MetaTrader 5 Strategy Tester permet d'obtenir les paramètres statistiques d'un système de trading après chaque passage de test.

Les paramètres statistiques peuvent être obtenus à l'aide de la fonction TesterStatistics(), qui est appelée dans les fonctions OnTester() et OnDeinit().

Avec l'introduction de fonctions pour travailler avec les résultats d'optimisation (FrameFirst(), FrameFilter(), FrameNext(), FrameInputs() et FrameAdd()), les traders peuvent désormais effectuer une optimisation visuelle. Les données nécessaires peuvent désormais être traitées et affichées directement lors d'une optimisation d'Expert Advisor ou d'une résolution de problème mathématique.

Nous examinerons les détails de l'exemple de visualisation des résultats de test d'un Expert Advisor lors de l'optimisation décrite dans l'article "Visualiser une stratégie dans le testeur MetaTrader 5".


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

1.1. Téléchargement de fichiers

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

Les fichiers suivants sont utilisés pour l'opération Expert Advisor :
  1. FrameGenerator.mqh - Classe CFrameGenerator pour afficher les résultats d'optimisation ;
  2. SpecialChart.mqh - Classe CSpecialChart pour dessiner plusieurs graphiques d'équilibre ;
  3. SimpleTable.mqh - La classe CSimpleTable est une table simple à deux colonnes ;
  4. ColorProgressBar.mqh - La classe CСolorProgressBar est une barre de progression utilisant deux couleurs.

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

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

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

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


1.2. Tester l'Expert Advisor

Moving Averages_With_Frames.mq5 Expert Advisor devrait être lancé dans Strategy Tester.

Paramètres de test :

Paramètres de test Mobile Averages_With_Frames.mq5

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

Possibilités d'optimisation :

Paramètres d'optimisation Mobile Averages_With_Frames.mq5

Fig. 3. Paramètres de test Mobile Averages_With_Frames.mq5


Pendant l'optimisation, l'Expert Advisor affiche la dynamique de l'équilibre et les données statistiques de la passe d'optimisation :

Fig. 4. Optimisation des moyennes mobiles_With_Frames.mq5

Fig. 4. Optimisation des moyennes mobiles_With_Frames.mq5

Processus d'optimisation :




1.3. Le principe de fonctionnement de l'Expert Advisor

Moving Averages_With_Frames.mq5 Expert Advisor est créé sur la base de Moving Averages.mq5 inclus dans le package de terminal MetaTrader 5 standard (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 frames
CFrameGenerator fg;
//+------------------------------------------------------------------+
//| Fonction de test                                                 |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- insérez votre fonction de calcul de critère d'optimisationici
   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épare le 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 des graphiques
   fg.OnTesterPass();
  }
//+------------------------------------------------------------------+
//| Fonction TesterDeinit                                            |
//+------------------------------------------------------------------+
void OnTesterDeinit()
  {
//--- fin de l'optimisation
   fg.OnTesterDeinit();
  }
//+------------------------------------------------------------------+
//| Gestion des événements du graphique                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
//--- lance l'affichage des frames après la fin de l'optimisation lors d'un clic sur l'en-tête
   fg.OnChartEvent(id,lparam,dparam,sparam,100); // 100 est une pause en ms entre les shots
  }
//+------------------------------------------------------------------+

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. La classe contient les méthodes de gestion des événements Strategy Tester (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 d'équilibre en fonction des résultats de trading. Le graphique de la courbe du solde est un tableau unidimensionnel dont la longueur dépend du nombre de transactions effectuées.

Ensuite, la fonction TesterStatistics() est utilisée pour demander des données statistiques (bénéfice net, facteur de profit, facteur de récupération, nombre de transactions, nombre de transactions, pourcentage de prélèvement de fonds maximum, valeur des critères d'optimisation personnalisés) et un cadre (tableau de données de réussite au 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 trames sont reçues et gérées dans la méthode OnTesterPass() de la classe CFrameGenerator. L'opération de lecture des trames est effectuée par la fonction FrameNext(). La demande des paramètres d'entrée de l'Expert Advisor, pour lesquels la trame a été générée, est effectué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 gestion OnTester() est effectuée sur l'agent de test après la fin d'une autre passe d'optimisation en cours. Cela permet d'utiliser les capacités du réseau distribué MQL5 Cloud Network pour effectuer des calculs mathématiques complexes. Pour ce faire, placez la partie calcul dans le gestionnaire d'événements OnTester.

L'exemple d'utilisation de l'optimisation pour accélérer les calculs mathématiques (transformation continue en ondelettes de la fonction de Weierstrass) est présenté 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 d'utilisation des classes CSimpleTable, CColorProgressBar et CSpecialChart

Les scripts Test_SimpleTable.mq5 et Test_CSpecialChart.mq5 joints contiennent des exemples d'utilisation des classes CSimpleTable, CColorProgressBar et CSpecialChart. Ils doivent être copiés dans le terminal_data_folder\MQL5\Scripts.

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

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

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

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


Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/914

EA_OBJPROP_CHART_ID EA_OBJPROP_CHART_ID

Cet Expert Advisor est une démonstration de l'utilisation d'objets OBJ_CHART en tant que graphiques conventionnels. Vous pouvez définir des paramètres de couleur personnalisés, joindre des indicateurs, etc.

DRAW_COLOR_CANDLES DRAW_COLOR_CANDLES

Le style DRAW_COLOR_CANDLES (comme DRAW_CANDLES) dessine des chandeliers basés sur les valeurs de quatre indicateurs tampons, contenant les prix d'ouverture, haut, bas et de clôture. De plus, il vous permet de spécifier la couleur de chaque chandelier d'un ensemble donné.

L'exemple d'utilisation de IndicatorParameters() L'exemple d'utilisation de IndicatorParameters()

Cet Expert Advisor illustre l'utilisation de la fonction IndicatorParameters() pour obtenir des informations sur le nombre de paramètres d'entrée, leur type et leurs valeurs.

ALGLIB - Bibliothèque d'Analyse Numérique ALGLIB - Bibliothèque d'Analyse Numérique

Bibliothèque de fonctions mathématiques ALGLIB (v. 3.19) porté sur MQL5.