Boucles langage MQL4

Les boucles permettent d'exécuter une partie de code plusieurs fois. Ceci est très utile si l'on doit appliquer une opération similaire sur plusieurs éléments de même type ou si l'on doit rechercher un élément particulier parmi un groupe d'éléments de même type (par exemple un ordre en profit parmi les ordres ouverts).

Il existe 2 types de boucles en MQL4: les boucles «for» et les boucles «while».

La boucle «for»

La boucle «for» permet d'exécuter un nombre prédéfini de tours.

La boucle «for» contient 3 paramètres qui définissent la condition d'exécution et d'arrêt de la boucle.

  • Le premier est une expression pour l'initialisation de la boucle qui est exécutée au démarrage de la boucle
  • Le deuxième est une expression de test qui est la condition de continuation de la boucle est qui est exécutée à chaque tour
  • Le troisième est une expression d'incrément qui est exécuté à chaque tour

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

Deux exemples sont fournis ci-dessous:

for(i=0; i<10; i++)

Print(i);

for(i=0,j=1; i

{

Print(i);

Print(j);

}

Le premier exemple est la boucle ”for” la plus simple qui soit. Au début de la boucle la variable i est initialisée à 0 et est incrémentée à la fin de chaque tour. La boucle s'exécute tant que la condition de test est vraie donc tant que la variable i est inférieure à 10. Le contenu de la boucle affiche i. Le résultat de cette boucle sera l'affichage des valeurs de 0 à 9.

Le deuxième exemple est un peu plus complexe et montre certaines propriétés de la boucle «for».

Il est possible d'utiliser plus d'une expression d'initialisation en les séparant par une virgule.

Il est possible d'utiliser plus d'une expression d'incrémentation en les séparant par une virgule.

Par contre l'expression de test est unique et est une expression donnant un résultat vrai / faux.

Si le contenu de la boucle contient plusieurs expressions celles-ci doivent être délimitées par des accolades.

Le résultat de l'exécution de cette boucle affichera 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6.

La boucle «while»

La boucle «while» a une syntaxe différente de la boucle «for» ce qui lui permet d'être utilisée lorsqu'on ne connait pas en avance le nombre de fois ou la boucle doit être exécutée. On peut aussi l'utiliser si on connait le nombre d'itérations en avance mais dans ce cas une boucle «for» peut aussi bien être utilisée.

Contrairement à la boucle «for», la boucle «while» ne contient qu'un paramètre qui est l'expression de test.

Dans l'exemple ci-dessous considérons que les valeurs de x et y ne sont pas connus par avance (par exemple x et y sont le cours de 2 paires de devises)

while (x > y) // tant que x est supérieur à y

{

x++; // on incrémente x de 1

y = y+2; // on incrémente y de 2

}

Cette boucle s'exécutera le nombre de fois nécessaires pour y devienne supérieur ou égal à x.

Il est important de vérifier attentivement la condition d'une boucle while car si la condition de test peut être tout le temps vraie alors le programme bouclera infiniment (ce qui arrivera par exemple si on incrémente y seulement de 1 au lieu de 2).

Un exemple pratique dans lequel une boucle «while» est utilisée est l'attente d'un évènement: on vérifie à l'intérieur de la boucle si l'évènement est arrivé et on boucle tant que celui-ci n'est pas arrivé.

Les interruptions de boucles

Les boucles «for» et les boucles «while» peuvent toutes les 2 être interrompues en cours d'exécution, soit en «passant» le tour actuel, soit en sortant totalement de la boucle.

L'instruction «break»;

L'instruction «break» permet de stopper l'exécution d'une boucle «for» ou «while»

Voici un exemple pour une boucle «for»

for(i=0; i<10; i++)

{

Print(i);

if (i == 5)

break;

}

Dans cet exemple l'exécution de la boucle affichera seulement les valeurs de 0 à 5 car lorsque la variable i est égale à 5 la boucle est interrompue.

L'instruction «continue»;

L'instruction «continue» permet de «sauter» au début du tour suivant dans le cas de l'exécution d'une boucle «for» ou «while»

Voici un exemple pour une boucle «while»

i=0;

while(i<10)

{

if (i == 5)

continue;

Print(i);

}

Dans cet exemple l'exécution de la boucle affichera seulement les valeurs de 0 à 4 puis de 6 à 9 car lorsque la variable i est égale à 5 l'instruction Print n'est pas exécutée

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