
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
Tu as tout compris. Utiliser une constante NULL.
Laissez-moi vous dire un secret, c'est déjà mis en œuvre. Vous devez cliquer sur la roue de la souris et il y aura un réticule.
Vous pouvez le faire il y a longtemps. Depuis le navigateur, vous faites glisser l'indicateur vers la fenêtre à laquelle il est déjà attaché.
À mon avis, ce n'est pas la chose la plus nécessaire.
Vous avez un navigateur, vous avez des favoris, vous avez des modèles, vous avez des profils. Tout peut être mis en place. Lisez l'aide pour le terminal, vous y découvrirez beaucoup de choses !
Les énumérations sont utilisées pour rendre le code plus lisible, pour supprimer les constantes et les remplacer par des entités connues de l'homme.
Par exemple, les valeurs de l'énumération ENUM_DAY_OF_WEEK peuvent être utilisées pour la comparaison avec la valeur day_of_week de la structure MqlDateTime. Par exemple, vous pouvez l'écrire comme suit
Ou vous pouvez l'écrire différemment :
DIMANCHE est une constante nommée de type int avec la valeur 0.
Cool ! Merci pour le navigateur ! Je n'y ai pas prêté beaucoup d'attention. J'ai l'habitude de le désactiver, pour qu'il ne prenne pas trop de place. L'aide, même si c'est juste un aperçu, je l'ai lu. Il ne me dit rien sur le fait de faire glisser un indirect dans la fenêtre des graphiques et les uns sur les autres. Bien que, j'aurais pu le deviner et essayer....))).
Merci d'avoir expliqué la nature des énumérations ! Je les ai lus très rapidement, MQL est principalement dérivé de C++, et il y a beaucoup de docks pour lui. Mais un grand nombre de fautes d'impression dans l'aide et des articles incomplets ne sont pas bons.
Résultats : une aide correctement rédigée peut permettre d'éviter beaucoup de questions stupides de la part des nuls sur le forum !
En ce qui concerne NULL, c'est zéro - on l'utilise beaucoup. Mais les valeurs maximales des variables sont très rares, presque jamais. Par exemple, une variable stocke trois états après l'analyse des indicateurs : BUY, SELL ou NULL. Si nous utilisons les constantes toutes faites POSITION_TYPE_BUY, POSITION_TYPE_SELL, l'une d'entre elles est zéro. Je suis sûr que EMPTY_VALUE sera plus populaire que NULL si vous le généralisez à tous les types).
Il existe une autre application infiniment utile. Par exemple :
Et l'utilisateur obtient une liste déroulante avec un choix de 4 éléments de ce que vous avez écrit là dans les commentaires - "Acheter seulement", "Vendre seulement", etc. Très utile pour répertorier un ensemble d'indicateurs, de délais, un ensemble de conditions, etc. dans la fenêtre des paramètres utilisateur.
La partie NULL est zéro, et elle est souvent utilisée. Par exemple, la variable stocke trois états après l'analyse des indicateurs : BUY, SELL ou NULL. Si nous utilisons les constantes prêtes à l'emploi POSITION_TYPE_BUY, POSITION_TYPE_SELL, l'une d'entre elles est NULL.
Pas de problème, vous pouvez le faire de cette façon :
Et mettez-le où vous voulez.
Pas de problème, vous pouvez le faire de cette façon :
Et mettez-le où vous voulez.
Tout ceci est clair. Ce n'est pas ce que je veux dire.
Alors, expliquez ce que vous voulez dire ? Une seule constante pour tous les types de données prédéfinis ? Il est peu probable qu'une telle chose soit mise en œuvre.
Malheureusement, seuls les programmeurs expérimentés comprennent l'utilité et l'importance d'un tel avertissement.
Eh bien, je recommande à tous les autres d'être heureux de ce niveau d'aide du compilateur et de corriger leurs propres erreurs. Ce sont de véritables lieux d'erreurs potentielles et c'est précisément pour les développeurs novices qu'il est essentiel d'apprendre.
Le sujet des "méthodes purement virtuelles" a déjà été abordé sur le forum il y a quelques années.
C'est-à-dire que dans le concept C++, les méthodes virtuelles sans corps qui doivent OBLIGATOIREMENT être surchargées dans les descendants :
En outre, une classe contenant de telles méthodes devient automatiquement abstraite. Le compilateur en tient compte également. (En fait, c'est juste pour respecter les normes, bien que vous puissiez cacher le constructeur dans une portée protégée).
Il nous manque actuellement beaucoup de comportements de "méthodes virtuelles pures". Sans cette fonctionnalité, vous ne pouvez pas préparer correctement une bibliothèque ou un framework pour l'externaliser : vous créez votre classe enfant (qui n'est pas là pour rien, mais qui est intégrée comme un rouage dans d'autres classes) et vous avez la gentillesse d'implémenter toute l'interface. Maintenant, vous héritez, vous ne mettez pas d'implémentation de méthode, le compilateur l'avale, rien ne fonctionne. Fouiller dans le code source de la classe mère ?
Le concept d'interface est l'un des fondements de la POO. Par conséquent, j'aimerais vraiment voir l'implémentation d'une telle chose dans 5, et non dans MQL6.
D'ailleurs, dans la documentation sur les fonctions virtuelles, il y a une erreur
Exemple :
La fonction virtuelleFunc1 n'a pas de corps exécutable (et ne renvoie même pas de valeur), mais se compile sans erreur.
Le sujet des "méthodes purement virtuelles" a déjà été abordé sur le forum il y a quelques années.
C'est-à-dire que dans le concept C++, les méthodes virtuelles sans corps, qui doivent OBLIGATOIREMENT être surchargées dans les descendants :
En outre, une classe contenant de telles méthodes devient automatiquement abstraite. Le compilateur en tient compte également. (En fait, c'est juste pour respecter les normes, bien que vous puissiez cacher le constructeur dans une portée protégée).
Il nous manque actuellement beaucoup de comportements de "méthodes virtuelles pures". Sans une telle fonctionnalité, vous ne pouvez pas préparer correctement une bibliothèque ou un framework pour l'externaliser : vous créez votre propre classe enfant (qui ne sert pas à rien, mais est intégrée comme un rouage dans d'autres classes) et vous avez la gentillesse d'implémenter toute l'interface. Maintenant, vous héritez, vous ne mettez pas d'implémentation de méthode, le compilateur l'avale, rien ne fonctionne. Fouiller dans le code source de la classe mère ?
Le concept d'interface est l'un des fondements de la POO. Par conséquent, j'aimerais vraiment voir l'implémentation d'une telle chose dans 5, et non dans MQL6.
D'ailleurs, dans la documentation sur les fonctions virtuelles, il y a une erreur
Exemple :
La fonction virtuelleFunc1 n'a pas de corps exécutable (et ne renvoie même pas de valeur), mais se compile sans erreur.
1. Des fonctions virtuelles pures seront bientôt ajoutées
2. où se trouve l'appel Func1 dans votre exemple ? Pas d'appel - pas de contrôle du corps.
1. Des fonctions virtuelles pures seront bientôt ajoutées
2. où se trouve l'appel Func1 dans votre exemple ? Pas d'appel - pas de contrôle du corps non plus.
VS 2015 a déclaré ce qui suit
Gravité Code Description Projet Fichier Ligne État de suppression
Erreur LNK2001 Symbole externe non résolu "public : virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode.obj 1
Erreur LNK1120 1 externalités non résolues TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1
VS 2015 a déclaré ce qui suit
Gravité Code Description Projet Fichier Ligne État de suppression
Erreur LNK2001 Symbole externe non résolu "public : virtual int __thiscall Base::Func1(void)" (?Func1@Base@UAEHXZ) TestCPPCode C:\MyP\AvForex\trunk\TestCPPCode.obj 1
Erreur LNK1120 1 externalités non résolues TestCPPCode C:\MyP\AvForex\trunk\MQL4FilesForFormatting2015\Debug\TestCPPCode.exe 1