OrderGetString

Retourne la propriété demandée de l'ordre, pré-sélectionné avec OrderGetTicket ou OrderSelect. La propriété de l'ordre doit être de type string. Il existe 2 variantes de cette fonction.

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

string  OrderGetString(
   ENUM_ORDER_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  OrderGetString(
   ENUM_ORDER_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 l'ordre. La valeur peut être l'une des valeurs de l'énumération ENUM_ORDER_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.

Note

Ne confondez pas les ordres en attente en cours avec les positions, qui sont également affichées dans l'onglet Trading de la fenêtre Boîte à Outils.

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'un ordre, il est recommandé d'appeler OrderSelect() juste avant son utilisation.

Exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- boucle sur tous les ordres du compte
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- récupère le ticket de l'ordre dans la liste par son index
      ulong ticket=OrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- récupère le type de l'ordre et affiche dans le journal l'en-tête de la liste des propriétés de type chaîne de caractères
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- imprime toutes les propriétés de type string de l'ordre sélectionné sous l'en-tête
      OrderPropertiesStringPrint(13);
     }
   /*
  résultat :
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal les propriétés de type string de l'ordre |
//+------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- affiche le commentaire dans le journal
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- affiche dans le journal le symbole pour lequel l'ordre a été passé
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- affiche dans le journal l'identifiant de l'ordre d'un système externe
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal la propriété de type string de l'ordre   |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_STRING property)
  {
   string value="";
   if(!OrderGetString(propertyvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      //--- 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
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-s"wheadervalue);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la description du type de l'ordre                       |
//+------------------------------------------------------------------+
string OrderTypeDescription(const ENUM_ORDER_TYPE type)
  {
   switch(type)
     {
      case ORDER_TYPE_BUY              :  return("Buy");
      case ORDER_TYPE_SELL             :  return("Sell");
      case ORDER_TYPE_BUY_LIMIT        :  return("Buy Limit");
      case ORDER_TYPE_SELL_LIMIT       :  return("Sell Limit");
      case ORDER_TYPE_BUY_STOP         :  return("Buy Stop");
      case ORDER_TYPE_SELL_STOP        :  return("Sell Stop");
      case ORDER_TYPE_BUY_STOP_LIMIT   :  return("Buy Stop Limit");
      case ORDER_TYPE_SELL_STOP_LIMIT  :  return("Sell Stop Limit");
      default                          :  return("Unknown order type: "+(string)type);
     }
  }

Voir également

OrdersTotal(), OrderGetTicket(), Propriétés d'un Ordre

Ce site web utilise des cookies. En savoir plus sur notre politique de cookies.