OrderGetString

Gibt die angeforderte Ordereigenschaft zurück, die vorher durch die Funktion OrderGetTicket oder OrderSelect gewählt wurde. Eigenschaft der Order muss vom Typ string sein. Es gibt 2 Varianten der Funktion.

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

string  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  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 der Wert der Eigenschaft in die Empfangsvariable gestellt, die durch Referenz auf den letzten Parameter übertragen wird.

bool  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id,      // Identifikator der Eigenschaft
   string&                     string_var        // hier nehmen wir den Wert der Eigenschaft auf 
   );

Parameter

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 gültige schwebende Aufträge nicht mit Positionen verwechseln, die in der Registerkarte "Handel" in der Werkzeugleiste "Instrumente" des Client-Terminals dargestellt werden.

Im Netting Mode (ACCOUNT_MARGIN_MODE_RETAIL_NETTING und ACCOUNT_MARGIN_MODE_EXCHANGE) kann nur eine Position pro Symbol vorhanden sein, die das Ergebnis eines oder mehrerer Handelsgeschäfte darstellt. Man darf Positionen und aktuelle Pending Orders, die auch im Tab Handel in der Werkzeugleiste angezeigt werden, nicht miteinander verwechseln.

Bei einer unabhängigen Verrechnung von Positionen (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) können gleichzeitig mehrere Positionen für ein Symbol existieren.

Für den Erhalt der aktuellen Daten der Order ist es empfehlenswert, die Funktion OrderSelect() aufzurufen, bevor man die aktualisierten Daten aufruft.

Beispiel:

//+------------------------------------------------------------------+
//| Skript Programm Start Funktion                                   |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- in einer Schleife durch die Liste aller Orders des Kontos
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- Abrufen des Order-Tickets in der Liste über den Schleifenindex
      ulong ticket=OrderGetTicket(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)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- alle String-Eigenschaften des ausgewählten Auftrags unter der Kopfzeile drucken
      OrderPropertiesStringPrint(13);
     }
   /*
   Ergebnis:
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+------------------------------------------------------------------+
//| String-Eigenschaften der ausgewählten Order im Journal anzeigen  |
//+------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- Kommentar im Journal anzeigen
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- Anzeige eines Symbols, für das der Auftrag im Journal ausgegeben wurde
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- Auftrags-ID in einem externen System im Journal anzeigen
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------+
//| Display the order string property value in the journal           |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_STRING property)
  {
   string value="";
   if(!OrderGetString(propertyvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      //--- Wenn der Funktion eine Breite der Kopfzeile von Null übergeben wird, dann wird der Breite die Größe der Kopfzeile + 1 zugewiesen.
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      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

OrdersTotal(), OrderGetTicket(), Ordereigenschaften