Erreurs, bugs, questions - page 2416

 

En général, pour résoudre ce problème (et beaucoup d'autres dans MQL), vous devez déplacer l'une des méthodes vers une classe auxiliaire :

class A { };

class _B
{
 protected: 
  A _a[];
 public:        
  const A * operator[](uint i) const { return &_a[i]; }  
};

class B : public _B
{
 public: 
  A * operator[](uint i)       { return &_a[i]; }
};
 
fxsaber:

Vous avez donné l'exemple très simple d'une école primaire. Cela ne semble pas avoir de rapport avec l'exemple original.

Vous devriez lire la norme C++ pour voir que tout est résolu par la même règle que celle que j'ai citée plus haut.
 
Slava:

Pour commencer, dans le cache d'optimisation, dans MT5 et MT4, les paramètres de la chaîne ont toujours été tronqués à 63 caractères.

Lors de la transmission d'événements, la chaîne ne peut pas dépasser 63 caractères, soit

Donc ce qui vient de l'extérieur est limité

En ce qui concerne les produits destinés aux utilisateurs finaux. Le vendeur doit tenir compte des limites. Et s'il ne les connaît pas, il n'a pas suffisamment testé son produit avant de le vendre.

Il ne s'agit pas de savoir comment c'était et comment c'est, mais comment cela devrait être, si l'on veut rester dans l'air du temps et changer pour le mieux.

 

J'ai rencontré ce problème, lors du test d'une EA, après avoir défini les paramètres et appuyé sur le bouton de démarrage, les paramètres de l'EA sont réinitialisés par défaut, quel pourrait être le problème ?

Dans la vidéo, un exemple

 
Dmitry Melnichenko:

J'ai rencontré ce problème, lors du test d'une EA, après avoir défini les paramètres et appuyé sur le bouton de démarrage, les paramètres de l'EA sont réinitialisés par défaut, quel pourrait être le problème ?

exemple vidéo

MT5 se réinitialise aux valeurs par défaut dans le testeur après avoir accédé à l'onglet "Paramètres".

Voir le poste 1.

 

J'ai posé une question dans un fil voisin, mais peu de gens semblent y jeter un œil. Je vais le reproduire ici :

https://www.mql5.com/ru/forum/6343/page1020#comment_11112212

En bref : sur les contrats à terme (dans le testeur), les transactions sont ouvertes et fermées (par SL/TP), mais toujours avec un profit nul. Peut-il s'agir d'un bug du testeur ? Ou faut-il une sorte d'astuce ?

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2019.03.26
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...
 

Bug du compilateur. Lors de la compilation (contrôle syntaxique) d'un fichier .mqh avec ce code, aucune erreur n'est affichée. Elle n'est affichée que lors de la compilation de l'exécutable, ce qui est gênant.

class A
{
 public: 
  A(int) {  }
};

class B : public A { };  // Здесь должна быть ошибка  'A' - wrong parameters count

B b;
 
Alexey Navoykov:

Bug du compilateur. Lors de la compilation (contrôle syntaxique) d'un fichier .mqh contenant un tel code, l'erreur n'est pas générée. Elle est générée uniquement lors de la compilation du fichier exécutable, ce qui est gênant.

Parce qu'un heder ne compile pas en principe :))))

Si vous forcez l'ensemble du compilateur à compiler un heder, vous obtiendrez beaucoup de faux positifs.

PS. Le compilateur C++ ne se plaint pas non plus sans utiliser de telles classes.
 
Andrey Pogoreltsev:

Parce qu'un heder ne compile pas en principe :))))

Si vous forcez un compilateur entier à compiler un heder, vous obtiendrez beaucoup de faux positifs.

PS. Le compilateur C++ ne se plaindra pas non plus sans utiliser de telles classes.

Je suis conscient qu'il ne compile pas. Je parle du contrôle syntaxique (qui dans ME est aussi appelé "Compile"), car je l'ai même spécifié entre parenthèses dans un post précédent. Si vous lancez le contrôle syntaxique dans le compilateur C++ aussi (via la ligne de commande habituellement), il grondera comme un chouchou.

 
Alexey Navoykov:

Je suis conscient qu'il ne compile pas. Je parle du contrôle syntaxique (qui dans ME est aussi appelé "Compile"), car je l'ai même spécifié entre parenthèses dans un post précédent. Si vous lancez le contrôle syntaxique dans le compilateur C++ aussi (via la ligne de commande habituellement), il grondera comme un chouchou.

Vous voyez, si vous ne précisez pas :

B b;

Le C++ compile parfaitement ce code. La syntaxe est donc correcte. Le problème commence au niveau de la création des objets, car c'est là que les objets de classe seront alloués.

Imaginez un modèle que vous ne vérifieriez jamais pour savoir s'il peut être utilisé dans un en-tête. Que doit faire le compilateur dans ce cas ? Supposons que vous deviez implémenter std:lower pour une structure et qu'il n'existe aucune implémentation dans *.h.. Le compilateur peut ne pas jurer non plus au stade de la vérification.

Pourriez-vous préciser comment vous vérifiez la syntaxe de *.h à partir de la ligne de commande pour vérifier ce code ? C'est devenu intéressant)