HistoryOrderGetString

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

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

string  HistoryOrderGetString(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_STRING  property_id        // Identifikator der Eigenschaft
   );

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

bool  HistoryOrderGetString(
   ulong                       ticket_number,     // Ticket
   ENUM_ORDER_PROPERTY_STRING  property_id,       // Identifikator der Eigenschaft
   string&                     string_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_STRING sein.

string_var

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

Rückgabewert

Wert vom Typ string.

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:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- Handels- und Auftragshistorie anfordern
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
     
//--- in einer Schleife durch die Liste aller historischen Aufträge gehen
   int total=HistoryOrdersTotal();
   for(int i=0i<totali++)
     {
      //--- Abrufen des Order-Tickets in der Liste über den Schleifenindex
      ulong ticket=HistoryOrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- Auftragstyp abrufen und Kopfzeile für die Liste der String-Eigenschaften des ausgewählten Auftrags anzeigen
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)HistoryOrderGetInteger(ticketORDER_TYPE));
      PrintFormat("String properties of an history order %s #%I64u:"typeticket);
      
      //--- alle String-Eigenschaften des ausgewählten Auftrags unter der Kopfzeile drucken
      HistoryOrderPropertiesStringPrint(ticket16);
     }
   /*
   Ergebnis:
   String properties of an history order Buy #2646074112:
   Comment:        [tp 1.09137]
   Symbol:         EURUSD
   External ID:    
   String properties of an history order Buy #2646131906:
   Comment:        
   Symbol:         EURUSD
   External ID:    
   */
  }
//+------------------------------------------------------------------+
//| String-Eigenschaften der                                         |
//| ausgewählten historischen Aufträge im Journal                    |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesStringPrint(const long ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value="";
   
//--- Definieren der Kopftextes und der Breite des Textfeldes
//--- Wenn der Funktion eine Breite von Null übergeben wird, dann ist die Breite die Größe der Kopfzeile + 1
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- Kommentar mit der angegebenen Kopfzeilenbreite abrufen und im Journal anzeigen
   if(!HistoryOrderGetString(ticketORDER_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Anzeige eines Symbols, für das der Auftrag im Journal ausgegeben wurde
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- Auftrags-ID in einem externen System im Journal anzeigen
   header="External ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetString(ticketORDER_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Auftragstyps                       |
//+------------------------------------------------------------------+
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);
     }
  }

Siehe auch

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