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

 
lil_lil:

Indicateur MTF, j'ai mis H1 dans les paramètres externes, je l'attache au graphique M15. Le signal clignote sur la barre 4. Lorsque la barre H1 est fermée, le signal ne clignote pas, sur M15 le signal cesse de clignoter sur la barre 4. Si je le mets sur М1, respectivement, il arrête de clignoter sur la mesure 60. Donc i+N devrait être calculé de manière à ce que N varie en fonction de la période sélectionnée dans les paramètres et sur le graphique de la période, dans lequel l'indicateur est attaché.

Vous avez le code entier ?

 

Bon après-midi. Je n'arrive pas à comprendre, les apologistes d'OOP, s'il vous plaît, aidez-moi.

Il existe donc une classe, par exemple CCandle. Dans cette classe, il y aura les mêmes paramètres pour tous les objets de cette classe. Ces paramètres peuvent également être initialisés dans OnInit() et ils seront les mêmes pour tous les objets de cette classe. Alors, comment puis-je le faire correctement, afin qu'ils ne soient pas initialisés à chaque fois que l'on crée un nouvel objet. Supposons qu'ils soient tous dans la fonction CCandle::Init(). Je n'arrive pas à comprendre.

 
Juer:

Bon après-midi. Je n'arrive pas à comprendre, les apologistes d'OOP, s'il vous plaît, aidez-moi.

Il existe une classe, par exemple CCandle. Dans cette classe, il y aura les mêmes paramètres pour tous les objets de cette classe. Ces paramètres peuvent également être initialisés dans OnInit(), et ils seront les mêmes pour tous les objets de cette classe. Alors, comment puis-je le faire correctement, afin qu'ils ne soient pas initialisés à chaque fois que l'on crée un nouvel objet. Supposons qu'ils soient tous dans la fonction CCandle::Init(). Je n'arrive pas à comprendre.

Cela se fait dans la liste d'initialisation, qui se trouve dans le constructeur de la classe:

class CCandle
{
   int      m_nA;
   double   m_fB;
   datetime m_dtC;


   void CCandle::CCandle(void);
};

CCandle::CCandle(void)
            : m_nA(0)
            , m_fB(0.0)
            , m_dtC(0)
{
}
 
Juer:

Bon après-midi. Je n'arrive pas à comprendre, les apologistes d'OOP, s'il vous plaît, aidez-moi.

Il existe donc une classe, par exemple CCandle. Dans cette classe, il y aura les mêmes paramètres pour tous les objets de cette classe. Ces paramètres peuvent également être initialisés dans OnInit() et ils seront les mêmes pour tous les objets de cette classe. Alors, comment puis-je le faire correctement, afin qu'ils ne soient pas initialisés à chaque fois que l'on crée un nouvel objet. Supposons qu'ils soient tous dans la fonction CCandle::Init(). Je n'arrive pas à comprendre.

Créer un constructeur paramétrique dans une classe, et lui passer les paramètres nécessaires pour initialiser l'objet.
 
Je n'ai rien compris. L'initialisation pour un objet ne pose pas de problème. Comment initialiser une fois tous les objets d'une classe donnée ? C'est-à-dire qu'un nouvel objet est créé et que les paramètres sont déjà initialisés avec des valeurs, sans devoir les initialiser à chaque fois pour chaque nouvel objet.
 
Chers collègues, veuillez nous indiquer s'il est correct d'utiliser l'opérateur de retour à partir du corps de la boucle ? Par exemple, nous avons une fonction avec une boucle. À un moment donné, nous devons renvoyer une valeur et donc quitter la fonction. La bonne méthode consiste à utiliser break et ensuite return(value). Mais pouvons-nous utiliser return(value) tout de suite ?
 
Juer:
Je n'ai rien compris. L'initialisation pour un objet ne pose pas de problème. Comment initialiser une fois tous les objets d'une classe donnée ? C'est-à-dire qu'un nouvel objet est créé et que les paramètres sont déjà initialisés avec des valeurs, sans devoir les initialiser à chaque fois pour chaque nouvel objet.
Les paramètres peuvent être initialisés à partir de celui qui existe.
 
lsv107:
Chers collègues, veuillez me dire s'il est correct d'utiliser l'opérateur return à partir du corps de la boucle ? Par exemple, nous avons une fonction avec une boucle. À un moment donné, nous devons renvoyer une valeur et donc quitter la fonction. La bonne méthode consiste à utiliser break et ensuite return(value). Mais peut-on renvoyer (valeur) en une seule fois ?
Rien ne vous empêche de sortir de la boucle.
 
Artyom Trishkin:
Les paramètres peuvent être initialisés à partir de quelque chose qui existe.

C'est une question assez simple, n'est-ce pas ? Le but est d'initialiser la même chose.

 
Artyom Trishkin:
Rien ne vous empêche de sortir de la boucle.

J'avais juste peur que la boucle reste active à l'intérieur de la fonction et que l'opérateur de retour ne fasse que transférer le contrôle de la boucle active au point d'appel, il y aurait un risque de débordement de pile si la fonction était appelée à nouveau (récursion). C'était exactement le cas en Pascal et, selon les règles de la programmation structurelle en général, les boucles doivent être terminées l'une après l'autre, puis la fonction est quittée. Si le retour, accompagné d'une fonction, met fin à la boucle, tant mieux, mais j'aurais dû le préciser, car je suis de retour à la programmation après une longue pause.

Raison: