Questions des débutants MQL5 MT5 MetaTrader 5 - page 1335

 
comment puis-je ouvrir un compte ?
 
Artyom Trishkin:

Il ne devrait pas y avoir de différence. C'est tout simplement plus joli, le code est moins chargé en parenthèses et en indentations.

Pour un contrôle (if) oui, mais dans le code il y en a deux, et s'il y en a plusieurs, alors la logique Si oui, contingent et nouvelle itération de la boucle, Sinon action A logique Si non alors action sinon passer à la condition suivante Si non. Dans ce cas, le corps de la boucle ira jusqu'au bout.

 
Valeriy Yastremskiy:

Pour une vérification (si) oui, mais il y en a deux dans le code, et s'il y en a plusieurs, alors la logique Si Oui, continuer et une nouvelle itération de la boucle, Sinon action Une logique Si Non alors action sinon passer à la condition suivante Si Non. Dans ce cas, le corps de la boucle ira jusqu'au bout.

Je ne comprends rien, mais qu'il en soit ainsi.

 
Artyom Trishkin:

Ils le feront. Je l'utilise parce que je le veux :) Ceci spécifie explicitement quelles méthodes de classe sont utilisées.

Si vous avez deux classes, l'une en tant que parent et l'autre en tant que classe héritée, et qu'elles ont deux méthodes avec le même nom, mais qu'elles ne sont pas virtuelles pour une raison quelconque, vous devez spécifier explicitement quelle méthode utiliser.

Supposons que la classe parent est CParent et que la classe héritée est CInheritedet qu'elles ont toutes deux la méthode Method().

Dans ce cas, si nous appelons une méthode Method() d'une classe CParent, elle appellera explicitement une méthode de la classe CParent - ce qui n'est pas nécessaire ici. On peut appeler la méthode avec ou sans elle.

Si nousappelons une méthodeMethod() dans une classe héritée CInherited, la méthodede cette classe sera également appelée, puisque nous cherchons d'abord une méthode appartenant à la classe à partir de laquelle nous l'avons appelée.

Si nousappelons CParent::Method() dans une classe CInherited, c'est la méthode de la classe parente qui sera appelée de cette façon, car nous avons explicitement spécifié une méthode qui appartient à la classe parente par l'opérateur de résolution de contexte.

Mais j'appellerais quand même la méthode Method() dans une classe CInherited avec l'indication this - pour être sûr que la méthode de cette classe héritée (this == "this") sera appelée.

Il y a d'autres explications à cette utilisation. Peut-être que quelqu'un de plus expérimenté en matière de POO pourra nous renseigner.

Artem, merci beaucoup pour une réponse aussi complète, qui change l'attitude envers la POO pour le mieux).

 
Ахад Ахмедрв:
Comment ouvrir un compte en direct ?

1. Choisissez un courtier.
2. Choisissez une plateforme, MT4 ou MT5.
3. Ouvrez un compte réel avec le courtier.

 
Artyom Trishkin:

Eh bien, oui. Je fais partie de ces "certaines personnes", notamment lorsque j'appelle une fonction standard depuis une classe, je m'assure de spécifier le contexte global. Tout simplement parce que je peux penser à ajouter une méthode dans cette classe avec le même nom que la fonction standard - ainsi je n'oublierai jamais ce qu'elle fait. Et c'est là que vous avez besoin de : : pour appeler une fonction standard, et de ceci - pour appeler ma méthode portant le même nom.

Artem, cela réfute déjà la deuxième partie de l'expression "nécessaire - non nécessaire". C'est nécessaire, signifie que c'est nécessaire. Il n'y a pas d'objection...

 

Bonjour

Comment calculer la distance en pips entre le prix actuel et l'ordre limiteen attente le plus proche. Je suis intéressé par un code prêt à l'emploi.


 
Valeriy Yastremskiy:

Pour une vérification (si) oui, mais il y en a deux dans le code, et s'il y en a plusieurs, alors la logique Si Oui, continuer et une nouvelle itération de la boucle, Sinon action Une logique Si Non alors action sinon passer à la condition suivante Si Non. Dans ce cas, le corps de la boucle sera entièrement traversé.

Pour moi, l'option préférée est

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a && b == 7)
   {
    Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

ou ceci

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i == a)
   {
    if(b == 7)
     Print(b);
   }
  // если условие if(i == a) НЕ выполнено, следующая итерация………
 }

Une autre variante

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b == 7)
     Print(b);
 }

L'autre variante est à la limite de l'idiotie.

int a = 3, b = 7;
for(int i = 0; i < 10; i++)
 {
  if(i != a)
   continue; // если условие if(i != a) выполнено, следующая итерация………
    if(b != 7)
     continue;
     
  Print(b);
 }

Mais c'est une question de goût. Celui qu'on aime.

D'après ce que j'ai compris, cette méthode était utilisée lorsque l'opérateur if vérifiait TOUTES les conditions du début à la fin. Elle se justifie par le fait que si la première condition n'est pas remplie, vous ne devrez pas vérifier les conditions suivantes. Maintenant, toutes les conditions après celle qui n'a pas été remplie ne sont pas vérifiées. Et ces escaliers de condition ne sont plus nécessaires, il ne reste qu'une habitude.

 
Alexey Viktorov:

Artyom, cela réfute déjà la deuxième partie de l'expression "ne devrait pas". Si je dois le faire, je dois le faire. Pas d'objection...

Avec la mise en garde suivante : si je le fais.
 
Bonjour, le testeur de stratégie montre une qualité d'historique de 44%, comment puis-je y remédier ? La recherche sur le forum n'a rien donné, j'ai aussi cherché des informations dans l'aide, il n'y a rien non plus.