Fonctions langage MQL4

Les fonctions sont utilisées pour grouper une partie de code effectuant une fonction particulière. Créer plusieurs fonctions plutôt que de mettre tout le code dans la fonction principale permet de rendre le code plus lisible et permet de localiser en un seul endroit du code qui peut être exécuté plusieurs fois juste en appelant la fonction plutôt qu'en ayant à écrire plusieurs fois le même code dans la fonction principale.

Tout code doit faire partie d'une fonction. Par défaut cela peut être la fonction principale start() (voir plus bas). Les fonctions peuvent être appelées à l'intérieur d'autres fonctions. Il n'y a pas de limitations particulières.

Définition d'une fonction

Une fonction est définie par son nom, son type et ses paramètres. Par exemple :

void ma_fonction(int param1)

{

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

Print(param1);

}

Dans le cas ci-dessus le nom de la fonction est ma_fonction, son type est void (signifiant qu'elle ne retourne pas de valeur) et a un seul paramètre qui est un entier.

Le corps de la fonction est délimité par des accolades. L'appel de cette fonction se fera de la façon suivante:

ma_fonction(2);

Ce qui affichera la valeur 2.

Voici un deuxième exemple:

double carre(double x, int param1)

{

Print(param1);

return(x*x);

}

Dans le cas ci-dessus le nom de la fonction est carre, son type est double et a deux paramètres qui sont séparés par une virgule. Le premier est un double et le second un entier.

Dans le corps de la fonction nous avons le mot-clé return et entre parenthèse la valeur qui sera retournée. L'appel de cette fonction se fera de la façon suivante:

y = carre(2.0,3);

Ce qui affichera la valeur 3 et donnera la valeur 4.0 à la variable y.

Le mot-clé return

Le mot clé return permet à la fonction de retourner une valeur, il termine donc la fonction.

Habituellement il n'y aura pas plus qu'un «return» par fonction (voire 0 dans le cas d'une fonction de type void) mais il n'est pas interdit d'en avoir plusieurs dans le cas d'exécution conditionnelle comme dans le cas ci-dessous:

double valeur_absolue(double x)

{

if (x>0)

return(x);

else

return(-x);

}

La valeur retournée peut soit être une constante, une variable ou une expression..

Les fonctions particulières à MQL4

3 fonctions sont prédéfinies en MQL4:

  • int init();
  • int deinit();
  • int start();

La fonction init();

La fonction init() est appelée lorsqu'un indicateur ou un EA est lancé pour la première fois ou relancé après par exemple une modification des paramètres de ce dernier.

Cette fonction permet de faire les initialisations nécessaires avant le code qui sera exécuté à chaque tick dans la fonction start().

Cette fonction retourne un entier: 0 si il n'y a pas de problème et une valeur différente (code d'erreur) sinon.

La fonction deinit();

La fonction deinit() est appelée lorsqu'un indicateur ou un EA est arrêté.

Cette fonction permet de faire les de-initialisations nécessaires (par exemple destruction d'objets graphiques crées dans le code) avant de terminer l'exécution.

Cette fonction retourne un entier: 0 si il n'y a pas de problème et une valeur différente (code d'erreur) sinon.

La fonction start();

La fonction start() est appelée à chaque nouveau tick du graphe sur lequel l'indicateur ou l'EA est attaché.

C'est dans cette fonction (et les fonctions appelées) qu'est codée toute la logique de l'indicateur ou de l'EA.

Cette fonction retourne un entier: 0 si il n'y a pas de problème et une valeur différente (code d'erreur) sinon.

Des exemples pratiques d'utilisation de ces fonctions seront fournis une fois que l'ensemble des éléments de base du langage MQL4 auront été présentés.

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