Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 667

 
Roman Sharanov:

ci-dessous dans le fichier de classe

Cette méthode renvoie-t-elle une erreur ? Si oui, définissez-le dans la section privée. Vous pouvez le faire dans son intégralité :

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void)           const { return ::MathSqrt(this.m_var); }
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+

Ou vous pouvez l'enlever :

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int      m_var;
   double   varSqrt(void) const;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.m_var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double newC::varSqrt(void) const
  {
   return ::MathSqrt(this.m_var);
  }
//+------------------------------------------------------------------+
 
neverness:

Eh bien, si c'est un non-sens, c'est un test d'expérience.

Pas seulement une "absurdité théorique" ! !!

Exactement.

J'utilise tous les types de tableaux dans les indicateurs en toute sécurité. Et comme un tampon, et dynamique, et statique.

Mais tout ne fonctionne pas pour vous et l'expérience vous dit, désolé, des bêtises.

 
Artyom Trishkin:

Cette méthode renvoie-t-elle une erreur ? Si oui, définissez-le dans la section privée. Vous pouvez le définir comme un tout :

Et vous pouvez l'enlever :

Ou vous pouvez simplement faire référence au membre privé de la classe comme this.m_var dans la classe.
 
neverness:

Eh bien, si c'est un non-sens, c'est un test d'expérience.

Pas seulement une "absurdité théorique" ! !!

Personne ne vous empêche d'utiliser un tableau dynamique dans vos calculs.

Mais ! !! Le processeur est occupé pendant les calculs et il n'y aura pas d'écriture dans le tableau dynamique.

Ainsi, toute donnée qui entre dans un tableau dynamique pendant les calculs est automatiquement ignorée. (Parfois, ils mettent des protections, et les écrivent dans un tampon).

J'espère que c'est clair ?

C'est pourquoi toutes les données des tableaux dynamiques sont réparties sur des tableaux statiques, afin qu'aucune donnée ne soit perdue pendant que le processeur travaille.

Et c'est pourquoi tous les calculs doivent être effectués dans des tableaux statiques ! !!

C'est une absurdité féroce, digne d'entrer dans les annales du forum.

 
Artyom Trishkin:

C'est celle-là.

J'utilise facilement tous les types de tableaux dans les indicateurs. Et comme un tampon, et dynamique, et statique.

Mais ça ne marche pas pour vous et l'expérience vous dit, désolé, des bêtises.

Ok.

Faisons une expérience.

Prenons un tableau dynamique lié à des données de tick et utilisons le processeur sur ce tableau pendant quelques heures.

Et voyez ce que nous écrivons à ce tableau pendant ce temps !

Cette formulation de la question vous plaît-elle ? (Sans tampon, bien sûr).

 
neverness:

Très bien.

Faisons une expérience.

Prenons un tableau dynamique associé à des données de tick, et engageons le processeur sur ce tableau pendant quelques heures.

Et voyez ce que nous écrivons à ce tableau pendant ce temps !

Cette formulation de la question vous plaît-elle ? (Sans le tampon, bien sûr).

Faites-le. Ensuite, mettez le code ici.

 
Artyom Trishkin:

Cette méthode renvoie-t-elle une erreur ? Si oui, définissez-le dans la section privée. Vous pouvez le définir comme un tout :

Et vous pouvez l'enlever :

Oui, c'est comme ça que ça doit être, merci.

 
Artyom Trishkin:

Faites-le. Ensuite, mettez le code ici.

Bien sûr.

Nous verrons cela plus tard.

 

Une autre question.

J'ai une structure dans une classe.

Comment puis-je le renvoyer par requête à un code externe qui travaille avec cette classe ?

 
Roman Sharanov:

Une autre question.

J'ai une structure dans une classe.

Comment puis-je le renvoyer par requête à un code externe qui travaille avec cette classe ?

uniquement en décrivant la structure elle-même au niveau de la visibilité des variables globales

puis déclarer la variable de structure dans la classe

et dans votre code externe, vous pouvez déclarer la même variable, mais gardez à l'esprit que si vous déclarez une telle variable à l'intérieur de OnTick(), chaque appel à OnTick() lancera un constructeur de structure, même si vous ne l'avez pas créé - en MQL, il n'y a pas de différence entre les classes et les structures, la seule chose que je me rappelle, le constructeur avec le paramètre des structures créées par new ne sera pas passé par le compilateur

donc... Dans la POO classique, on ne va généralement pas au-delà de la classe en passant les éléments internes (champs de classe), tout est généralement réalisé au moyen de requêtes à la classe Get() ... Set()... Eh bien, c'est une question de goût

SZ : .... utiliser l'héritage, les héritiers ont des classes communes, regarder le code source des classes de la livraison MT (dossier include)

Raison: