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

 

Vladimir Simakov:

Mon pote a regardé cette merde et a dit : 250 000 pour moi et 75 000 chacun pour mes deux junks, et on réécrit cette merde dans six mois ou on s'en débarrasse.

c'est la bonne décision à en juger par la mise en place, avec l'approche décrite il y aura toujours des problèmes avec les GPs.

 
MrBrooklin:

J'ai lu tous les messages concernant les variables globales et j'ai compris ce que tous les participants à cette discussion essayaient de me dire. J'apprendrai comment écrire le code d'un programme sans utiliser de variables globales. Merci à tous pour ces conseils constructifs !

Sincèrement, Vladimir.

Les programmeurs ont peur d'utiliser des variables globales en raison des erreurs qui peuvent être commises lors de la modification de leurs valeurs. Cela crée une situation où une erreur est difficile à localiser, car chaque fonction peut les modifier. Bien sûr, seules ces variables doivent exister dans la portée globale que toutes les fonctions du programme doivent voir. Il ne peut en être autrement.

J'ai toujours aimé utiliser les variables globales, car elles garantissaient une croissance rapide des fonctionnalités, et le programme se transformait en un énorme chantier actif. Les gens me reprochent souvent la façon dont j'écris le code, mais c'est pour cela que c'est un chantier, parce que le nettoyage se fait après la construction de base du bâtiment, et quand la maison est construite, on peut commencer à poser le carrelage, à peindre, à nettoyer la zone. En attendant, la priorité est de monter le coffrage et de couler le béton).

Cependant, les programmeurs pensent différemment. Ils vont "nettoyer" et "épurer" leur code, même s'il s'agit de deux lignes et demie. Ils frotteront leur code même s'il fait deux lignes et demie, mais il brillera comme une pièce neuve). Cette attitude à l'égard du code est justifiée par leur profession dont ils vivent, mais du point de vue de la créativité, ils sont rigides et peu développés. C'est comme ça...

Mon conseil : apprenez à écrire correctement, mais permettez-vous parfois de vous éloigner des règles et d'expérimenter pour acquérir une expérience plus variée. Cela vous aidera à apprendre et vous apprendrez plus vite.
 
MrBrooklin:

Je continue à étudier le langage de programmation MQL5. Je colle à nouveau le code révisé du script, en tenant compte des conseils des participants à ce fil de discussion. J'ai testé le script 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, ce qui le rend plus facile à assimiler. Comme je l'ai promis plus tôt, j'ai essayé de décrire le script d'une manière compréhensible pour un étudiant de 1ère classe de l'école de programmation.

J'espère avoir fait exactement ce que m'ont dit les participants de ce fil, mais je peux me tromper.

Salutations, Vladimir.

C'est formidable que vous ayez trouvé vous-même comment et où déplacer la variable globale bool enough_time. Vous faites des progrès.
 
Реter Konow:
C'est bien que vous ayez trouvé comment et où déplacer la variable globale bool_timе. Vous faites un excellent travail.

Merci, Peter, pour votre soutien et votre aide. J'ai déplacé les variables globales à l'intérieur de la fonction grâce aux conseils qui m'ont été donnés précédemment par les participants de ce fil de discussion. Maintenant, lorsque les informations sont triées dans ma tête, il est beaucoup plus facile d'appréhender les nouvelles choses.

Salutations, Vladimir.

 

Bonjour à tous et bonne humeur !

Chers experts en programmation ! Je tiens à exprimer ma sincère gratitude pour toutes les astuces et les conseils constructifs que vous partagez avec moi !

Sincèrement, Vladimir.

 
MrBrooklin:

Bonjour à tous et bonne humeur !

Chers experts en programmation ! Je tiens à exprimer ma sincère gratitude pour toutes les astuces et les conseils constructifs que vous partagez avec moi !

Sincèrement, Vladimir.


Vous évoluez rapidement... :-)
C'est à cause de ma formation technique supérieure de base, si je ne me trompe pas...

 
Aleksey Masterov:

Vous allez vite... :-)
C'est à cause d'un enseignement technique supérieur de base, si je ne me trompe pas...

Bonjour Alexey ! Oui, c'est vrai, j'ai une formation technique supérieure soviétique liée à l'automatisation des processus de production et une expérience en tant qu'ingénieur en électronique dans une organisation qui, à l'époque soviétique, réparait les ordinateurs électroniques.

Salutations, Vladimir

 
MrBrooklin:

Bonjour Alexey ! Oui, c'est vrai, j'ai une formation technique supérieure liée à l'automatisation des processus de production et une expérience professionnelle en tant qu'ingénieur en électronique dans une organisation qui s'occupait, à l'époque soviétique, de la réparation des ECM.

Sincèrement, Vladimir.


