PositionGetString

La fonction retourne la propriété demandée d'une position ouverte, pré-sélectionnée avec PositionGetSymbol ou PositionSelect. La propriété de la position doit être de type string. Il existe 2 variantes de cette fonction.

1. Retourne immédiatement la valeur de la propriété.

string  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id      // Identifiant de la propriété
   );

2. Retourne true ou false, suivant le succès de la fonction. En cas de succès, la valeur de la propriété est placée dans la variable correspondante passée par référénce (le dernier paramètre).

bool  PositionGetString(
   ENUM_POSITION_PROPERTY_STRING  property_id,     // Identifiant de la propriété
   string&                        string_var       // Valeur de la propriété
   );

Paramètres

property_id

[in]  Identifiant de la propriété de la position. La valeur peut être l'une des valeurs de l'énumération ENUM_POSITION_PROPERTY_STRING

string_var

[out]  Variable de type string qui prendra la valeur de la propriété demandée.

Valeur de Retour

Valeur de type string. Si la fonction échoue, retourne une chaîne vide.

Note

Pour le "netting" des positions (ACCOUNT_MARGIN_MODE_RETAIL_NETTING et ACCOUNT_MARGIN_MODE_EXCHANGE), seule une position peut exister pour un même symbole à tout moment. Cette position est le résultat d'une ou plusieurs transactions. Ne confondez pas les positions avec les ordres en attente valides, qui sont également affichés dans l'onglet Trading de la fenêtre Boîte à Outils.

Si les positions individuelles sont autorisées (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING), plusieurs positions peuvent être ouvertes pour un même symbole.

Pour être sûr d'utiliser les données à jour d'une position, il est recommandé d'appeler PositionSelect() juste avant son utilisation.

Exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- boucle sur toutes les positions du compte
   int total=PositionsTotal();
   for(int i=0i<totali++)
     {
      //--- obtient le ticket de la position suivante en sélectionnant automatiquement une position pour accéder à ses propriétés
      ulong ticket=PositionGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- récupère le type de position et affiche l'en-tête de la liste des propriétés de la chaîne de position
      string type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE ? "Buy" : "Sell");
      PrintFormat("String properties of an open position %s #%I64u:"typeticket);
      
      //--- imprime toutes les propriétés de chaîne de la position sélectionnée sous l'en-tête
      PositionPropertiesStringPrint(15);
     }
   /*
   résultat :
   String properties of an open position Buy #2810798881:
   Symbol:        EURUSD
   Comment:       Test PositionGetString
   External ID:   
   */
  }
//+------------------------------------------------------------------+
//| Affiche les propriétés de type string de la position sélectionnée|
//+------------------------------------------------------------------+
void PositionPropertiesStringPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- définit le texte d'en-tête et la largeur du champ d'en-tête
//--- si la largeur de l'en-tête est passée à la fonction égale à zéro, alors la largeur sera la taille de la ligne d'en-tête + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- récupère et affiche le symbole de position avec la largeur d'en-tête spécifiée dans le journal
   if(!PositionGetString(POSITION_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- affiche le commentaire de position dans le journal
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- affiche l'identifiant de la position dans un système externe dans le journal
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!PositionGetString(POSITION_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }

Voir également

PositionGetSymbol(), PositionSelect(), Propriétés d'une Position