Questions d'un "mannequin - page 205

 
Renat:

Après avoir changé la langue dans Metaeditor, l'avez-vous redémarré ?

Vérifions.

Tout fonctionne bien, j'ai chargé mql5_russian.chm, défini le russe dans MetaEditor-e, rechargé, l'aide s'affiche en russe.
 

J'ai écrit ce code pour vérifier la position :

CPositionInfo myposition;

if (myposition.Select(_Symbol))
{
   double Open_position=NormalizeDouble(myposition.PriceOpen(),_Digits);
   double SL_position  =NormalizeDouble(myposition.StopLoss(),_Digits);
   double TP_position  =NormalizeDouble(myposition.TakeProfit(),_Digits);
   Comment(" Open_position=",Open_position,"\n",
           " SL_position=",SL_position,"\n",
           " TP_position=",TP_position);
}

Mais pour une raison quelconque, dans le commentaire, les valeurs apparaissent avec 4 décimales. Au lieu de _Digits mettre 5 encore 4 caractères, mettre 3 - 3 caractères.

 
paladin800: Pour une raison quelconque, les valeurs apparaissent avec 4 décimales dans les commentaires. Au lieu de _Digits, mettez 5 toujours 4 chiffres, mettez 3 - 3 chiffres.
Et si je ne fais que sortir myposition.PriceOpen(), qu'est-ce que cela va montrer ?
 
paladin800:

J'ai écrit ce code pour vérifier la position :

Mais pour une raison quelconque, dans le commentaire, les valeurs apparaissent avec 4 décimales. Au lieu de _Digits mettre 5 toujours 4 caractères, mettre 3 - 3 caractères.

Vous avez probablement besoin de la fonction DoubleToString().

 
paladin800:

J'ai écrit ce code pour vérifier la position :

Mais pour une raison quelconque, dans le commentaire, les valeurs apparaissent avec 4 décimales. Au lieu de _Digits mettre 5 toujours 4 caractères, mettre 3 - 3 caractères


Le format d'édition des nombres fractionnaires dans les commentaires est le suivant. Convertir les dubs en types de chaînes et les sortir dans les commentaires.
 
Comment définir le solde initial du compte? Je veux définir la taille du lot en fonction du bénéfice total du compte. Alors comment déterminer correctement le solde initial ?
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5
 
tor4en: Comment puis-je déterminer le solde initial du compte? Je veux spécifier la taille du lot en fonction du profit total de mon compte. Alors, comment déterminer correctement ce solde initial ?

Un dépôt est accompagné d'une fiche

ÉTAT DE L'ENTRÉE DE LA TRANSACTION

Signe de l'entrée dans le statut

C'est dans cette direction qu'il faut regarder.

 

Je suis confus au sujet de myposition.Type(). J'ai fait la chose suivante pour vérifier :

CPositionInfo myposition;
// ---
string classtype="no position";
string functype="no position";

if (PositionSelect(_Symbol))
{  // --- section SELL
   if (myposition.Type()==POSITION_TYPE_SELL)
       classtype="SELL";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
       functype="SELL";
   // --- section BUY
   if (myposition.Type()==POSITION_TYPE_BUY)
       classtype="BUY";
   if (PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
       functype="BUY";
}
Comment ("classtype=",classtype,", functype=",functype);

Le résultat des tests avec la visualisation est le suivant :
1) il n'y a pas de position : classtype=no position, functype=no position // comme prévu
2) il existe une position de vente : classtype=BUY, functype=SELL // le classtype a déterminé de manière incorrecte le sens de la position.
3) il y a une position d'achat : classtype=BUY, functype=BUY // comme il se doit

J'ai essayé de mettre if (myposition.Select(_Symbol)) au lieu de if (PositionSelect(_Symbol)), le résultat est le même. Peut-être que myposition.Type() devrait être écrit différemment pour qu'il détermine correctement la direction de la vente ?

 
paladin800:

Je suis confus au sujet de myposition.Type(). J'ai fait la chose suivante pour vérifier :

En testant avec la visualisation, le résultat est le suivant :
1) il n'y a pas de position : classtype=no position, functype=no position // comme requis
2) il existe une position de vente : classtype=BUY, functype=SELL // le classtype a déterminé par erreur le sens de la position
3) il y a une position d'achat : classtype=BUY, functype=BUY // comme il se doit

J'ai essayé de mettre if (myposition.Select(_Symbol)) au lieu de if (PositionSelect(_Symbol)), le résultat est le même. Peut-être que myposition.Type() devrait être écrit différemment pour déterminer correctement la direction de la vente ?

Si vous regardez de près la classe CPositionInfo "avec rayons X", vous pouvez remarquer que la méthode Type() ne renvoie pas le type de position (contrairement à la méthode PositionType()).

   CPositionInfo myposition;
// ---
   string classtype="no position";
   string functype="no position";

   if(PositionSelect(_Symbol))
     {  // --- section SELL
      if(myposition.PositionType()==POSITION_TYPE_SELL)
         classtype="SELL";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
         functype="SELL";
      // --- section BUY
      if(myposition.PositionType()==POSITION_TYPE_BUY)
         classtype="BUY";
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
         functype="BUY";
     }
   Print("classtype=",classtype,", functype=",functype);
  }
 
uncleVic:

Si vous regardez de près la classe CPositionInfo "X-rayed", vous remarquerez que la méthode Type() ne renvoie pas de type de position (contrairement à la méthode PositionType()).

Merci beaucoup. Ça a marché avec votre astuce ! Je me suis inspiré de l'article Comment utiliser les classes commerciales de la bibliothèque standard lors de l'écriture d'un EA, et là, dans la section "1.6 CPositionInfo Class", il y a myposition.Type(), qui doit probablement être corrigé.