Aide MetaEditor

Gestion intelligente

Gestion intelligente

Pour faciliter la programmation, MetaEditor fournit différents outils pour les substitutions automatiques des noms, des infobulles pour les fonctions, des signets et des raccourcis. Ces outils vous permettent d'accéléerer le processus d'écriture du code, de rendre la navigation plus facile et d'aider à empêcher des erreurs.

Cette section décrit les fonctions suivantes :

Tout changement peut être défait en exécutant la commande Annuler Annuler du menu Edition ou de la barre d'outils Standard, ou en appuyant sur Ctrl+Z.

Auto substitution des noms de fonctions

Lorsque vous écrivez le code du programme, MetaEditor offre automatiquement les substitutions possibles pour les fonctions intégrées et les fonctions personnalisées, les constantes, les varaibles, les membres de classe, les mots-clés, etc. Ceci accélère l'écriture du code. Par exemple, dès que tapez les premières lettres du nom de la fonction, une liste de fonctions avec des noms correspondants s'ouvre immédiatement. Sélectionnez l'option désirée avec les flèches du clavier et tapez Entrée :

Liste de noms

Si la liste d'options est trop grande, tapez quelques lettres de plus. Pour appeler la liste manuellement, cliquez sur Lister les Noms Lister les Noms du menu Edition ou Ctrl+Space après avoir saisi les premiers caractères du nom.

Information sur les paramètres

Vous pouvez la signature de la fonction directement lors de l'écriture du code sans ouvrir l'aide du langage. Pour cela, placez le curseur après la parenthèse ouvre qui marque le début de la description des paramètres de la fonction, et cliquez ensuite sur Paramètres Paramètres du menu Edition ou Ctrl+Shift+Space. Les informations sur les paramètres et sur le type de la valeur de retour d'une fonction sont affichés dans les infobulles :

Information sur les paramètres

Les informations suivantes sont affichées pour la fonction dans l'image :

  • [1 sur 2] signifie que la fonction a 2 signatures avec des paramètres différents. Pour basculer entre elles, utilisez les flèches du clavier ou cliquez avec le bouton gauche sur la ligne du prompt.
  • bool spécifiie le type de valeur retournée par une fonction.
  • ObjectSetInteger – nom de la fonction.
  • (long chart_id, ... ) – énumération des paramères possibles de la fonction, un type est spécifié avec chaque paramètre (ici le paramètre de type "long"). Le paramètre sur lequel le curseur est actuellement placé est affiché en gras.

Aller à la définition

Cet outil vous permet de naviguer rapidement vers la déclaration ou la définition d'une fonction ou d'une variable sélectionnée, ainsi qu'aux fichiers include ("#include"). Si la déclaration ou la définition d'un paramètre est dans un autre fichier, il est ouvert et le curseur est placé sur la position correspondante.

Pour aller sur un paramètre, placez le curseur sur son nom et cliquez sur Aller à la Définition Aller à la Définition du menu Edition ou Alt+G. Pour aller dans un fichier include, placez le curseur n'importe où sur la ligne où il est déclaré (directive #include) et exécutez la commande ci-dessus.

Liste des fonctions

Cet outil vous permet de voir la liste de toutes les fonctions déclarées dans le fichier en cours. Pour ouvrir la liste, cliquez sur Lister les Fonctions Lister les Fonctions du menu Edition ou Alt+M.

Liste des fonctions

Les paramètres de fonction sont indiqués entre parenthèses à droite de son nom. Pour aller dans la fonction, cliquez sur son nom dans la liste. Chaque type de fonctions dans la liste est marquée par son icone :

  • Fonction – fonction.
  • Fonction de gestion d'évènement – fonction de gestion d'évènement (On*).
  • Méthode de classe publique – méthode de classe publique (public).
  • Méthode de classe protégée – méthode de classe protegée (protected).
  • Méthode de classe privée – méthode de classe privée (private).

Insertion de commentaires

Pour simplifier le travail avec les commentaires dans le code du programme, utilisez les fonctions du menu Edition et de la barre d'outils Standard :

  • En-tête de Fonction En-tête de Fonction – insère un commentaire blanc pour une fonction ;
  • Commentaire Commentaire – insère les symboles du commentaire sur une ligne ;
  • Commenter les Lignes Commenter les Lignes – insère les commentaires "//" au début de chaque ligne sélectionnée ;
  • Décommenter les Lignes Décommenter les Lignes – enlève les commentaires "//" du début de chaque ligne sélectionnée.

La commande CommentaireCommentaire (Ctrl+/) insére les caractères du commentaire sur une ligne à la position courante :

//---

La commande En-tête de FonctionEn-tête de Fonction (Ctrl+.) insére un bloc de commentaire pour une fonction à la position courante du curseur :

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

Fonctionnalités supplémentaires d'édition du code

