HistoryOrderGetDouble

Retourne la propriété demandée de l'ordre. La propriété de l'ordre doit être de type double. Il existe 2 variantes de la fonction.

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

double  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  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  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // Identifiant de la propriété
   double&                     double_var         // Valeur de la propriété
   );

Paramètres

ticket_number

[in]  Ticket de l'ordre.

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_DOUBLE

double_var

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

Valeur de Retour

Valeur de type double.

Note

Ne confondez pas les ordres d'un historique de trading avec les ordres en attente en cours qui apparaissent dans l'onglet "Trade" de la barre "Boîte à Outils". La liste des ordres qui ont été annulés ou qui on conduit à une transaction, est visible dans l'onglet "Historique" de la "Boîte à Outils" du terminal client.

Exemple :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- demande l'historique des transactions et des ordres
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- boucle sur la liste de tous les ordres de l'historique du compte
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- récupère le ticket de l'ordre dans la liste par son index
      ulong ticket=HistoryOrderGetTicket(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)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("Double properties of an history order %s #%I64u:"typeticket);
      
      //--- affiche toutes les propriétés réelles de l'ordre sélectionné sous l'en-tête
      HistoryOrderPropertiesDoublePrint(ticket16);
     }
   /*
   résultat :
   Double properties of an history order Sell #2810847541:
   Volume initial0.50
   Volume current0.00
   Price open:     1.10491
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10491
   StopLimit:      0.00000
   Double properties of an history order Buy Limit #2811003507:
   Volume initial1.00
   Volume current1.00
   Price open:     1.10547
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10591
   StopLimit:      0.00000
   */
  }
//+------------------------------------------------------------------+
//| Affiche dans le journal les propriétés réelles de l'ordre        |
//| historique sélectionné                                           |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesDoublePrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   double value=0;
   
//--- récupère le symbole de l'ordre et le nombre de décimales du symbole
   string symbol = HistoryOrderGetString(ticketORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- 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="Volume initial:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- récupère et affiche le volume initial lors du passage de l'ordre avec un en-tête de la largeur spécifiée dans le journal
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_INITIALvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//--- affiche dans le journal le volume des ordres non exécutés
   header="Volume current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_VOLUME_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.2f"wheadervalue);
   
//---affiche dans le journal le prix spécifié dans l'ordre
   header="Price open:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_OPENvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
   
//--- affiche dans le journal le niveau du StopLoss
   header="StopLoss:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_SLvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- affiche dans le journal le niveau du TakeProfit
   header="TakeProfit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_TPvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- affiche dans le journal le prix courant du symbol de l'ordre
   header="Price current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_CURRENTvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
 
//--- affiche dans le journal le prix de l'ordre Limit, lorsque l'ordre StopLimit est activé
   header="StopLimit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticketORDER_PRICE_STOPLIMITvalue))
      return;
   PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
  }
//+------------------------------------------------------------------+
//| 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");
     }
  }

Voir également

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Propriétés d'un Ordre