HistoryOrderGetInteger

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

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

long  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   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  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Identifiant de la propriété
   long&                        long_var           // Valeur de la propriété
   );

Parameters

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_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.

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 :

//+------------------------------------------------------------------+
//| Fonction Trade                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- récupère le ticket du dernier ordre depuis l'historique de trading de la semaine
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- heure de placement d'un ordre en millisecondes depuis le 01.01.1970
      long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
      PrintFormat("Ordre #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                  last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
      //--- heure d'éxécution/annulation d'un ordre en millisecondes depuis le 01.01.1970
      long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
      PrintFormat("Ordre #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                  last_order,time_done_msc,TimeToString(time_done_msc/1000));
     }
   else // notification de l'échec
      PrintFormat("Echec de HistoryOrderSelect() pour #%d. Code d'erreur=%d",
                  last_order,GetLastError());
 
//---
  }
//+------------------------------------------------------------------+
//| Retourne le ticket du dernier ordre dans l'historique ou -1      |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
//--- récupère l'historique des 7 derniers jours
   if(!GetTradeHistory(7))
     {
      //--- notification d'un appel non réussi et retourne -1
      Print(__FUNCTION__," HistorySelect() a retourné false");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- utilise les ordres s'il y en a
   if(orders>0)
     {
      Print("Ordres = ",orders);
      first_order=HistoryOrderGetTicket(0);
      PrintFormat("first_order = %d",first_order);
      if(orders>1)
        {
         last_order=HistoryOrderGetTicket((int)orders-1);
         PrintFormat("last_order = %d",last_order);
         return last_order;
        }
      return first_order;
     }
//--- aucun ordre trouvé, retourne -1
   return -1;
  }
//+--------------------------------------------------------------------------+
//| Récupère l'historique des derniers jours et retourne false en cas d'échec|
//+--------------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- utilise la période de la semaine pour récupérer l'historique de trading
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//--- effectue une demande et vérifie le résultat
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Code d'erreur=",GetLastError());
      return false;
     }
//--- l'historique a été récupéré avec succès
   retourne vrai;
  }

Voir également

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