Vous pouvez failcement déplacer des fragments de code d'une partie du programme dans une autre. Pour cela, sélectionnez la partie du code et glissez-la à la position désirée (Drag'n'Drop).

Le sous-menu Avancé du menu Edition comporte une série de commandes simplfiiant l'édition du code source :

  • Augmenter le Retrait de Ligne Augmenter le Retrait de Ligne – insére 3 espaces (symbole pour la tabulation) au début des lignes sélectionnées. Pour insérer des espaces sur une sule ligne, positionnez le curseur au début de la ligne. Pour insérer des espaces sur plusieurs lignes, sélectionnez-les entièrement.
  • Diminuer le Retrait de Ligne Diminuer le Retrait de Ligne – supprime 3 espaces (symbole pour la tabulation) au début des lignes sélectionnées. Une action similaire est effectuée avec le raccourci Tab+Shift.
  • Mettre en Majuscules Mettre en Majuscules – change tous les caractères sélectionnés en majuscules. Une action similaire est effectuée avec le raccourci Ctrl+Shift+U.
  • Mettre en Minuscules Mettre en Minuscules – change tous les caractères sélectionnés en minuscules. Une action similaire est effectuée avec le raccourci Ctrl+U.

Travailler avec les signets

Les signets vous permettent de vous rendre rapidement dans différentes parties du code. Marquez les lignes désirées avec des signets et naviguez entre eux avec les commandes du menu Edition – Signets et du menu contextuel du code source :

  • Basculer le Signet Basculer le Signet – active/désactive un signet sur la ligne courant suivant son statut actuel. La même action peut être faite avec le raccourci Ctrl+F2 ;
  • Signet Suivant Signet Suivant – se déplace vers le signet suivant du code courant. La même action peut être effectuée avec la touche F2 ;
  • Signet Précédent Signet Précédent – se déplace vers le signet précédent du code courant. La même action peut être effectuée en appuyant sur Shift+F2.
  • Supprimer Tous les Signets Supprimer Tous les Signets – supprime tous les signets du code courant. La même action peut être effectuée en appuyant sur Ctrl+Shift+F2.

MetaEditor comprent également les signets nommés – ceux ayant un identifiant numérique. Pour définir un signet nommé, cliquez sur 0-9 tout en maintenant Ctrl. Pour vous rendre sur un signet nommé assigné auparavant, appuyez sur le nombre correspondant tout en maintenant la touche Alt.

Aller à la Ligne

Pour sauter rapidement à n'importe quelle ligne de code du fichier courant, cliquez sur Aller à la Ligne Aller à la Ligne du menu Rechercher ou appuyez sur Ctrl+G. La fenêtre suivante est ouverte :

Aller à la Ligne

La fenêtre affiche l'intervalle de lignes du code du fichier en cours. Pour aller sur une ligne, saisissez son numéro et cliquez sur ОК.

Snippets

Les snippets sont de petits modèles de code source décrivant une certaine construction du langage MQL4/MQL5. Ils simplifient et accélèrent l'écriture du code source. Par exemple, ils vous permettent d'ajouter rapidement un morceau de code fonctionnel à un programme pour décrire une classe ou une boucle. Pour cela, tapez simplement un mot-clé – 'class' ou 'for'. Le curseur est changé en Un snippet peut être ajouté ce qui signifie qu'il est maintenant possible d'insérer un snippet. Appuyez sur Tab et un blanc pour une classe ou une boucle 'for' est inséré dans le code du programme conformément.

Snippet exemple

Pour basculer entre les champs du snippet actif (ici, ce sont le nom, le constructeur de class et le destructeur de classe), utilisez Tab et Shift+Tab.

Le changement d'un champ actif change automatiquement le reste. Par exemple, en cas de changement du nom de la classe, les noms du constructeur et du destructeur sont également changés automatiquement. Lors du changement du nom d'une variable dans l'une des expressions de la boucle 'for', les variables dans les autres expressions sont également changées.

Le système d'utilisation des snippets reconnaît aussi les structures, classes, énumérations, méthodes et fonctions déjà décrites. Placez le curseur dans la description de la structure correspondante et appuyez sur Ctrl+Enter. Après cela, vous pouvez naviguer entre les membres (classes, structures et énumérations) et les arguments (méthodes et fonctions) en utilisant les touches Tab et Shift+Tab et les éditer ensemble comme décrit ci-dessus.

Les snippets suivants sont actuellement supportés :

Mot clé

Valeur

#import

Déclaration d'import.

OnBookEvent

Gestionnaire OnBookEvent.

OnCalculate

Gestionnaire OnCalculate.

case

Sélecteur 'case'.

OnChartEvent

Gestionnaire OnChartEvent.

class

Déclaration de classe.

OnDeinit

Gestionnaire OnDeinit.

do

Déclaration de la boucle 'do while'.

enum

Déclaration d'une énumération.

for

Déclaration de la boucle 'for'.

if

Déclaration de la condition 'if'.

