OrderGetInteger

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 datetime ou int. Il existe 2 variantes de cette fonction.

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

long  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  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  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Identifiant de la propriété
   long&                        long_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_INTEGER

long_var

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

Valeur de Retour

Valeur de type long. Si la fonction échoue, retourne 0.

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 l'en-tête de la liste des propriétés réelles de l'ordre sélectionné
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("Integer properties of an active pending order %s #%I64u:"typeticket);
      
      //--- affiche toutes les propriétés entières de l'ordre sélectionné sous l'en-tête
      OrderPropertiesIntegerPrint(17);
     }
   /*
  résultat :
   Integer properties of an active pending order Buy Limit #2812945317:
   Ticket:          2812945317
   Time setup:      2024.09.04 19:17:16
   Type:            Buy Limit
   State:           Placed
   Time expiration0
   Time done:       0
   Time setup msc:  2024.09.04 19:17:16.686
   Time done msc:   0
   Type filling:    Return
   Type time:       Time GTC
   Magic:           0
   Reason:          Client
   Position ID:     0
   Position By ID:  0
   */
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal les propriétés entières de l'ordre       |
//+------------------------------------------------------------------+
void OrderPropertiesIntegerPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   long   value=0;
   
//--- affiche dans le journal le ticket de l'ordre
   OrderPropertyPrint("Ticket:"header_widthORDER_TICKET);
   
//--- affiche dans le journal l'heure de placement de l'ordre
   OrderPropertyPrint("Time setup:"header_widthORDER_TIME_SETUP);
   
//--- affiche dans le journal le type de l'ordre
   OrderPropertyPrint("Type:"header_widthORDER_TYPE);
   
//--- affiche dans le journal le statut de l'ordre
   OrderPropertyPrint("State:"header_widthORDER_STATE);
   
//--- affiche dans le journal l'heure d'expiration de l'ordre
   OrderPropertyPrint("Time expiration:"header_widthORDER_TIME_EXPIRATION);
   
//--- affiche dans le journal l'heure d'exécution/expiration de l'ordre
   OrderPropertyPrint("Time done:"header_widthORDER_TIME_DONE);
   
//--- affiche dans le journal l'heure de placement pour exécution de l'ordre en millisecondes depuis le 01/01/1970
   OrderPropertyPrint("Time setup msc:"header_widthORDER_TIME_SETUP_MSC);
   
//--- affiche dans le journal l'heure d'exécutio/expiration de l'ordre en millisecondes depuis le 01/01/1970
   OrderPropertyPrint("Time done msc:"header_widthORDER_TIME_DONE_MSC);
   
//--- affiche dans le journal le type d'exécution restante
   OrderPropertyPrint("Type filling:"header_widthORDER_TYPE_FILLING);
   
//--- affiche dans le journal la durée de vie de l'ordre
   OrderPropertyPrint("Type time:"header_widthORDER_TYPE_TIME);
   
//--- affiche dans le journal l'identifiant de l'EA ayant placé l'ordre
   OrderPropertyPrint("Magic:"header_widthORDER_MAGIC);
   
//--- affiche dans le journal la raison ou la source de l'ordre
   OrderPropertyPrint("Reason:"header_widthORDER_REASON);
   
//--- affiche dans le journal l'identifiant de la position, mis durant l'exécution de l'ordre
   OrderPropertyPrint("Position ID:"header_widthORDER_POSITION_ID);
   
