Erreurs, bugs, questions - page 1695

 
Karputov Vladimir:

Pour les différents types de transactions, différents champs de la structure MqlTradeTransaction sont remplis :

comme vous pouvez le constater, pour TRADE_TRANSACTION_DEAL_ADD, le .order_type n'est pas rempli.

D'ailleurs, elle est parfois trompeuse. pourquoi, si la valeur n'est pas renseignée, elle ne peut pas être spécifiée comme WRONG_VALUE, par exemple ?
 
Alexey Viktorov:


Rashid, si ça ne vous ennuie pas trop, pouvez-vous me donner une réponse plus simple ? Je vais donc l'imprimer, il sera égal à 0, mais comment le comprendre ?

Dans ce cas, vous n'avez pas besoin de regarder le type d'ordre - il n'est tout simplement pas là.
 
Alexey Kozitsyn:
D'ailleurs, c'est parfois trompeur... Pourquoi ne peut-il pas être spécifié comme WRONG_VALUE, par exemple, si la valeur n'est pas renseignée ?
J'ai moi-même marché sur ce râteau. Je ne peux pas le dire.)
 
Rashid Umarov:
J'ai moi-même marché sur ce râteau. Je ne peux pas dire )
C'est juste que WRONG_VALUE est implicitement converti en type de toute énumération, n'est-ce pas ? En effet, vous le feriez))
 
Rashid Umarov:
Il n'est pas nécessaire de regarder le type d'ordre dans ce cas - il n'y en a pas.

Comme je suis lent à taper... En éditant mon post...

Alexey Viktorov:

Ajouté.

Eh bien... Tout en tapant, Vladimir m'a donné une réponse complète. Merci beaucoup. Comme toujours, je n'ai pas lu la documentation...

Merci.

 

Comment connaître ma poignée sur un graphique dans un indicateur ?ChartIndicatorName ne convient pas, car il renvoie un nom court. Et avec le même nom, il se peut que le même indicateur fonctionne déjà avec des paramètres d'entrée différents.

J'ai besoin qu'il soit capable de supprimer l'indicateur du graphique et de ses calculs.

 
fxsaber:

Comment connaître ma poignée sur un graphique dans un indicateur ?ChartIndicatorName ne convient pas, car il renvoie un nom court. Et avec le même nom, il se peut que le même indicateur fonctionne déjà avec des paramètres d'entrée différents.

J'ai besoin qu'il soit capable de supprimer l'indicateur du graphique et de ses calculs.

Que se passe-t-il si je change le nom court lors de la création ?
 

Mon exemple ne devrait-il pas hériter / prendre une méthode d'une classe parente ? ?? Comment récupérer une méthode du parent dans les classes dérivées pour l'utiliser plus tard.

Ainsi, la classe parent a des méthodes "un, deux, trois". Je veux utiliser uniquement la méthode "deux et trois" dans le descendant et ne pas voir la méthode "un" et aussi que "deux et trois" seront disponibles plus tard.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test
  {
public:

   int rezult(void)
     {
      static int t=0;
      t++;
      return t;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class test_end : public test
  {
public:
   virtual int       rezult(void);
  };

test_end go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   go.rezult();
// 'rezult' - function must have a body TEst.mq4        42      7
  }
//+------------------------------------------------------------------+
 
Vladimir Pastushak:

Mon exemple ne devrait-il pas hériter / prendre une méthode d'une classe parente ? ?? Comment récupérer une méthode du parent dans les classes dérivées pour l'utiliser plus tard.

Ainsi la classe parent a des méthodes "un, deux, trois" Je veux utiliser seulement la méthode "deux et trois" dans le descendant et ne pas voir la méthode "un" et aussi que "deux et trois" seront disponibles plus loin.

Tout d'abord, il n'est pas clair si l'on a tenté de déclarer une méthode comme virtuelle ou non. Si elle doit être virtuelle, alors écrivez virtual dans une classe de base, pas dans une classe dérivée (car sinon les pointeurs de base seront revendus à la méthode de base même si vous y mettez une instance de classe dérivée).

Si vous ne voulez pas surcharger une méthode dans une classe dérivée, ne la mentionnez pas du tout, et si vous le faites, elle doit être surchargée avec un corps.

Enfin, pour cacher la méthode de la classe dérivée, il faut introduire une classe intermédiaire, où cette méthode doit être déplacée dans la zone privée ou rendue privée dans la classe de base (mais pourquoi est-elle virtuelle alors ?).

 
Stanislav Korotky:

Tout d'abord, il n'est pas clair si l'on a essayé de déclarer la méthode comme virtuelle ou non. Si elle doit être virtuelle, alors écrivez virtual dans la classe de base, pas dans la classe dérivée (parce que sinon les pointeurs de base seront déchirés vers la méthode de base même si vous y mettez une instance de la classe dérivée).

Si vous ne voulez pas surcharger une méthode dans une classe dérivée, ne la mentionnez pas du tout, et si vous le faites, elle doit être surchargée avec un corps.

Enfin, pour cacher la méthode de la classe dérivée, vous devez introduire une classe intermédiaire où vous déplacez la méthode dans la zone privée ou la rendez privée dans la classe de base (mais alors pourquoi est-elle virtuelle ?).

Voici un exemple

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class roditel
  {
public:

   virtual int one(void)
     {
      return 1;
     }
   virtual int two(void)
     {
      return 2;
     }
   virtual int three(void)
     {
      return 3;
     }
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class naslednic_1 : public roditel
  {
public:
   virtual int       two(void);
   virtual int       three(void);
  };

naslednic_1 go;
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   go.two();
// 'two' - function must have a body    TEst.mq4        42      7
  }
//+------------------------------------------------------------------+