Aide MetaEditorDévelopper des programmesDéboguage du code

Déboguage du code

MetaEditor a un débogueur intégré vous permettant de vérifier l'exécution d'un programme pas à pas (par fonctions individuelles). Placez des points d'arrêt dans le code. Ce sont les endroits où l'exécution du programme sera stoppée. Lancez ensuite le programme sur un graphique normal ou le strategy tester. Dès que le programme atteint un point d'arrêt, il est mis en pause. Ceci vous permet de voir les valeurs des variables calculées et de continuer ensuite l'exécution du programme pas à pas en vérifiant l'exécution de l'algorithme.

Pré-configuration #

Avant de déboguer, définissez les paramètres généraux dans les paramètres de MetaEditor. Vous pouvez spécifier le symbole et la période du graphique sur lequels le déboguage des applications sera fait. Ce graphique sera créé temporairement chaque fois que vous lancerez un déboguage et supprimé ensuite immédiatement à la fin.

Le modèle debug.tpl situé dans le répertoire /profiles/templates de la plateforme de trading est appliqué au graphique de déboguage.

Points d'Arrêt #

Un point d'arrêt est une commande déclenchée lorsque l'exécution d'un programme atteint une ligne de code spécifiée. La commande stoppe l'exécution à cette ligne de code. Les points d'arrêt permettent d'examiner le comportement d'un programme dans une zone de code spécifiée : voir les valeurs des variables et la piles des appels de fonctions. Par la suite, le processus de déboguage peut être continué ou terminé.

Avant de lancer un déboguage, placez au moins un point d'arrêt dans le code du programme. Pour cela, double-cliquez sur le champ gris à gauche de la ligne de code. Vous pouvez également placer le curseur sur la ligne et cliquer sur Activer un Point d'arrêt Activer un Point d'arrêt dans le menu Debug ou F9. Les points d'arrêt peuvent être désactivés de la même façon.

Point d'arrêt activé

Si vous voulez vous rendre à l'endroit où l'exécution du programme a été stoppée, double-cliquez sur la fonction dans la fenêtre de visualisation de la pile des appels. Vous pouvez également ouvrir la liste de tous les points d'arrêt du programme en cours de déboguage avec le menu contextuel :

Se rendre à un point d'arrêt

Vous pouvez vous rendre sur n'importe quel point d'arrêt en double-cliquant dessus.

Lancer le déboguage #

Pour exécuter le déboguage, ouvrez le fichier principal du programme ou un projet. Le déboguage peut être effectué dans 2 modes :

  • Sur les Données Réelles. Le déboguage est lancé avec la commande Lancer/Reprendre le déboguage sur les données réelles Lancer sur les données rélles dans le menu Debug ou F5. Dans ce mode, le programme débogué est exécuté sur un graphique spécial dans la plateforme de trading. Le déboguage est effectué en conditions réelles en utilisant les prix arrivant du serveur.
  • Sur l'historique. Le déboguage est lancé avec la commande Lancer sur les Données Historiques Lancer sur les Données Historiques dans le menu Debug ou Ctrl+F5. Un programme dans ce mode est lancé dans le Strategy Tester. Utilisez-le pour tester les performances du programme dans n'importe quel intervalle d'historique souhaité, sans attendre les conditions spécifiques du marché. Le mode de test non visuel est utilisé par défaut pour éviter l'utilisation de ressources supplémentaires lors du rendu des éléments graphiques. Si nécessaire, vous pouvez activer le mode visuel dans Paramètres de MetaEditor.

Dès que l'exécution du programme en mode déboguage atteint un point d'arrêt, il est mis en pause. La ligne sur laquelle l'exécution est arrêtée est marquée avec l'icone Point d'arrêt déclenché. L'onglet Debug apparaît également dans la fenêtre Boite à Outils. Sa partie gauche affiche la pile d'appels (call stack) des fonctions.

Point d'arrêt déclenché après le lancement du déboguage

Expression observées #

Pendant le déboguage, les valeurs des différentes expressions (variables) peuvent être suivies dans le bloc de code courant de l''exécution du programme. La partie droite de l'onglet Debug de la Boîte à Outils affiche les résultats correspondants. Pour suivre les valeurs de l'expression, ajoutez-la aux expressions observées :

  • Pendant le déboguage, placez le curseur sur une expression dans le code source et cliquez sur Ajouter un EspionAjouter un Espion dans le menu contextuel.
  • Cliquez sur AjouterAjouter dans le menu contextuel de la partie droite de l'onglet Debug. Saisissez le nom de l'expression dans la nouvelle ligne.
  • Pour changer le nom de l'expression suivie, double-cliquez dessus.

Voir la pile et les valeurs de l'expression

Vous pouvez également activer l'affichage automatique des variables locales dans la liste de surveillance du débogueur. L'affichage peut être activé par la commande "Local" du menu contextuel. Au fur et à mesure que l'opération de débogage progresse dans le code, les variables de la portée actuelle sont automatiquement affichées dans la liste.

