Auto-apprentissage du langage MQL5 à partir de zéro - page 43
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Vous avez certainement fait un grand pas en avant dans le sujet principal - vous avez maîtrisé et commencé à utiliser les fonctions, et félicitations à vous, bien sûr !)
Je consolide la matière que j'ai apprise jusqu'à présent, et j'ai commencé à étudier pour et pendant les boucles. Le suivi, bien que dans un avenir lointain, mais c'est une partie obligatoire de mon plan d'auto-apprentissage.
Salutations, Vladimir.
...
Dans l'ensemble, le script est écrit correctement. Il ne prend pas en compte la valeur nulle de Period_learning, mais sinon c'est bon.
Ok, Peter, je vais réfléchir à comment compliquer le script et appliquer une condition if-else à l'intérieur de la fonction.
Salutations, Vladimir.
Bonne journée et bonne humeur à tous !
Je continue à étudier le langage de programmation MQL5. En tenant compte des conseils de Peter Konov, je colle le code finalisé du script qui est la continuation d'une des tâches des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème détecté. Pour commencer, j'ai appliqué le nombre minimal de paramètres d'entrée. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter le processus d'apprentissage. Comme je l'ai promis plus tôt, j'ai essayé de décrire le script d'une manière compréhensible pour un élève de la première classe de l'école de programmation.
Meilleures salutations, Vladimir.
Bonne journée et bonne humeur à tous !
Je continue à étudier le langage de programmation MQL5. En tenant compte des conseils de Peter Konov, je colle le code finalisé du script qui est la continuation d'une des tâches des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème détecté. Pour commencer, j'ai appliqué le nombre minimal de paramètres d'entrée. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter le processus d'apprentissage. Dans ce script, j'ai essayé de décrire la situation comme je l'ai promis plus tôt, d'une manière accessible à un étudiant de 1ère classe de l'école de programmation.
Salutations, Vladimir.
Corrigez une erreur et ce sera parfait.
À propos de la fonction, je suppose que c'est ainsi que le code aurait dû être écrit :
Sincèrement, Vladimir.À propos de la fonction, je suppose que c'est ainsi que le code aurait dû être écrit :
Sincèrement, Vladimir.Il suffit de corriger une seule erreur pour que tout soit parfait.
Les objets globaux, sont initialisés par défaut par le constructeur. Pour les types primitifs (dans notre cas, tous sauf les chaînes de caractères), c'est 0. Mais pour la mémoire (lire les variables) allouée sur la pile, elle n'est pas initialisée. C'est pourquoi les variables globales peuvent ne pas être initialisées, rappelez-vous que dans ce cas elles seront égales à zéro. Mais l'absence d'initialisation (en même temps, habituez-vous à éviter immédiatement les avertissements générés par le compilateur, à moins que vous ne sachiez exactement ce que vous faites) est un problème sérieux, car la lecture d'une variable non initialisée entraîne un comportement indéfini. Par exemple, ce code se comporte différemment dans les versions release et debug et personne ne peut garantir que lorsque vous changez la version du compilateur ou les paramètres d'optimisation, son comportement ne changera pas aussi :
Peter, au sujet des variables globales, je n'ai pas encore trouvé dans la littérature que les variables globales doivent être prédéfinies. Avez-vous un lien vers la source pour améliorer vos connaissances en la matière ? La référence MQL5 ne contient pas de référence explicite à l'initialisation :
Le type bool est conçu pour stocker les valeurs booléennes true ou false, dont la représentation numérique est respectivement 1 ou 0 .
Exemples :
bool a =true;
bool b =false;
bool c =1;
La représentation interne est un nombre entier de 1 octet. Il convient de noter que dans les expressions booléennes, il est acceptable d'utiliser d'autres types entiers ou réels ou des expressions de ces types à la place de bool, et le compilateur ne générera pas d'erreur. Dans ce cas, le zéro sera interprété comme faux et toutes les autres valeurs comme vraies.
Les objets globaux, sont initialisés avec le constructeur par défaut. Pour les types primitifs (dans notre cas, tous sauf les chaînes de caractères), c'est 0. Mais pour la mémoire (lire les variables) allouée sur la pile, elle n'est pas initialisée. C'est pourquoi les variables globales peuvent ne pas être initialisées, rappelez-vous que dans ce cas elles seront égales à zéro. Mais l'absence d'initialisation (en même temps, habituez-vous à éviter immédiatement les avertissements générés par le compilateur, à moins que vous ne sachiez exactement ce que vous faites) est un problème sérieux, car la lecture d'une variable non initialisée entraîne un comportement indéfini. Par exemple, ce code se comporte différemment dans les versions release et debug et personne ne peut garantir que lorsque vous changez la version du compilateur ou les paramètres d'optimisation, son comportement ne changera pas aussi :