Auto-apprentissage du langage MQL5 à partir de zéro - page 42

 
MrBrooklin:

Je continue à étudier le langage de programmation MQL5 et je publie le code d'un script, qui est la suite d'une tâche des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème détecté. J'ai défini le nombre minimum de paramètres d'entrée pour commencer. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter l'apprentissage. Comme je l'ai promis précédemment, j'ai essayé de décrire le script d'une manière accessible à un étudiant de 1ère classe de l'école de programmation.

Salutations, Vladimir.

ok

maintenant rendre le code de la logique algorithmique plus lisible

il s'avère en seulement deux lignes :

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

Vous n'avez même pas besoin de le commenter.

 
Renat Akhtyamov:

ok

maintenant rendre le code de logique algorithmique plus lisible

il n'y a que deux lignes :

if(have_time()>=Period_learning && have_time()!=0 && have_patience()==true)Print("Я выучу язык MQL5!");
else Print("Я не выучу язык MQL5!");

Vous n'avez même pas besoin de le commenter.

Bonjour, Renat ! Je suis d'accord, peut-être que je ne devrais pas écrire trop de commentaires, mais ils aideront tous les nouveaux venus qui n'ont aucune connaissance en programmation. Si quelqu'un avait fait ce travail avant moi, le processus d'apprentissage aurait été beaucoup plus rapide. Les commentaires m'aideront à mémoriser plus rapidement mon propre code. Peut-être les commentaires seront-ils plus courts à l'avenir.

Salutations, Vladimir.

 
Roman Shiredchenko:


Votre code et votre logique sont corrects. Sur mon IMHO, j'ai regardé hier, j'ai été surpris par le zéro moi-même au début, mais ensuite je me suis rattrapé avec la puce de différence.... :-)

Bonjour Roman ! Oui, c'est la conséquence de l'éducation technique et ma logique de pensée est un peu différente, mais Peter avait raison sur le zéro, donc j'ai changé le code du script.

Salutations, Vladimir.

 
MrBrooklin:

Je continue à étudier le langage de programmation MQL5 et je publie le code d'un script, qui est la suite d'une tâche des participants de ce fil. Le script a été testé dans tous les modes. Aucun problème détecté. J'ai défini le nombre minimum de paramètres d'entrée pour commencer. Le code du script est écrit en anglais, les commentaires du code sont en russe, pour faciliter l'apprentissage. Comme je l'ai promis précédemment, j'ai essayé de décrire le script d'une manière accessible à un étudiant de 1ère classe de l'école de programmation.

Salutations, Vladimir.

Des problèmes de logique subsistent :

1. Les fonctions devraient calculer quelque chose. Dans ce cas, les deux fonctions initialisent les variables globales avec la valeur de leurs variables d'entrée et ne font rien d'autre. C'est-à-dire que si vous mettez des variables inpu dans la condition, rien ne changera.

2. have_time est égal à Days_passed, qui est défini par l'utilisateur. La condition dit : if(have_time() >= period_learning... qui est 500, et ensuite il dit && have_time() >0... c'est une erreur logique. Si have_time() est supérieur à 500, alors have_time() est déjà supérieur à zéro, donc ce code est inutile.

3. Le résultat de la question de savoir si vous allez ou non apprendre ne doit pas dépendre uniquement de l'hameçon. Vous devez penser à une variable dont la valeur est indéfinie et qui affectera le calcul indépendamment de votre volonté. Sinon, il n'y a pas de doute - ce que vous avez saisi est ce que vous avez obtenu.


P.S. Si l'entrée have_time > 0 contrôle donc la valeur de peroid_lerning, en cas d'entrée de valeur négative ou de zéro, il est plus correct de mettre en condition && period_learning > 0.
 
Fast235:

Tout d'abord, apprenez à travailler avec les variables de type chaîne de caractères auprès de Dmitry Fedoseyev. Les infostringements sont très brumeux au stade de l'étude du code d'autrui,

L'article qu'il a relu rend tout clair, et vous apprendrez certains détails en passant, je parle en tant que lecteur de la plupart des articles ici, je pense que personne n'en a lu plus que moi).

Bonjour, merci pour le conseil. Je lis les articles de Dmitry Fedoseyev, mais jusqu'à présent, j'ai du mal à apprendre de ses articles, car je n'ai aucune formation de base. J'espère que ça deviendra plus facile. À propos, l'écriture du script Learning_MQL5.mq5 m'a sérieusement aidé à comprendre ce qu'est une fonction, à quoi elle sert et comment elle est créée !

Meilleures salutations, Vladimir.

 
Реter Konow:
Les problèmes de logique demeurent :

1. Les fonctions doivent calculer quelque chose. Dans ce cas, les deux fonctions initialisent les variables globales avec la valeur des variables pip et ne font rien d'autre. C'est-à-dire que si vous mettez des variables inpu dans la condition, rien ne changera.

