![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
Oui, il est réglé, mais quand il est déclenché...
Ou un autre exemple : nous avons un ordre en attente, son prix diffère de celui du jour d'un point, au tick suivant le prix augmente non pas d'un point, mais, disons, de 3 à 5 points, ce qui entraîne une ouverture à un prix erroné. Un exemple évident est un écart.
Ou peut-être que je ne comprends pas la question et que je suis stupide.
Ici, je comprends mal le fonctionnement de OrderGetTicket. La fonction renvoie alternativement faux et vrai. Même si nous tenons compte du fait que l'ordre est placé à un prix erroné, elle devrait simplement renvoyer faux. Mais alternativement...
UPD : En général, le problème était dans un oubli de NormalizeDouble dans le passage du prix. Comme d'habitude :) La fonction elle-même fonctionne bien.
La fonction, si aucun ordre n'est sélectionné, donne zéro ?
C'est-à-dire que si l'égal n'est pas double, simple, il s'agira ici d'une affectation et non d'une comparaison ? Le zéro n'est-il pas la même chose que le non ?
Je n'ai pas eu d'erreur tout de suite, mais j'ai réalisé plus tard que je n'avais pas compris ce que j'avais écrit !
Pouvez-vous nous dire s'il est possible de rédiger
La fonction, si aucun ordre n'est sélectionné, donne zéro ?
C'est-à-dire que si l'égal n'est pas double, simple, il s'agira ici d'une affectation et non d'une comparaison ? Le zéro n'est-il pas la même chose que le non ?
Je n'ai pas eu d'erreur tout de suite, mais j'ai réalisé plus tard que je n'avais pas compris ce que j'avais écrit !
L'expression est correcte ; la description de la fonction indique qu'elle renvoie zéro si elle échoue. Zéro pour si est faux. La construction fonctionnera donc très bien.
De plus, la fonctionnalité de négociation est si rapide que nous avons envoyé un ordre sur un tick et qu'il est déjà dans l'historique sur le tick suivant, donc cette construction retournera très souvent (mais pas toujours) faux.
Ce code montre que vous vérifiez les ordres que vous avez passés, mais pas encore exécutés. La fonction OnTradeTransaction() est mieux adaptée pour les surveiller.
Je n'ai aucune idée de la façon de traiter les classes, les fonctions virtuelles. Lecture, lecture, lecture, lecture. Pendant une heure, et pas pour la première fois. Il est écrit de manière un peu lourde, incompréhensible, et l'essentiel est couvert par des termes nouveaux et inédits - il suffit de suivre les liens. Il est dit ( Les classes et les structures peuvent avoir un constructeur et un destructeur explicites) Je vais regarder Constructeurs et Destructeurs Il est dit (Le constructeur est une fonction spéciale qui est appelée automatiquement lors de la création d'un objet structurel ou d'une classe et est généralement utilisé pour initialiser les membres de la classe) En bref, je ne comprends pas.
Un constructeur est une fonction appelée automatiquement lors de la création d'un objet de classe et sert à initialiser l'objet.
C'est plus clair ? Sinon, je suis impuissant.
Donc. Elle indique que le choix de la définition de fonction à appeler pour la fonction virtuelle est dynamique (au moment de l'exécution).
La définition de la fonction, qui est entre parenthèses, c'est-à-dire qu'elle ordonne à la machine de faire quelque chose de spécifique, n'est-ce pas ? Mais ici, il s'avère que la machine elle-même fait ce qu'elle veut et quand elle veut, tout comme mon ami Vasya ? Vraiment, j'ai lu cette phrase 100 fois déjà, mais je n'arrive pas à la comprendre. Je ne peux pas le comprendre ! J'essaierai de lire les exemples avec soin et attention...
Et j'ai commencé à lire sur la classe - c'est là que j'ai commencé, à comprendre, j'écrivais sur la fonction !
Donc. Elle indique que le choix de la définition de fonction à appeler pour la fonction virtuelle est dynamique (au moment de l'exécution).
La définition de la fonction, qui est entre parenthèses, c'est-à-dire qu'elle ordonne à la machine de faire quelque chose de spécifique, n'est-ce pas ? Mais ici, il s'avère que la machine elle-même fait ce qu'elle veut et quand elle veut, tout comme mon ami Vasya ? Vraiment, j'ai lu cette phrase 100 fois déjà, mais je n'arrive pas à la comprendre. Je ne peux pas le comprendre ! J'essaierai de lire les exemples attentivement et avec attention...
Et j'ai commencé à lire sur la classe - c'est par là que j'ai commencé, pour comprendre que j'écrivais sur une fonction !
Tu te moques de moi ?
Apprenez à poser les bonnes questions et vous n'aurez pas à en poser la plupart.
Lesfonctions virtuelles n'ont de sens que dans le contexte de l'héritage.
L'astuce de l'héritage n'est pas seulement que le code peut être réparti sur de nombreuses classes (à mesure que l'héritage augmente),
mais en ce sens que vous pouvez d'abord déclarer un objet ancêtre dynamique et ensuite le défaire en tant que descendant.
Par exemple, un objet doit être déclaré globalement, mais au moment de la déclaration, on ne sait pas de quelle classe l'objet doit être. Ensuite, les classes sont héritées d'un ancêtre commun, un objet dynamique de l'ancêtre est déclaré dans la portée globale et ensuite, quand on sait quelle classe l'objet doit être, il est redéfini par l'opérateur new.
Le mot dynamique est souligné car on ne peut pas faire cela avec un statique, le statique est défini immédiatement et complètement.