Auto-apprentissage du langage MQL5 à partir de zéro - page 29
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 rempli un novice d'informations inutiles).
C'est au débutant de décider si l'information est utile ou non.
Bien dit, instructif, merci
Cela suggère que vous ne devriez pas étaler vos désirs de cette manière. Vladimir aurait tout aussi bien pu poser des questions portant spécifiquement sur telle ou telle fonction et recevoir des conseils utiles, plutôt que les inepties des "experts" comme apprendre le C++ ou apprendre l'assembleur. Vous pourriez commencer par étudier les cartes perforées.
On avance :
- Comme il y a beaucoup d'événements, il y a beaucoup de gestionnaires d'événements. Puisque les événements sont appelés de manière incohérente, leurs gestionnaires d'événements sont également appelés de manière incohérente. Comme les appels sont incohérents, les gestionnaires d'événements ne peuvent pas dépendre les uns des autres, et ils ne peuvent pas non plus dépendre des données des autres. La seule construction qui répond à ces exigences strictes est une fonction.
- Les fonctions ne peuvent pas dépendre les unes des autres. Si une fonction renvoie la somme a+b, et que la seconde fonction renvoie le produit a*b, le résultat de ces deux fonctions ne dépendra pas de la séquence d'appels. Nous pouvons appeler la première fonction avec les arguments 3 et 5 et obtenir 8. Ensuite, appelez la deuxième fonction avec les mêmes arguments et obtenez 24. Puis échangez leurs appels. Les résultats seront les mêmes. La fonction d'addition renverra toujours 8 avec les arguments 3 et 5. La fonction de multiplication retournera toujours 24 avec les mêmes arguments.
- Il ressort clairement de ce qui précède que le gestionnaire d'événement ne peut être qu'une fonction. Si un nouvel événement tick se produit, il est traité par la fonction OnTick. Si l'événement Start (un lancement unique du script) se produit, il est géré par la fonction spéciale OnStart.
- Cette fonction est universelle. Cette fonction peut gérer non seulement les événements. La fonction peut retourner quelque chose d'utile, par exemple l'heure actuelle. Une fonction peut effectuer des calculs complexes avec les arguments qui lui sont transmis et renvoyer le résultat final de ces calculs sous la forme d'une valeur unique. Enfin, une fonction peut être un fournisseur de données : Vous appelez la fonction et obtenez les données dont vous avez besoin, telles que des citations, à partir de celle-ci.
- En interne, MetaTrader se compose de milliers de fonctions, dont environ 1500 mille sont gentiment mises à la disposition des utilisateurs. Ces fonctions sont très utiles. Ils vous permettent de vérifier l'heure du système et d'obtenir les données d'un instrument qui vous intéresse. Ces fonctions sont utilisées pour envoyer des ordres de transaction. Vous pouvez ouvrir le manuel ICL et voir qu'il est constitué de fonctions et de leurs arguments. Ainsi, MetaTrader, en ce qui concerne les programmes utilisateurs, est un grand ensemble de fonctions.
- Les fonctions universelles ne suffisent pas. Quel que soit le nombre de nouvelles fonctions ajoutées au système, il y aura toujours une pénurie de celles-ci. La raison en est que chacun a des besoins différents. Il n'existe pas de dispositif unique pour toutes les occasions. Les fonctionnalités les plus génériques et universelles sont déjà incluses dans MetaTrader et sont aimablement partagées avec nous. Cependant, les besoins des utilisateurs sont infinis. MetaQuotes ne peut pas répondre aux besoins individuels de 100 000 utilisateurs de son terminal. Au lieu de cela, ils ont opté pour une solution plus souple : ils ont laissé les utilisateurs créer eux-mêmes les fonctionnalités qu'ils souhaitaient. Les utilisateurs en ont profité. Au lieu d'utiliser une fonction système qui ne leur convient pas, ils peuvent écrire leur propre fonction qui résout parfaitement leur problème. Aucune fonction du système n'est parfaite en raison de son universalité.
- La capacité d'un utilisateur à écrire ses propres fonctions et à comprendre leur fonctionnement vous indique le niveau de compétence du programmeur. S'il comprend qu'un programme est un ensemble disjoint de gestionnaires (sous forme de fonctions) qui ne traitent pas de manière cohérente les événements entrants, il est bon. S'il sait écrire ses propres fonctions, c'est un autre plus. S'il peut combiner le travail de plusieurs fonctions (les siennes et celles du système) dans un algorithme commun, c'est un autre atout pour lui.
- Si vous comprenez que tout dans MetaTrader (le quatrième et le cinquième) est en quelque sorte basé sur des fonctions, des fonctions et des fonctions - tout devient soudainement clair. L'aide n'est plus présentée comme un livre épais contenant un tas d'extraits de code éparpillés, mais comme un guide des fonctions disponibles et de ce qu'elles font. Tout le reste, comme les types de données, les tableaux, les structures, les classes, est sans intérêt. Il s'agit de soutenir les fonctions afin qu'elles puissent retourner quelque chose et accepter quelque chose.
(pour l'instant)Super ! !! Vasily, vous avez un talent naturel pour l'enseignement. Tout est clair et compréhensible, surtout pour ceux qui sont au point mort. Avez-vous déjà pensé à écrire un livre similaire à MQL4 Tutorial de Sergey Kovalev, mais qui s'appellerait MQL5 Tutorial de Vasily Sokolov ?
Vous pensez quece sujet donnera un élan à une telle initiative, n'est-ce pas, Vasily ?
Salutations, Vladimir.
Vasily concentre votre attention uniquement sur certains aspects particuliers, croyant qu'ils sont plus importants que les autres. Par exemple, une fonction ou un événement. Lisez sur les fonctions dans l'ouvrage de S.Kovalev et vous trouverez une explication non moins (et même plus) détaillée et accessible, mais sans se concentrer sur elles, au détriment des autres domaines. Par conséquent, vous devez lire le manuel.
Et toi, Peter, tu peux proposer à Vasily et toi de faire un bon travail ensemble et d'écrire un tel livre sur MQL5.
Écrire un livre est le meilleur moyen de laisser une trace dans l'histoire de l'humanité, en particulier dans l'histoire de la programmation. Pensez-y !
Salutations, Vladimir.
Peter, je vous propose, à vous et à Vasily, de faire un bon travail ensemble et d'écrire un tel livre sur MQL5.
Écrire un livre est le meilleur moyen de laisser une trace dans l'histoire de l'humanité, en particulier dans l'histoire de la programmation. Pensez-y !
Salutations, Vladimir.
Merci pour l'offre, mais Vasily me "bat" facilement à une approche classique, ce qui est exactement ce dont j'ai besoin dans un tel livre. Je ne peux offrir qu'une compréhension abstraite de l'objet et de l'environnement dans leur interaction dynamique à travers le prisme de la programmation, mais ce sera le dernier chapitre. ))))
Je vois. Maintenant, je voudrais connaître l'opinion de Vasily sur ma proposition de livre.
En ce moment, j'étudie son article "Universal Trading Expert Advisor : Working with Custom Trailing Stops (Part 6)".
Sincèrement, Vladimir.
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 :
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.
Je vois. Maintenant, j'aimerais connaître l'opinion de Vasily sur ma proposition de livre.
J'étudie actuellement son article "Universal Trading Expert Advisor : Working with Custom Trailing Stops (Part 6)".
Sincèrement, Vladimir.
Non. Il n'y aura pas de livre. Peut-être quelques articles. Mais pas dans un avenir proche, c'est sûr.
Peter, je peux vous suggérer, à vous et Vasily, de faire un bon travail ensemble et d'écrire un tel livre sur MQL5.
Je ne pense pas. Mes vues avec Peter et moi sont trop différentes. Vous pouvez jeter un coup d'œil à certains de nos codes pour voir à quel point ils sont différents).