2. Have_time est égal à Days_passed, qui est défini par l'utilisateur. La condition dit : if(have_time() >= period_learning... qui est 500, et ensuite il dit && have_time() >0... c'est une erreur logique. Si have_time() est supérieur à 500, alors have_time() est déjà supérieur à zéro, donc ce code est inutile.

3. Le résultat de la question de savoir si vous allez ou non apprendre ne doit pas dépendre uniquement de l'hameçon. Vous devez penser à une variable dont la valeur est indéfinie et qui affectera le calcul indépendamment de votre volonté. Sinon, il n'y a pas de doute - ce que vous avez saisi est ce que vous avez obtenu.

Bonjour Peter ! Je savais que vous auriez des questions, surtout sur le point 2.

Le code ici n'est pas superflu, mais très astucieux. Si vous essayez de supprimer && have_time()!=0(vous l'avez écrit comme && have_time()>0) du code du script, le résultat sera "Je vais apprendre MQL5 !" étant donné les paramètres d'entrée Period_learning=0 et Days_passed=0, et ceci n'est pas admissible du point de vue dogmatique !

Je suis d'accord avec les autres points - il y a beaucoup de choses à penser.

Salutations, Vladimir.

 
MrBrooklin:

Bonjour Peter ! Je savais que vous auriez des questions, notamment sur le point 2.

Le code ici n'est pas superflu, mais assez élaboré. Si vous essayez de supprimer && have_time()!=0(vous l'avez écrit comme && have_time()>0) du code du script, le résultat sera "Je vais apprendre MQL5 !" étant donné les paramètres d'entrée Period_learning=0 et Days_passed=0, et ceci n'est pas admissible du point de vue dogmatique !

Je suis d'accord avec les autres points - il y a beaucoup de choses à penser.

Salutations, Vladimir.

Ok, regardez : have_time() retourne essentiellement la valeur de la variable inpu Days_passed. Si Jours_passés est fixé à zéro, l'entrée if(...have_time()!=0... ne nous fera pas passer dans la condition, mais si Période_apprentissage est fixé à zéro, nous passerons dans la condition. Ainsi, écrire Période_apprentissage >0 nous protégera simultanément de zéro dans la variable Jours_passés et de zéro dans la variable Période_apprentissage, tandis qu'écrire if(.... have_time()!=0 ... seulement à partir de zéro dans Jours_passés).
 
Реter Konow:
Ok, regardez : la fonction have_time() renvoie essentiellement la valeur de la variable d'entrée Days_passed. Si Jours_passés est égal à zéro, alors l'entrée if(...have_time()!=0... ne nous permettra pas de passer dans la condition, mais si Période_apprentissage est égal à zéro, nous passerons dans la condition. Ainsi, écrire Période_apprentissage >0 nous protégera simultanément de zéro dans la variable Jours_passés et de zéro dans la variable Période_apprentissage, tandis qu'écrire if(.... have_time()!=0 ... seulement à partir de zéro dans Jours_passés).

Je vois.

Respectueusement, Vladimir.

 
MrBrooklin:

Je vois.

Salutations, Vladimir.

Dans l'ensemble, bien sûr, vous avez fait un grand pas en avant - vous avez maîtrisé et commencé à utiliser les fonctions, ce dont il faut évidemment vous féliciter !)

A ce rythme, vous serez bientôt à la traîne.

P.S. Désolé de ne pas avoir dit bonjour. Les gens n'ont pas l'habitude de se saluer ici sur le forum, ce qui ne doit bien sûr pas être pris comme un signe d'irrespect. Je me souviens qu'il y a environ cinq ans, un modérateur m'a réprimandé lorsque je disais bonjour aux membres du forum. )) Depuis, je ne dis plus bonjour ici, seulement en privé. Désolé encore.)))
 
Реter Konow:
Bien sûr, vous avez fait un sérieux pas en avant dans l'essentiel : vous avez maîtrisé et commencé à utiliser les fonctions, ce dont il faut vous féliciter, bien sûr !
.

A ce rythme, vous serez bientôt à la traîne.

P.S. Désolé de ne pas avoir dit bonjour. Les gens n'ont pas l'habitude de se saluer ici sur le forum, ce qui ne doit bien sûr pas être pris comme un signe d'irrespect. Je me souviens qu'il y a environ cinq ans, un modérateur m'a réprimandé lorsque je disais bonjour aux membres du forum. )) Depuis, je ne dis plus bonjour ici, seulement en privé. Désolé encore.)))

Merci, Peter, pour ces mots d'encouragement !

Quant aux conversations polies, surtout le fait de saluer et de souhaiter à chacun une bonne journée et une bonne humeur. A mon avis, cela manque beaucoup dans le forum. Le traitement respectueux des interlocuteurs est quelque chose que notre génération a appris depuis l'époque soviétique. Si l'administration du site (forum) me réprimandait concernant l'accueil des participants, j'en tiendrais compte et suivrais les règles.

Salutations, Vladimir.