HistoryOrderGetDouble

Gibt die angeforderte Eigenschaft der Order zurück. Eigenschaft der Order muss vom Typ double sein. Es gibt 2 Varianten der Funktion.

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

double  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id        // Identifikator der Eigenschaft
   );

2. Gibt true oder false zrück, abhängig von der erfolgreichen Durchführung der Funktion. Im Erfolgsfall wird Wert der Eigenschaft der Empfangsvariablen zugewiesen, die durch Referenz als letzter Parameter übertragen wird.

bool  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // Identifikator der Eigenschaft
   double&                     double_var         // hier nehmen wir den Wert der Eigenschaft auf 
   );

Parameter

ticket_number

[in]  Orderticket.

property_id

[in]  Identifikator der Ordereigenschaft. Wert kann einer der Enumerationswerte ENUM_ORDER_PROPERTY_DOUBLE sein.

double_var

[out]  Variable vom Typ double, die den Wert der angeforderten Eigenschaft annimmt.

Rückgabewert

Wert vom Typ double.

Hinweis

Man darf Aufträge (order) aus der Historie und gültige schwebende Aufträge (pending order) nicht miteinander verwechseln, die in der Registerkarte "Handel" in der Werkzeugleiste "Instrumente" dargestellt werden. Die Liste der schwebenden Aufträge, die annulliert wurden oder zur Ausführung der Handelsoperation geführt haben, kann man in der Registerkarte "Historie" in der Werkzeugleiste "Instrumente" des Client-Terminals sehen.

Beispiel:

void OnStart()
  {
   datetime from=0;
   datetime to=TimeCurrent();
//--- die ganze Historie anfordern
   HistorySelect(from,to);
//--- Variablen für die Rückgabe der Werte aus Auftragseigenschaften
   ulong    ticket;
   double   open_price;
   double   initial_volume;
   datetime time_setup;
   datetime time_done;
   string   symbol;
   string   type;
   long     order_magic;
   long     positionID;
//--- Anzahl der aktuell schwebenden Aufträge
   uint     total=HistoryOrdersTotal();
//--- in einer Schleife durch alle gehen
   for(uint i=0;i<total;i++)
     {
      //--- Ticket des Auftrags nach seiner Listenposition zurückgeben
      if((ticket=HistoryOrderGetTicket(i))>0)
        {
         //--- Rückgabe der Auftragseigenschaften
         open_price    =HistoryOrderGetDouble(ticket,ORDER_PRICE_OPEN);
         time_setup    =(datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_SETUP);
         time_done     =(datetime)HistoryOrderGetInteger(ticket,ORDER_TIME_DONE);
         symbol        =HistoryOrderGetString(ticket,ORDER_SYMBOL);
         order_magic   =HistoryOrderGetInteger(ticket,ORDER_MAGIC);
         positionID    =HistoryOrderGetInteger(ticket,ORDER_POSITION_ID);
         initial_volume=HistoryOrderGetDouble(ticket,ORDER_VOLUME_INITIAL);
         type          =GetOrderType(HistoryOrderGetInteger(ticket,ORDER_TYPE));
         //--- Informationen des Auftrags vorbereiten und anzeigen
         printf("#ticket %d %s %G %s at %G was set up at %s => done at %s, pos ID=%d",
                ticket,                  // Order-Ticket
                type,                    // Typ
                initial_volume,          // platziertes Volumen
                symbol,                  // Symbol
                open_price,              // angegebener Eröffnungspreis
                TimeToString(time_setup),// Platzierungszeit der Order
                TimeToString(time_done), // Ausführungs- oder Löschzeit der Order
                positionID               // ID einer Position, auf die sich der Deal der Order bezieht
                );
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| Rückgabe vom Namen des Auftragstyps zurück                       |
//+------------------------------------------------------------------+
string GetOrderType(long type)
  {
   string str_type="unknown operation";
   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");
     }
   return(str_type);
  }

Siehe auch

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