![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ce n'est pas ma ligne. C'est l'auteur
Code optimal de start()
Ces deux lignes sont étranges, c'est le moins qu'on puisse dire :
mieux comme ça :
Je ne comprends pas pourquoi nous devons danser autour de variables booléennes alors que nous pouvons l'écrire de cette façon :
Et la logique aussi, la logique de la pensée.
La troisième option consiste à abandonner complètement les conditions logiques de l'indicateur. La question se pose : est-ce possible ?
Essayons.
Pour cela, nous allons ajouter quelques variables logiques
L'ensemble du code de la fonction de démarrage ressemble maintenant à ceci
Il me semble qu'on peut le simplifier
for(int i = 0 ; i < limite ; i++)
{
// Option three_v1
high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i) ;
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i) ;
atr=high-low ;
MaTDn[i] = low - atr ;
MaTUp[i] = high + atr ;
}
Je l'ai aimé, merci de me le rappeler, PapaYozh. J'ai moi-même créé de telles constructions - et j'ai oublié...
À mon avis, il y a une utilisation excessive de l'appel de la fonction Symbol().
Je l'écrirais de cette façon :
Mais il ne s'agit pas de logique :)C'est vraiment très simple. Il y a un désir d'aider les autres à faire le meilleur code, et d'apprendre des autres.
Ce n'est un secret pour personne que l'on finit par développer des stéréotypes bien précis qui, parfois (le plus souvent), aident et parfois nuisent.
Je vais préparer une variante de l'indicateur et essayer d'expliquer ce qui a été fait et pourquoi. Si vous êtes intéressé, bien sûr.
Il n'y a aucun moyen d'expliquer par l'exemple comment faire un code optimal - il y aura trop d'omissions.
Le fait est qu'il existe de nombreuses règles pour créer un code optimal. Par exemple, peu de ceux qui sont familiers avec le langage MQL4 savent qu'il est beaucoup plus facile pour un processeur d'effectuer des opérations d'addition et de soustraction que de multiplication et de division. Peu de gens savent que, du point de vue de l'optimisation du code, il est préférable d'écrire a=b+b que a=b*2. Je pense donc que pour comprendre la logique de la programmation et de l'optimisation, il est beaucoup plus utile d'envoyer les personnes intéressées vers des ouvrages sur la construction d'un code optimal et l'étude des langages algorithmiques, ainsi que d'habituer les utilisateurs à créer des organigrammes des futurs programmes pour éviter les omissions et minimiser les reprises.
Je joins à ce message un lien vers un très bon livre sur la construction de codes, qui peut être téléchargé.
С. S. McConnel "Le code parfait".
Vous pouvez télécharger le livre ici : http://depositfiles.com/files/ebk6t6t5h (taille du fichier 21 Mbytes. Format - djvu)
Ainsi, de manière générale, ce fil de discussion ne peut traiter que des cas particuliers des sections de code source et optimisé avec des explications sur les raisons pour lesquelles la section de code optimisé est meilleure que la section source et pourquoi elle est optimisée de cette manière. Je pense que c'est exactement ce que tu voulais à l'origine.
Vous trouverez en annexe de ce message un lien de téléchargement vers un excellent livre sur la construction en code.
С. S. McConnel "Le code parfait".
Donc, en général, dans ce fil de discussion, nous ne pouvons discuter que des cas particuliers des sections de code source et optimisé, en expliquant pourquoi la section de code optimisé est meilleure que la section source et pourquoi elle est optimisée de cette manière. Je pense que c'est exactement ce que tu voulais depuis le début.
Pas mal non plus, mais il serait quand même bon de clarifier le nom d'une branche ou de commencer à étudier la logique.
Je ne sais vraiment pas comment faire le second moi-même...))
Ce n'est pas mal non plus, mais il serait bon de clarifier le nom de la branche ou de commencer à étudier la logique.
Je ne sais vraiment pas comment faire le second moi-même...))
Logique(grec λογική - " science du raisonnement ", " art du raisonnement " de λόγος - " discours ", " raisonnement ", " pensée ")- science des formes, des méthodes et des lois de l'activité cognitive intellectuelle, formalisée par le langage logique. Puisque cette connaissance est dérivée de la raison, la logique est également définie comme la science des formes et des lois de la pensée correcte. Parce que le raisonnement prend la forme d'un raisonnement en langage, dont la preuve et la réfutation sont des cas particuliers, la logique est parfois définie comme la science des modes de raisonnement ou la science des manières de prouver et de réfuter. La logique, en tant que science, étudie les moyens d'atteindre la vérité dans le processus de cognition de manière indirecte, non pas à partir de l'expérience sensorielle, mais à partir de connaissances obtenues antérieurement, de sorte qu'elle peut également être définie comme une science sur les moyens de dériver des connaissances par inférence.
La connaissance déductive, obtenue par l'application des lois de la logique et des méthodes de la pensée logique, - le but de toute action logique, visant à atteindre la vérité et l'application de la connaissance résultante à une connaissance plus profonde des phénomènes et des événements du monde.
L'une des principales tâches de la logique consiste à déterminer comment parvenir à une conclusion à partir d'une prémisse(raisonnement correct) et comment acquérir une véritable connaissance de l'objet de la pensée afin de mieux comprendre les nuances de l'objet de la pensée étudié et ses relations avec d'autres aspects du phénomène en question.
La logique est l'un des outils de presque toutes les sciences.
Ce n'est pas mal non plus, mais il serait bon de clarifier le nom de la branche ou de commencer à étudier la logique.
Je ne sais pas vraiment comment faire le second moi-même...)
Je peux partager ce que ça a été pour moi.
Il m'a fallu trois ans pour essayer de comprendre la logique en tant que science - je ne parvenais toujours pas à en saisir l'essence, par exemple pourquoi ai-je besoin de la logique ? Ce n'était qu'une collection de schémas presque inutiles, mais je sentais que quelque chose clochait, alors j'ai continué à le lire, à essayer de raisonner avec ses schémas, à résoudre toutes sortes de problèmes logiques à l'aide de formules. Et puis, comme par enchantement, j'ai soudain compris... Puis, lorsque j'ai enfin réalisé la valeur de cette discipline, j'ai commencé à impliquer activement mes amis dans l'étude de la logique. J'étais littéralement "en feu" avec la logique. Mes amis ont été activement entraînés dans tout l'humour logique, la beauté des conclusions difficiles, l'insolubilité des paradoxes, et pendant que j'étais là, ils ont au moins appris quelque chose. Mais quand on les laisse seuls, ils s'éteignent comme les braises d'un feu. Aucun d'entre eux n'avait jamais allumé le feu de son propre esprit. C'est là que j'ai compris qu'ils s'intéressaient à moi, mais pas plus - aucun d'entre eux n'avait derrière lui la puissance de frappe qui le pousserait à se lancer dans cette science. Et puis tous ceux qui avaient effectivement étudié la logique, pour ma part, je les avais divisés en deux catégories. Ils ont tous été forcés de l'étudier. Il n'y avait pas moyen d'y échapper. Certains professeurs qui enseignent la logique dans les universités affirment qu'elle est très difficile pour les étudiants. Au contraire, ils sont surpris de voir combien cela a été difficile pour eux et combien il est facile de postuler. Ainsi, pour ma part, j'ai divisé toutes les personnes contraintes en deux classes : celles qui sont tombées amoureuses de la logique en l'étudiant, et celles qui ont passé leurs crédits et l'ont oubliée. Je trouve toujours agréable de parler avec ceux qui sont tombés amoureux, car ils vous comprennent en un clin d'œil. Mais il est parfois difficile de traiter avec les oublieux - ces personnes jouent à la roulette russe avec leur propre mort. Le fait que consciemment on ne peut agir que sur un plan préétabli. C'est le seul moyen de rétablir l'ordre dans leur vie. L'élaboration d'un plan d'action est un processus de réflexion. Si cela n'est pas fait correctement, le résultat ne sera pas bon. Celui qui a le chaos dans sa tête, a aussi le désordre dans ses affaires. Il s'avère donc que la pensée contrôle nos vies. Et abandonner Logic ici est un chemin rapide vers la tombe.
:) Assez, c'est assez, sinon je peux continuer pendant des heures à parler de ces choses et cela finira par nous éloigner du sujet de cette branche.
P.S.
Je ne peux qu'ajouter que j'étais dans une situation tellement difficile dans ma vie que je ne savais pas quoi faire - tous mes plans et mes espoirs s'étaient effondrés. Ça fait un mal de chien. Je suffoquais de désespoir. J'ai décidé que tant que je ne comprendrais pas la situation, je ne pourrais pas décider de ce que je dois faire de ma vie et de la façon dont je dois me comporter avec ceux qui m'entourent. Je savais par les livres qu'il existe une science telle que la logique. À ce moment-là, j'ai décidé que je devais l'apprendre, pour que mes conclusions soient correctes. La complexité et la douleur de ma situation de vie ont été la force qui m'a stimulé, me faisant chercher des réponses non seulement dans la logique, mais aussi dans de nombreuses autres sciences. Tout ça, c'est du passé maintenant. Pourquoi je te dis ça ? Je voulais juste que tu comprennes ce qui m'a poussé à étudier la logique. Pour ainsi dire, je vous ai montré par l'exemple que je ne suis pas une exception et que j'ai dû moi aussi étudier cette discipline sous le bâton. Mais je ne l'ai pas étudié à l'université, mais par moi-même.
Il me semble que l'on peut simplifier encore plus.
for(int i = 0 ; i < limite ; i++)
{
// variante trois_v1
high=iMA(NULL,0,period,0,MODE_EMA,PRICE_HIGH,i) ;
low=iMA(NULL,0,period,0,MODE_EMA,PRICE_LOW,i) ;
atr=high-low ;
MaTDn[i] = low - atr ;
MaTUp[i] = high + atr ;
}
J'ai essayé de garder le rendu comme dans le code original. L'ATR est calculé différemment. Si vous comparez les deux indicateurs, vous verrez la différence.