Dans la fenêtre d'observation des expressionsn, vous pouvez effectuer des calculs mathématiques simples (addition, soustraction, multiplication et division), mais aussi voir les valeurs d'un tableau à un indice précis, par exemple, en spécifiant A[3][4], où A est le nom d'un tableau, et 3 et 4 les positions dans chaque dimension. Lors de l'ajout d'objets aux expressions observées, vous pouvez voir la liste de leurs membres en spécifiant un arrêt complet à la fin ou en appuyant sur Ctrl+Space :

Insérer des membres d'objet

Pour afficher le contenu d'un tableau ou d'un objet, double-cliquez dessus dans la fenêtre d'observation.

Par défaut, les entiers sont affichés dans la fenêtre d'observation sous forme décimale. Pour voir la valeur sous forme binaire ou hexadécimale, spécifiez les modificateurs b ou x, séparés avec des virgules, selon le champ Expression.

Voir des expressions sous forme binaire et hexadécimale

Voir une pile d'appels #

Les données retournées par les fonctions à son appelant sont spécifiées dans la pile d'appels. La pile vous permet de suivre la séquence entière de l'occurrence d'un évènement dans la plateforme de trading jusqu'à l'appel spécifique d'une fonction.

Les données suivantes sont affichées pour chaque fonction :

  • Le nom du fichier depuis lequel la fonction est appelée.
  • Le nom de la fonction.
  • Le numéro de la ligne dans le fichier où la fonction est appelée.

Déboguage pas à pas

Les commandes du menu Debug ou de la barre d'outils Standard sont utilisées pour le déboguage en pas à pas avec la possiblité de voir la pile des appels :

  • Entrer Dans Entrer Dans – effectue 1 pas de l'exécution du programme en entrant dans la fonction appelée. La même action est effectuée en appuyant sur F11.
  • Passer Passer – effectue 1 pas de l'exécution du programme sans entrer dans la fonction appelée. La même action est effectuée en appuyant sur F10.
  • Sortir Sortir – effectue 1 pas de l'exécution du programme en sortant de la fonction en cours. La même action est effectuée en appuyant sur Shift+F11.

Les commandes de déboguage en pas à pas ne peuvent être utilisées qu'une fois que le mode de déboguage est mis en pause :

  • Lorsqu'un point d'arrêt est déclenché.
  • Lorsque le programme est mis en pause manuellement avec la commande Pause Pause du menu Debug menu ou en appuyant sur Pause.

Les évènements continuent de se produiredans la plateforme de trading même si le programme est sur un point d'arrêt. Tous les évènements se produisant sont placées dans une file d'attente, et leur traitement par un expert advisor continuera après la fin du gestionnaire d'évènement en cours.

Mettre en pause, relancer et terminer le déboguage #

Le programme est stoppé automatiquement pendant le déboguage dès que l'exécution atteint une ligne de code où un point d'arrêt est activé. Le déboguage peut également être géré manuellement :

  • Mettre en pause l'exécution
    L'exécution du programme pendant le déboguage peut être mis en pause manuellement en utilisant la commande Pause Pause du menu Debug ou en appuyant sur Pause. Une fois en pause, vous pouvez exécuter les commandes de déboguage pas à pas.
  • Reprendre l'exécution
    Pour reprendre l'exécution du programme après une pause, cliquez sur Reprendre Reprendre du menu Debug ou appuyez sur F5.
  • Terminer le déboguage
    Pour stopper le déboguage, cliquez sur Arrêter Arrêter du menu Debug ou appuyez sur Shift+F5. Le programme est enlevé du graphique spécial sur lequel il avait été lancé pour le déboguage et le graphique est fermé.
  • Il est impossible de déboguer sans les fichiers source MQ4, MQ5 et MQH.
  • Il n'est pas recommandé de distribuer les fichiers exécutables EX4/EX5 obtenus pendant le déboguage.

Déboguer sur l'historique #

En dehors des données en temps réel, le déboguage des robots de trading et des indicateurs techniques peut être effectué également sur l'historique. N'importe quel programme peut être testé sur les données historiques nécessaires sans avoir à attendre certains évènements de trading en temps réel.

Déboguer sur les données historiques s'exécute en mode visuel de test dans le Strategy Tester. Une application est exécutée sur un graphique sur la base d'une suite de ticks émulés dans le testeur ou de ticks de l'historique (reçus du courtier).

Pour commencer à déboguer sur l'historique, définissez les paramètres de test dans les paramètres de MetaEditor.

Configurer le déboguage sur l'historique

Définissez les points d'arrêt dans le code et commencez ensuite le déboguage utilisant les prix de l'historique.

Lancement du déboguage sur l'historique

Ceci lancera le test visuel et le déboguage.

Déboguer sur l'historique