HistoryOrderGetInteger

Gibt die angeforderte Eigenschaft der Order. Eigenschaft der Order muss des Typs datetime, int sein. Es gibt 2 Varianten der Funktion.

1. Gibt den Wert der Eigenschaft sofort zurück.

long  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id        // Identifikator der Eigenschaft
   );

2. Gibt true oder false zurück abhängig davon, ob die Funktion erfolgreich durchgeführt wurde. Im Erfolgsfall wird Wert der Eigenschaft in die Empfangsvariable gesetzt, die durch Referenz vom letzten Parameter übertragen wird.

bool  HistoryOrderGetInteger(
   ulong                        ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // Identifikator der Eigenschaft
   long&                        long_var           // hier nehmen wir den Wert der Eigenschaft auf 
   );

Parameter

ticket_number

[in] Ticket der Order.

property_id

[in]  Identifikator der Ordereigenschaft. Wert kann einer der Enumerationswerte ENUM_ORDER_PROPERTY_INTEGER.

long_var

[out]  Variable des Typs long, die den Wert der angeforderten Eigenschaft annimmt.

Rückgabewert

Wert des Typs long.

Hinweis

Man muss nicht Ordern aus der Handelsgeschichte und geltende Warteordern verwechseln, die in der Registerkarte "Handel" in der Werkzeugleiste "Instrumente" dargestellt werden. Liste der Ordern, die annulliert wurden oder zur Ausführung der Handelsoperation geführt haben, kann man in der Registerkarte "Geschichte" in der Werkzeugleiste "Instrumente" des Client-Terminals sehen.

Beispiel:

//+------------------------------------------------------------------+
//| Trade function                                                   |
//+------------------------------------------------------------------+
void OnTrade()
  {
//--- Ticket des letzten Order aus der Handelsgeschichte für eine Woche erhalten
   ulong last_order=GetLastOrderTicket();
   if(HistoryOrderSelect(last_order))
     {
      //--- Ordersetzungzeit in Millisekunden seit 01.01.1970
      long time_setup_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_SETUP_MSC);
      PrintFormat("Order #%d ORDER_TIME_SETUP_MSC=%i64 => %s",
                  last_order,time_setup_msc,TimeToString(time_setup_msc/1000));
      //--- Orderausführung- oder Löschungzeit in Millisekunden seit 01.01.1970
      long  time_done_msc=HistoryOrderGetInteger(last_order,ORDER_TIME_DONE_MSC);
      PrintFormat("Order #%d ORDER_TIME_DONE_MSC=%i64 => %s",
                  last_order,time_done_msc,TimeToString(time_done_msc/1000));
     }
   else // Den Fehler melden
      PrintFormat("HistoryOrderSelect() failed for #%d. Eror code=%d",
                  last_order,GetLastError());
 
//---
  }
//+------------------------------------------------------------------+
//| Gibt den Ticket des letzten Orders in der Geschichte oder -1     |
//+------------------------------------------------------------------+
ulong GetLastOrderTicket()
  {
//--- Geschichte für die letzte 7 Tagen anfragen
   if(!GetTradeHistory(7))
     {
      //--- Nachricht über fehlgeschlagenen Aufruf und Rückgabe -1
      Print(__FUNCTION__," HistorySelect() hat false zurückgegeben");
      return -1;
     }
//--- 
   ulong first_order,last_order,orders=HistoryOrdersTotal();
//--- wenn es Ordern gibt, anfangen wir mit ihnen zu arbeiten
   if(orders>0)
     {
      Print("Orders = ",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;
     }
//--- keine Orders waren gefunden, Rückgabe -1
   return -1;
  }
//+------------------------------------------------------------------+
//| Geschichte für letzte Tage anfragen, gibt false bei Fehler zurück|
//+------------------------------------------------------------------+
bool GetTradeHistory(int days)
  {
//--- definieren wir Wochenperiode, um eine Handelsgeschichte zu beantragen
   datetime to=TimeCurrent();
   datetime from=to-days*PeriodSeconds(PERIOD_D1);
   ResetLastError();
//--- Machen wir eine Anfrage und überprüfen wir die Ergebnisse
   if(!HistorySelect(from,to))
     {
      Print(__FUNCTION__," HistorySelect=false. Error code=",GetLastError());
      return false;
     }
//--- Geschichte erfolgreich empfangen
   return true;
  }

Sehen Sie auch

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Ordereigenschaften