Caractéristiques du langage mql5, subtilités et techniques - page 54
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
Caractéristiques des structures héritées
Si vous voulez savoir si le drapeau "Illimité" est activé dans Settings --> Charts --> Max bars dans la fenêtre, utilisez cette construction:
Quand je ne veux pas qu'une méthode publique s'allume (quand on tape un point après le nom de l'objet, par exemple), je fais de cette méthode un opérateur public. Cependant, il n'est pas toujours possible d'utiliser une telle béquille.
Quand je ne veux pas qu'une méthode publique s'allume (quand on tape un point après le nom de l'objet, par exemple), je fais de cette méthode un opérateur public. Cependant, il n'est pas toujours possible d'utiliser une telle béquille.
Y a-t-il un exemple dans le code ? S'il vous plaît.
Y a-t-il un exemple dans le code ? S'il vous plaît.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Particularités du langage mql5, subtilités et astuces
fxsaber, 2017.09.08 13:20
N'est-ce pas
Ce n'est pas la même chose ?Et ceci.
Ce n'est pas la même chose ?Non, bien sûr que non. Les champs Valeur1, Valeur2, ... sont nombreux ; GetValue1() et GetValue2() sont les mêmes. Il n'est pas rationnel d'effectuer des calculs supplémentaires à chaque GetValue. Il est inutile d'effectuer des calculs, même dans un GetValue appelé plusieurs fois.
Je n'ai pas réussi à trouver comment définir la taille d'un champ de tableau d'une structure simple. Alors j'ai fait cette béquille.
J'ai utilisé des macros, pour faire court. Dans MQL5, il n'y a probablement pas d'autre moyen. Est-ce une solution normale en C++ ? Comme le modèle <typesize S>.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Bibliothèques : MT4Orders
fxsaber, 2017.09.14 08:52
Le déclencheur SL/TP a été posté sur le forum avant même les drapeaux de MQL5 Reason. Sa logique montre clairement que lorsque les niveaux SL/TP/SO d'une position ouverte sont acceptés par le serveur de trading, un ordre de marché correspondant est généré, qui se trouve dans le tableau des ordres ouverts du MT5 jusqu'à son exécution.
Par conséquent, dans MT5, même sur un MQL5 pur, la modification/suppression de tels ordres n'est pas possible, et la logique de négociation dans MT5 exige de vérifier si un ordre ouvert est effectivement gelé ou non.
...Vous pouvez voir que pendant plus d'un quart de seconde, l'ordre TP était suspendu parmi les ordres ouverts. Toute tentative de le modifier/supprimer aurait provoqué des erreurs.
Soyez conscient de cette fonctionnalité de MT5.
Quand je ne veux pas qu'une méthode publique s'allume (quand on tape un point après le nom de l'objet, par exemple), je fais de cette méthode un opérateur public. Cependant, il n'est pas toujours possible d'utiliser une telle béquille.
En fait, c'est une sorte de méga-béquille. Comment allez-vous analyser plus tard votre code contenant des opérateurs aussi peu informatifs qui ne savent pas ce qu'ils font ?
Ce doit être une erreur de conception. Si une classe n'est pas initialement destinée à être modifiée de l'extérieur mais qu'elle ne contient que des méthodes Get, elle doit être identique. Toutes les modifications sont effectuées à travers les classes qui en ont hérité.
Une autre variante pratique serait l'héritage protégé, lorsque la classe de base contient toutes les méthodes et que la classe héritée n'affiche que les méthodes Get. Et lorsque cela est nécessaire, vous pouvez l'intégrer à la classe de base. Mais Metaeditor n'a toujours pas corrigé le bug, toutes ces méthodes seront mises dans la liste même si elles ne sont pas disponibles.
Il n'est pas rationnel d'effectuer des calculs supplémentaires sur chaque GetValue. Même un GetValue appelé plusieurs fois ne doit pas effectuer de calculs.
Alors qu'est-ce qui vous empêche d'utiliser la méthode Recalculate() ? Si c'est ce qui fait que la classe fonctionne logiquement, parce que la classe elle-même ne peut pas définir quand il est nécessaire de recalculer, cela signifie que la classe est contrôlée par un utilisateur.