MetaQuotes Language 4 (MQL4)

MQL4 (MetaQuotes Language 4) est la dernière version du langage de programmation associé à la plateforme MetaTrader 4.

Ses prédécesseurs étaient MQL en 2001 puis MQL II en 2002 jusqu'à 2005.

MQL4 est un langage compilé et proche du C dans sa structure avec l'ajout de nombreuses fonctions spécifiques au trading.

Les principales fonctions prédéfinies dans MQL4 pour faciliter le trading automatique sont:

  • Fonctions pour récupérer les prix courants et passés pour toutes les paires et correspondants aux unités de temps prédéfinies
  • Fonctions de passage et de gestion des ordres
  • Indicateurs prédéfinis dans MT4 et possibilité d'appeler les indicateurs customs
  • Gestion d'objets graphiques pour les indicateurs customs
  • Opérations de récupération de la date et de l'heure utiles par exemple pour le déclenchement de certaines opérations à heure fixe
  • Informations sur le compte permettant en autre de vérifier le numéro et l'intitulé du compte ainsi que son solde et la marge disponible

Voir notre avis sur le test du broker AvaTrade qui propose la plateforme MT4

Il y a 3 types d'applications qui peuvent être créées avec MQL4 et exécutées sur MT4 :

  • Les indicateurs «customs»: programme ayant pour objectif principal l'affichage graphique d'informations calculées à partir d'un algorithme défini par l'auteur
  • Les Expert Advisors qui permettent le trading automatique
  • Les scripts qui sont des programmes destinés à n'être exécutés que de façon isolé contrairement aux EAs et aux indicateurs qui sont exécutés à chaque mouvement de la paire sur laquelle ils sont attachés.

Pour tous ces programmes le code source sera dans un fichier mql4, qui une fois compilé produira un fichier ex4.

En plus des 3 types d'applications mentionnées ci-dessus (les Ea et les indicateurs sont celles qui sont le plus fréquemment utilisées), il existe 2 autres types de fichiers :

  • Les fichiers «include» (fichier texte avec extension .mqh) qui ont le même type d'utilisation que dans le cas du langage C, c'est-à-dire stocker des informations qui sont utilisées par de nombreux programmes et qui donc permettent de gérer de facon centralisé ces informations plutôt que d'avoir les mêmes informations répliqués de nombreuses fois.
  • Les librairies qui rassemblent un ensemble de fonctions utilisées fréquemment. Les librairies peuvent seulement être appelées par un autre programme et ne peuvent être exécutées seules.

Pour écrire le code de ces programmes l'éditeur de texte MetaEditor 4 est généralement utilisé. Cet éditeur de texte est fourni en même temps que MT4 et ne nécessite donc pas un téléchargement et une installation séparée. MetaEditor propose une aide en ligne qui facilite l'écriture des programmes.

Structure des EAs et indicateurs

En MQL4 il y a 3 fonctions spéciales prédéfinies:init(), start() et deinit(). Ces noms de fonctions ne peuvent pas être utilisées pour d'autres fonctions. Ces fonctions ont un role particulier dans l'exécution du programme car elles sont appelées directement par la plateforme.

Fonction init()

Cette fonction est exécutée au démarrage du programme si elle existe car sa présence est facultative.

Il faut noter que le programme démarre la première fois qu'on le lie avec un graphe mais aussi à d'autres occasions:

  • chaque fois que la valeur d'un paramètre est modifiée via la popup associée
  • si la connexion a été interrompue et revient
  • si on change l'unité de temps du graphe
  • si on recompile le programme
  • si on change de compte

Il est fréquent que les Eas n'utilisent pas de fonction init() car souvent la logique est calculée à chaque tick sans avoir besoin d'une initialisation générale.

Néanmoins ce sera dans cette fonction qu'il faudra placer la logique de reprise des trades en cours après une interruption de la connexion si votre logique globale le nécessite.

Fonction start()

La fonction start est appelée à chaque nouveau tick de la paire à laquelle le programme est attaché.

C'est dans cette fonction, qui est le corps du programme qu'est mise la logique du programme et que sont exécutées les actions dépendant de la logique.

Si les ticks arrivent plus rapidement que la fonction start prend de temps pour s'exécuter alors certains ticks seront ignorés. Il n'a donc pas de garantie que tous les ticks soient traités.

Par exemple si 3 ticks arrivent séparé par 5ms chacun et que le programme mets 8ms pour s'exécuter alors seuls les ticks 1 et 3 seront traités.

Dans le cas des EAs le fait que la fonction start() soit exécutée ou non dépend aussi bien sur de l'activation ou non de l'EA au niveau de MT4 et de la popup des paramètres.

Dans le cas d'un indicateur la fonction start() est aussi appelée dans certains cas spéciaux tels que le changement de la paire ou de l'unité de temps sur lequel l'indicateur est attaché.

Fonction deinit()

Cette fonction facultative est appelée lorsque le programme se termine et en l'occurrence est rarement utilisée.

De façon similaire à la fonction init(), le programme est considéré comme se terminant si:

  • on stoppe MT4
  • on l'enlève du graphe
  • on change la valeur d'un paramètre via la popup associée
  • on recompile le programme
  • on change de compte

Lorsque cette fonction est utilisée elle contient en général la destruction des objets graphiques créés par le programme.

Plus d'information sur le même thème

Photo of Arnaud Jeulin

Arnaud Jeulin Responsable de la publication, Trader

Après un diplôme d'ingénieur, Arnaud a commencé une carrière de développeur. Il a travaillé avec des traders et des services de back office pour mettre en place des prototypes et des outils de trading. Il a ensuite créé sa propre entreprise en 2003.

Il a été responsable du webmarketing pour la Banque en ligne Suisse Synthesis, depuis rachetée par Saxo Bank. Il a aussi fait des audits pour différents brokers et participé à plusieurs salons professionnels pour les courtiers à Londres, Paris et Chypre.

Depuis 21 ans Arnaud a approfondi sa connaissance des brokers et des marchés, il utilise son expérience pour améliorer Mataf afin d'éviter d'orienter les visiteurs vers des brokers malhonnêtes ou des stratégies de trading dangeureuses.

Vous pouvez le joindre via les réseaux sociaux suivants ou par email :

.
  Se connecter