Structure d’un programme MQL4
Structure d’un programme MQL4
Prenons un peu de temps pour étudier la structure d’un programme MQL4. Au début du fichier il y a les directives de préprocesseur, ensuite les entrées et les variables globales. Finalement nous trouvons les fonctions, classes , la gestion des événements.
Preprocessor Directives
Utilisées pour définir les propriétes du programme, définir les constantes, les librairies à utiliser. Les directives commencent par #property
#property directive
Permet de définir les informations descriptives du programme est ce un indicateur, un script, une librairie ?
A la création d’un programme via le MQL4 wizard, les propriétes suivantes sont automatiquement insérées : Copyright, link, version et strict. Ces informations seront affichées dans la fenêtre de dialogue lors du lancement du programme.
Si la propriété strict est utilisée les variables seront local au bloc dans lequel elles sont déclarées.
#define directive
permet de définir les constantes, par convention le nom des constantes est en majuscules
#define MAX_BARS 100
#include directive
permet d’inclure des fichiers au programme, ce fichier contient des variables, fonctions, classes qui peuvent être utilisés dans le programme.
#include <trade.mqh>
va rechercher le fichier dans le répertoire des includes par défaut : \MQL4\Include\
#include « trade.mph »
va rechercher le fichier dans le répertoire actuel celui du programme MQL4.
Entrées et variables globales
Toutes les variables globales sont définies en dehors des fonctions et des gestionnaires d’évènements. Elles sont accessibles depuis l’ensemble du programme MQL4.
Event Handlers / gestionnaire d’évènements
Il s’agit de fonctions exécutées à chaque fois qu’un certain événement apparaît.
Par exemple lorsque qu’une cotation (un tick) à lieu la fonction OnTick() est appelée, le code de la fonction est exécuté à chaque cotation.
OnInit()
Ce gestionnaire est exécuté une fois au démarrage du programme.
Si il y a changements dans l’EA ou si le graphique courant ou la période change l’expert advisor est réinitialisé et OnInit() et ré exécutée.
OnInit n’est pas obligatoire dans le programme mais est recommandé pour initialiser certaines variables et lancé des actions de démarrage.
OnDeinit()
Ce gestionnaire est exécuté à l’arrêt du programme. Non obligatoire, vous pouvez y inclure l’effacement d’objets insérés sur le graphique.
OnTick()
Ce gestionnaire est exécuté à chaque changement de prix. C’est le plus important gestionnaire du programme et il est obligatoire. Toute la logique de votre programme est contenu dans ce gestionnaire.
OnTimer()
Ce gestionnaire est exécuté quand le timer défini dans EventSetTimer() est activé. Cela permet d’exécuter certaines actions par intervalle de temps.