//--- affiche dans le journal l'identifiant de la position opposée pour des ordres de type ORDER_TYPE_CLOSE_BY
   OrderPropertyPrint("Position By ID:"header_widthORDER_POSITION_BY_ID);
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal la propriété de type int de l'ordre      |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_INTEGER property)
  {
   string svalue="";
   long   lvalue=0;
   if(!OrderGetInteger(propertylvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      switch(property)
        {
         case ORDER_TICKET          :
         case ORDER_MAGIC           :
         case ORDER_POSITION_ID     :
         case ORDER_POSITION_BY_ID  :
           svalue=(string)lvalue;
           break;
           
         case ORDER_TIME_SETUP      :
         case ORDER_TIME_EXPIRATION :
         case ORDER_TIME_DONE       :
           svalue=(lvalue!=0 ? TimeToString((datetime)lvalueTIME_DATE|TIME_MINUTES|TIME_SECONDS) : "0");
           break;
           
         case ORDER_TIME_SETUP_MSC  :
         case ORDER_TIME_DONE_MSC   :
           svalue=(lvalue!=0 ? TimeMscToString(lvalue) : "0");
           break;
           
         case ORDER_TYPE            :
           svalue=OrderTypeDescription((ENUM_ORDER_TYPE)lvalue);
           break;
         case ORDER_STATE           :
           svalue=OrderStateDescription((ENUM_ORDER_STATE)lvalue);
           break;
         case ORDER_TYPE_FILLING    :
           svalue=OrderTypeFillingDescription((ENUM_ORDER_TYPE_FILLING)lvalue);
           break;
         case ORDER_TYPE_TIME       :
           svalue=OrderTypeTimeDescription((ENUM_ORDER_TYPE_TIME)lvalue);
           break;
         case ORDER_REASON          :
           svalue=OrderReasonDescription((ENUM_ORDER_REASON)lvalue);
           break;
         
         default                    :
           svalue="Unknown property";
           break;
        }
      
      //--- 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"wheadersvalue);
     }
  }
//+------------------------------------------------------------------+
//| 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);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la description du statut de l'ordre                     |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
  {
   switch(state)
     {
      case ORDER_STATE_STARTED         :  return("Started");
      case ORDER_STATE_PLACED          :  return("Placed");
      case ORDER_STATE_CANCELED        :  return("Canceled");
      case ORDER_STATE_PARTIAL         :  return("Partial");
      case ORDER_STATE_FILLED          :  return("Filled");
      case ORDER_STATE_REJECTED        :  return("Rejected");
      case ORDER_STATE_EXPIRED         :  return("Expired");
      case ORDER_STATE_REQUEST_ADD     :  return("Request Add");
      case ORDER_STATE_REQUEST_MODIFY  :  return("Request Modify");
      case ORDER_STATE_REQUEST_CANCEL  :  return("Request Cancel");
      default                          :  return("Unknown state: "+(string)state);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la description de la politique de remplissage de l'ordre|
//+------------------------------------------------------------------+
string OrderTypeFillingDescription(const ENUM_ORDER_TYPE_FILLING type)
  {
   switch(type)
     {
      case ORDER_FILLING_FOK     :  return("Fill or Kill");
      case ORDER_FILLING_IOC     :  return("Immediate or Cancel");
      case ORDER_FILLING_BOC     :  return("Book or Cancel");
      case ORDER_FILLING_RETURN  :  return("Return");
      default                    :  return("Unknown type filling: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la description de la date d'expiration de l'ordre       |
//+------------------------------------------------------------------+
string OrderTypeTimeDescription(const ENUM_ORDER_TYPE_TIME type)
  {
   switch(type)
     {
      case ORDER_TIME_GTC           :   return("Time GTC");
      case ORDER_TIME_DAY           :   return("Time Day");
      case ORDER_TIME_SPECIFIED     :   return("Time Specified");
      case ORDER_TIME_SPECIFIED_DAY :   return("Time Specified Day");
      default                       :  return("Unknown type time: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Retourne la description de la raison du placement de l'ordre     |
//+------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
  {
   switch(reason)
     {
      case ORDER_REASON_CLIENT   :  return("Client");
      case ORDER_REASON_MOBILE   :  return("Mobile");
      case ORDER_REASON_WEB      :  return("Web");
      case ORDER_REASON_EXPERT   :  return("Expert");
      case ORDER_REASON_SL       :  return("Stop Loss");
      case ORDER_REASON_TP       :  return("Take Profit");
      case ORDER_REASON_SO       :  return("Stop Out");
      default                    :  return("Unknown reason: "+(string)reason);
     }
  }
//+------------------------------------------------------------------+
//| Retourne l'heure en millisecondes                                |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Voir également

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