On le remarque immédiatement chez vous, pour moi... Au niveau et à la vitesse de vos progrès dans cet "art" de la traduction de fantasmes en code, surtout des fantasmes aussi philosophiques que dans votre dernier scénario ! :-)
IMHO, si vous continuez à ce rythme, vous allez vous frotter le nez de beaucoup de programmeurs experts ici ... :-)
Postulez pour un emploi à distance avec l'équipe de MT5 methaquotes ! !!
 
Vasiliy Sokolov:

Suite de l'article

Il était clair dans le post ci-dessus que l'accent était mis sur les fonctions. Tout était consacré à eux et rien qu'à eux. On pourrait penser qu'il s'agit d'un parti pris subjectif évident ou d'une "philosophie" obscure. Cependant, il n'y a pas de philosophie ici. Et cette attention portée aux fonctions n'est pas fortuite. Le fait est qu'en programmation, la fonction est d'une importance fondamentale. De plus, la fonction est une notion très importante et fondamentale en mathématiques. Dans les années 20 du siècle dernier, Alonzo Church a développé un système de calcul basé sur les fonctions. Cela s'appelait le lambda-calcul. Ce système a permis de formaliser la notion de calculabilité et de lier étroitement les calculs informatiques et les mathématiques. Les principaux programmeurs du monde ont développé des langages de programmation dits fonctionnels basés sur le lambda-calcul, dans lesquels les fonctions occupent une place prépondérante. Par exemple, dans le langage de programmation fonctionnel Haskell, il n'y a même pas de boucle for ou quelque chose de similaire. Au lieu de cela, il est proposé d'appeler une fonction de manière spéciale, récursive, pour calculer la valeur souhaitée. Il est possible de prouver qu'avec seulement des fonctions et aucune affectation, il est possible d'écrire un langage de programmation complet de Turing. Il s'agit d'un langage qui permettrait d'écrire tout ce qui est possible dans tout autre langage turing-complet, tel qu'un langage procédural ou OOP.

MQL n'est pas un langage fonctionnel, mais plutôt un langage procédural, extensible par des classes, avec un typage strict et une riche API orientée sujet (sous la forme des mêmes fonctions, oh surprise). D'un autre côté, la théorie des fonctions repose sur une base mathématique solide et offre des modèles simples et efficaces d'utilisation de n'importe quel langage de programmation où il y a des fonctions, de sorte qu'il n'est au moins pas prévoyant d'abandonner les fonctions et la base mathématique qui les sous-tend. C'est pourquoi je prête tant d'attention aux fonctions. Peu importe que vous compreniez bien la structure du tableau, peu importe que vous fassiez une erreur avec un certain type de données. Cela peut être rapidement réparé et corrigé. Mais si vous ne comprenez pas les fonctions et comment elles sont liées, vous ne deviendrez même pas un programmeur moyen.

Ainsi, pour apprendre à faire du prog normal, c'est-à-dire linéaire dans le temps pour étendre les fonctionnalités de votre programme, vous devez apprendre ce qui suit :

  • Représentez clairement (si ce n'est pas complètement, mais c'est nécessaire) le modèle d'événement de MetaTrader 4.5.
  • Savoir comment travailler avec les fonctions du système. Résumer leurs résultats dans leurs propres fonctions. Combinez les appels des fonctions du système dans vos propres fonctions.
  • Être capable et aimer écrire ses propres fonctions.
  • Être capable de comprendre les chaînes d'appels de fonctions : par exemple, lorsque la fonction a() appelle la fonction b(), et b() appelle c() et e() appelle la fonction c().
  • Savoir comment écrire des fonctions propres et comprendre pourquoi vous devez écrire des fonctions propres. J'expliquerai plus tard ce qu'est une fonction pure.

Les fonctions semblent simples. "Qu'y a-t-il à apprendre ? Vous devez juste lire un paragraphe ici, et c'est tout. Et puis les tableaux, for, while..." - Non, ils ne le sont pas. Les fonctions semblent vraiment simples (et c'est bien ainsi). Mais pour qu'elles puissent vraiment résoudre des tâches efficacement, les fonctions doivent avoir certaines propriétés et être combinées entre elles d'une certaine manière. Comment faire tout cela, je l'écrirai probablement plus tard.

Bonjour Vasiliy ! S'il vous plaît, si ce n'est pas difficile pour vous, écrivez une suite sur les propriétés des fonctions. Pour moi, comme pour d'autres novices en programmation, il est très important et utile de savoir que les fonctions doivent avoir certaines propriétés et se rejoindre d'une certaine manière.

Tous vos blocs de messages relatifs aux fonctions sont déjà rassemblés dans un seul fichier Word pour moi.

Sincèrement, Vladimir.

 
Aleksey Masterov:

... Postulez pour un emploi à distance avec l'équipe de MT5 methaquotes ! !!

Alexei, tu plaisantes ? Oui, j'aimerais d'abord apprendre les bases !

Sincèrement, Vladimir.