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
Bon point. Ce serait bien si les arguments étaient étayés par du code plutôt que de se contenter de bla, bla, bla.
C'est ce que je fais.
Voici ma classe CMyObject :
La macro CONVERT_OBJECT_WITH_CHECK est également définie à la fin, qui, pour la version DEBUG, effectue un contrôle supplémentaire de la conversion des pointeurs en fonction du type d'objet.
C'est ce que je fais.
Voici ma classe CMyObject :
La macro CONVERT_OBJECT_WITH_CHECK est également définie à la fin, qui, pour la version DEBUG, effectue un contrôle supplémentaire de la conversion des pointeurs en fonction du type d'objet
C'est magnifique. Bien sûr, c'est une question de goût. Mais, en me basant sur la syntaxe MQL, je l'écrirais comme ceci :
C'est magnifique. Bien sûr, c'est une question de goût. Mais, en me basant sur la syntaxe MQL, je l'écrirais de cette façon :
Oui, c'est vrai.
Mais, c'est mon "style de programmation" sénile (bonjour, Volchansky avec son récent fil de discussion).
J'ai toutes les énumérations - commencent par E, puis avec la notation "bosse" - nom. Et les types eux-mêmes dans l'énumération commencent par une abréviation (jusqu'à quatre lettres) de type énumération.
Par conséquent, puisque l'énumération est EMyObjectType, toutes les valeurs commencent par MOT_.
Vous êtes un idiot ? )) Je n'ai pas dit un seul mot négatif sur F#. Apprenez à lire et à comprendre ce qu'on vous dit avant de poster vos commentaires stupides.
Si vous comparez la POO à la FP, il est plus judicieux de la comparer à un langage FP pur, c'est-à-dire Haskel. F# n'est déjà pas terrible, alors que python et R ne le sont pas du tout. C'est ce que je veux dire. Sinon, nous risquons d'en arriver à ce que le C++ soit également un langage FP.Vous êtes un troll analphabète. Pour mémoire, toutes les langues citées sont fonctionnelles d'une manière ou d'une autre. Allez-y et apprenez le sujet. La question était posée pour comprendre dans quel cadre de référenceAndrei pratique probablement l'une des langues de la FP, la liste était donc très générale.
Qu'est-ce que ça veut dire ?
Que devrait contenir l'"objet de base" selon vous ?
Personnellement, j'ai presque TOUS les objets dans tous mes projets - hérités de CMyObject : public CObject, (dans mon objet, deux champs supplémentaires sont ajoutés - le nom de la classe et l'ID de l'instance), et j'ai constaté à plusieurs reprises que j'ai beaucoup besoin de la fonctionnalité CObject::Compare(). Quelques fois, les pointeurs de liste ont également été utiles.
CObject n'a qu'un seul objectif : fournir un contrôle des types. Et il y parvient de manière chancelante. Les méthodes comme Next(), Prev(), etc. sont destinées à des collections très spécialisées. Ils n'ont pas leur place dans CObject. Il en va de même pour les méthodes de sauvegarde et de chargement. Ce serait bien de ne pas y inclure Comparer non plus, mais c'est la seule solution sans interfaces.
Quant à la méthode Type(), elle ne permet pas un typage strict, car elle renvoie le nombre habituel. Vous pouvez voir sur l'exemple de votre propre code. Vous définissez une nouvelle méthode GetType() qui renvoie le type sous forme d'énumération. Il n'y a vraiment pas d'autre moyen, je le fais moi-même. C'est pourquoi la norme CObject doit y être annexée, ce qui est incorrect.
Poursuivons avec CObject::Compare().
J'ai un tel objet CFactoryBalanceResultSeries - c'est une série avec les résultats de la balance en référence à l'objet factory de l'Expert Advisor. En fait, il s'agit d'une courbe d'équilibre sur l'historique par rapport au conseiller expert qui l'a négocié.
Donc, j'ai un script où je compare ces séries très équilibrées.
Tant qu'il n'y a que deux séries, il est facile de les comparer. Mais lorsqu'il y en a des dizaines, vous ne pouvez pas comparer à l'œil, vous avez besoin d'une comparaison plus formelle.
Et juste pour l'automatisation de ce processus - j'ai dû écrire une fonction qui trie ces mêmes séries. Et là, c'était utile, car la classe CFactoryBalanceResultSeries est une héritière de CObject avec sa fonction de comparaison. Si nous remplaçons cette fonction, nous avons la possibilité de trier les séries.
Voici à quoi ressemble cette fonction dans mon cas :
C'est-à-dire que, selon le type de tri, nous sélectionnons la fonction de comparaison requise, qui est utilisée dans la fonction de tri générale.
Par exemple, si nous voulons trier la série de soldes par la partie du dernier drawdown par rapport au maximum, les fonctions suivantes seront utilisées :
Je vais continuer avec CObject::Compare().
D'après le récent
Ce n'est pas très joli, imho.
Vous pouvez utiliser un pointeur vers une fonction.
Oui, c'est vrai.
Mais, c'est mon "style de programmation" sénile (bonjour, Wolchansky avec son récent fil de discussion).
Avec moi, toutes les énumérations - commencent par E, et ensuite avec la notation "bosse" - nom. Et les types eux-mêmes dans l'énumération commencent par une abréviation (jusqu'à quatre lettres) de type énumération.
De même, puisque l'énumération EMyObjectType - toutes les valeurs commencent par MOT_.
Oui, j'ai la même énumération.
ZS : Je viens juste d'arriver à l'ordinateur. Comme prévu, ce fil de discussion a rapidement sombré dans le n'importe quoi). J'essaierai de terminer l'histoire des fonctions virtuelles plus tard. Nous devrions appeler ce forum Blah Blah Blah Blah).
J'ai lu les différents intérêts de chacun... Je suis en train de refaire une classe pour mettre en place et gérer une grille virtuelle, j'en ai besoin.