APPRENDRE LES BASES DU TUTORIEL MQL5 – 8 COMMENT UTILISER LA BOUCLE WHILE

Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

 

Avec MQL5 pour Metatrader, nous pouvons utiliser la boucle while pour contrôler le flux du programme. Mais il y a un piège que vous devez connaître – ou vous pourriez coder une boucle infinie – sans même obtenir d’erreurs de compilation…

Dans cette vidéo, nous allons découvrir comment utiliser l’instruction „while“ pour attendre que quelque chose se passe comme maintenant ; nous avons attendu jusqu’à ce que le compteur de retard atteigne 500 000, alors découvrons comment utiliser la boucle „while“ dans MQL5.
Pour ce faire, cliquez sur le petit bouton ici ou appuyez sur F4 dans votre Metatrader, maintenant vous devriez voir la fenêtre Metaeditor et ici vous voulez cliquer sur : „Fichier/ Nouveau/ Expert Advisor (modèle)“ à partir du modèle, „Continuer“, je vais appeler ce fichier : „SimpleWhileLoop“, maintenant je clique sur „Continuer“, „Continuer“ et „Terminer“.
Nous pouvons supprimer tout ce qui se trouve au-dessus de la fonction „OnTick“ et les deux lignes de commentaires ici.
Commençons donc par créer un compteur de retard (DelayCounter), nous utiliserons une variable entière car nous n’avons besoin que de nombres entiers, nous commençons par la valeur 1 et nous allons augmenter le compteur de retard dans la fonction „OnTick“, disons que nous avons une valeur minimale de 500 000 et seulement si notre compteur de retard est au-dessus de notre valeur minimale de 500 000, nous voulons faire quelque chose.
Maintenant, nous pouvons utiliser l’instruction „while“ dans la fonction „OnTick“ pour vérifier si notre compteur de retard est toujours inférieur à notre valeur minimale et si c’est le cas, nous voulons faire quelque chose, d’abord nous voulons créer une sortie qui nous montrera le texte : „DelayCounter :“ suivi de la valeur calculée du compteur de retard actuel et ensuite nous allons augmenter le compteur de retard de la valeur 1, ce qui est fait en utilisant „DelayCounter“ égal „DelayCounter“ plus 1, donc compilons le code ici, cela devrait fonctionner sans aucune erreur et maintenant nous cliquons sur le petit bouton ici ou appuyons sur F4 pour revenir à Metatrader.
Ouvrons le Strategy Tester en cliquant sur : „View/ Strategy Tester“ ou vous pouvez aussi appuyer sur CTRL et R, ici nous prenons le nouveau fichier : „SimpleWhileLoop.ex5“, veuillez activer le mode de visualisation ici et commencer votre test.
Et maintenant vous voyez que notre compteur fonctionne et quand il atteint 500.000 cela va bouger donc tout va bien, mais il y a un hic ; disons que vous voudriez augmenter le compteur de retard en dehors de la boucle while, nous pouvons toujours compiler le code sans aucune erreur mais quand nous démarrons le prochain test rien ne se passe. L’ensemble du Strategy Tester est gelé, alors pourquoi cela ?
Si vous mettez en surbrillance l’instruction „while“ et appuyez sur F1, vous devriez voir le fichier „Help“ mais rien ne se passe car tout est encore gelé et c’est parce que nous avons créé une boucle sans fin ici. Lorsque le premier tic-tac arrive et que cette expression est vraie, l’instruction „while“ provoque une boucle infinie qui ne se termine jamais ! Nous voulions augmenter le compteur de retard ici, mais comme nous le faisons en dehors de la boucle „while“, cela ne se produira jamais et cette expression sera donc vraie pour toujours et c’est l’une des raisons pour lesquelles je n’aime pas utiliser „while“ très souvent, vous pouvez vérifier la plupart des conditions lorsque vous utilisez „if“, alors recompilons le code ici, redémarrons un test et cette fois nous voyons que notre compteur de retard fonctionne parce que l’instruction „if“ ne sera exécutée qu’une fois à chaque fois qu’un tick arrive alors que l’instruction „while“ serait exécutée pour toujours.
D’accord, si vous souhaitez utiliser l’instruction „while“, vous devez vous assurer qu’à l’intérieur de votre boucle „while“, quelque chose va interrompre l’exécution, sinon votre boucle „while“ tournerait sans fin.
Redémarrons donc le test et cette fois, il compte comme il est censé le faire. Dans cette petite vidéo, vous avez appris à utiliser l’instruction „while“ et à éviter les boucles interminables et vous l’avez codé vous-même avec quelques lignes de code MQL5.