else

Déclaration de la condition 'else'.

OnInit

Gestionnaire OnInit.

OnStart

Gestionnaire OnStart.

struct

Déclaration de structure.

switch

Sélecteur 'switch'.

OnTester

Gestionnaire OnTester.

OnTesterInit

Gestionnaire OnTesterInit.

OnTesterPass

Gestionnaire OnTesterPass.

OnTesterDeinit

Gestionnaire OnTesterDeinit.

OnTick

Gestionnaire OnTick.

OnTimer

Gestionnaire OnTimer.

OnTrade

Gestionnaire OnTrade.

OnTradeTransation

Gestionnaire OnTradeTransation.

while

Déclaration de la boucle 'while'.

Insérer des ressources

Les commands du menu Edition – Insertion permettent d'insérer rapidement des fichiers de ressource et facilite donc le dévelopement d'applications.

Options comme #property

Insère la directive #property à la position courante et ouvre ensuite la liste de toutes les propriétés du programme disponibles dans le langage.

BMP/WAV comme #resource

Pour ajouter un fichier image ou son dans les ressources du programme, exécutez cette commande et sélectionnez un fichier BMP ou WAV (le fichier désiré doit être situé dans le répertoire \MQL5). La directive #resource avec le chemin correspondant au fichier sélectionné sera insérée à la position actuelle dans le programme.

#resource "\\Images\\image.bmp"

DLL/EX5 comme #import

Vous pouvez importer des fonctions d'une bibliothèque externe ou d'un fichier EX5/EX4 en exécutant cette commande et en sélectionnant le fichier désiré (le fichier doit être situé dans le répertoire \MQL5). Deux directives #import avec le chemin correspondant vers le fichier sélectionné seront insérées à la position actuelle dans le programme.

#import "..\Experts\SendNotification.ex5"
 
#import

Ajoute la description des fonctions importées entre les directives.

MQH comme #include

Pour insérer un fichier include dans le code du programme, exécutez cette commande et sélectionnez le fichier MQH (le fichier désiré doit petre situé dans le répertoire \MQL5). La directive #include avec le chemin correspondant au fichier sélectionné sera insérée à la position actuelle du programme.

#include <Arrays\Array.mqh>

Un ensemble de paramètres comme #property

Pour insérer un ensemble de paramètres dans le code du programme pour tester un Expert Advisor, exécutez cette commande et sélectionnez un fichier SET (le fichier doit être stocké dans le répertoire \MQL5). La directive #property avec le chemin correct vers le fichier sélectionné sera inséré à la position courante du programme.

#property tester_set "\\Profiles\\Tester\\Moving Average.set"

Fichier comme Tableau Binaire

Cette commande vous permet d'ajouter dans le programme n'importe quel fichier sous la forme d'un tableau binaire. Exécutez la commande et sélectionnez le fichier désiré (le fichier désiré doit être situé dans le répertoire \MQL5). Un tableau de caractères sera inséré à la position actuelle dans le programme.

Cette fonction vous permet, parmi d'autres, de transférer les modèles de graphiques avec les Expert Advisors ou les indicateurs : insérez votre modèle dans le code du programme sous la forme d'un tableau et sauvegardez-le sur le disque en utilisant la fonction FileSave. Après cela, le modèle peut être appliqué sur le graphique désiré en utilisant la fonction ChartApplyTemplate.

//+------------------------------------------------------------------+
//| Fonction de démarrage du script                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- un fichier modèle comme tableau binaire
   unsigned char my_template[]=
     {
      0xFF,0xFE,0x3C, ... ,0x00 // le tableau de données de cet exemple a été réduit
     };
//--- sauvegarde et application du modèle
   if(FileSave("my_template.tpl",my_template))
     {
      Print("Le modèle personnalisé a été sauvegardé dans \\MQL5\\Files");
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
         Print("Le modèle personnalisé a été appliqué au graphique actuel");
      else
         Print("Echec de l'application du modèle personnalisé");
     }
   else
      Print("Echec de la sauvegarde du modèle personnalisé");
  }

CSV comme un tableau de texte

Pour ajouter les données d'un fichier texte dans le code du programme, exécutez cette commande et sélectionnez un fichier TXT ou CSV le fichier désiré doit être situé dans le répertoire \MQL5). Un tableau de chaînes de caractères de la dimension requise contenant les données du fichier sera inséré à la position actuelle dans le programme :

string data[][3]=
  {
   {"name1","value1"},
   {"name2","value2"},
   {"name3","value3"}
  };

Conversion de texte

MetaEditor vous permet de convertir facilement le format des données source. Ouvrez le fichier désiré, sélectionnez son texte et exécutez l'une des commandes du menu Edition – Conversion :

  • ASCII vers HEX
  • ASCII vers Base64
  • ASCII vers Tableau Binaire
  • HEX vers ASCII
  • Base64 vers ASCII