OrderGetInteger

Gibt die angeforderte Eigenschaft der Order zurück, die vorher durch die Funktion OrderGetTicket oder OrderSelect gewählt wurde. Die Eigenschaft der Order muss vom Typ ganzzahlig (datetime, int,..) sein. Es gibt 2 Varianten der Funktion.

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

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

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

Parameter

property_id

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

long_var

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

Rückgabewert

Wert vom Typ long.

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.

Um aktuelle Daten einer Order zu erhalten, ist es empfehlenswert, die Funktion OrderSelect() aufzurufen, bevor man die Daten abruft.

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 „double“-Eigenschaften des ausgewählten Auftrags ausdrucken
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("Integer properties of an active pending order %s #%I64u:"typeticket);
      
      //--- alle ganzzahligen Eigenschaften des ausgewählten Auftrags unter der Überschrift ausdrucken
      OrderPropertiesIntegerPrint(17);
     }
   /*
   Ergebnis:
   Integer properties of an active pending order Buy Limit #2812945317:
   Ticket:          2812945317
   Time setup:      2024.09.04 19:17:16
   Type:            Buy Limit
   State:           Placed
   Time expiration0
   Time done:       0
   Time setup msc:  2024.09.04 19:17:16.686
   Time done msc:   0
   Type filling:    Return
   Type time:       Time GTC
   Magic:           0
   Reason:          Client
   Position ID:     0
   Position By ID:  0
   */
  }
//+------------------------------------------------------------------+
//| Ganzzahlige Eigenschaften der gewählten Order ins Journal drucken|
//+------------------------------------------------------------------+
void OrderPropertiesIntegerPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   long   value=0;
   
//--- Auftragsticket im Journal anzeigen
   OrderPropertyPrint("Ticket:"header_widthORDER_TICKET);
   
//--- Zeitpunkt der Auftragserteilung im Journal anzeigen
   OrderPropertyPrint("Time setup:"header_widthORDER_TIME_SETUP);
   
//--- Anzeige des Auftragstyps im Journal
   OrderPropertyPrint("Type:"header_widthORDER_TYPE);
   
//--- Anzeige des Auftragsstatus im Journal
   OrderPropertyPrint("State:"header_widthORDER_STATE);
   
//--- Ablaufzeit der Bestellung im Journal anzeigen
   OrderPropertyPrint("Time expiration:"header_widthORDER_TIME_EXPIRATION);
   
//--- Ausführungs-/Ablaufzeit der Order im Journal anzeigen
   OrderPropertyPrint("Time done:"header_widthORDER_TIME_DONE);
   
//--- Anzeige der Zeit der Auftragserteilung zur Ausführung in Millisekunden seit dem 01.01.1970 im Journal
   OrderPropertyPrint("Time setup msc:"header_widthORDER_TIME_SETUP_MSC);
   
//--- Anzeige der Auftragsausführungs-/Ablaufzeit in Millisekunden seit 01.01.1970 im Journal
   OrderPropertyPrint("Time done msc:"header_widthORDER_TIME_DONE_MSC);
   
//--- verbliebener Ordertyp im Journal anzeigen
   OrderPropertyPrint("Type filling:"header_widthORDER_TYPE_FILLING);
   
//--- Lebensdauer der Order im Journal anzeigen
   OrderPropertyPrint("Type time:"header_widthORDER_TYPE_TIME);
   
//--- Anzeige der ID des EA, der eine Order platziert hat, im Journal
   OrderPropertyPrint("Magic:"header_widthORDER_MAGIC);
   
//--- Anzeige des Grundes oder der Quelle der Order im Journal
   OrderPropertyPrint("Reason:"header_widthORDER_REASON);
   
//--- Anzeige der ID der Position, die während der Ausführung der Order festgelegt wurde, im Journal
   OrderPropertyPrint("Position ID:"header_widthORDER_POSITION_ID);
   
//--- Anzeige der entgegengesetzten Positions-ID für Orders vom Typ ORDER_TYPE_CLOSE_BY im Journal
   OrderPropertyPrint("Position By ID:"header_widthORDER_POSITION_BY_ID);
  }
//+------------------------------------------------------------------+
//| Ausdruck der ganzzahligen Eigenschaftswert der Order im Journal  |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_INTEGER property)
  {
   string svalue="";
   long   lvalue=0;
   if(!OrderGetInteger(propertylvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      switch(property)
        {
         case ORDER_TICKET          :
         case ORDER_MAGIC           :
         case ORDER_POSITION_ID     :
         case ORDER_POSITION_BY_ID  :
           svalue=(string)lvalue;
           break;
           
         case ORDER_TIME_SETUP      :
         case ORDER_TIME_EXPIRATION :
         case ORDER_TIME_DONE       :
           svalue=(lvalue!=0 ? TimeToString((datetime)lvalueTIME_DATE|TIME_MINUTES|TIME_SECONDS) : "0");
           break;
           
         case ORDER_TIME_SETUP_MSC  :
         case ORDER_TIME_DONE_MSC   :
           svalue=(lvalue!=0 ? TimeMscToString(lvalue) : "0");
           break;
           
         case ORDER_TYPE            :
           svalue=OrderTypeDescription((ENUM_ORDER_TYPE)lvalue);
           break;
         case ORDER_STATE           :
           svalue=OrderStateDescription((ENUM_ORDER_STATE)lvalue);
           break;
         case ORDER_TYPE_FILLING    :
           svalue=OrderTypeFillingDescription((ENUM_ORDER_TYPE_FILLING)lvalue);
           break;
         case ORDER_TYPE_TIME       :
           svalue=OrderTypeTimeDescription((ENUM_ORDER_TYPE_TIME)lvalue);
           break;
         case ORDER_REASON          :
           svalue=OrderReasonDescription((ENUM_ORDER_REASON)lvalue);
           break;
         
         default                    :
           svalue="Unknown property";
           break;
        }
      
      //--- 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"wheadersvalue);
     }
  }
//+------------------------------------------------------------------+
//| 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);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Order-Status                       |
//+------------------------------------------------------------------+
string OrderStateDescription(ENUM_ORDER_STATE state)
  {
   switch(state)
     {
      case ORDER_STATE_STARTED         :  return("Started");
      case ORDER_STATE_PLACED          :  return("Placed");
      case ORDER_STATE_CANCELED        :  return("Canceled");
      case ORDER_STATE_PARTIAL         :  return("Partial");
      case ORDER_STATE_FILLED          :  return("Filled");
      case ORDER_STATE_REJECTED        :  return("Rejected");
      case ORDER_STATE_EXPIRED         :  return("Expired");
      case ORDER_STATE_REQUEST_ADD     :  return("Request Add");
      case ORDER_STATE_REQUEST_MODIFY  :  return("Request Modify");
      case ORDER_STATE_REQUEST_CANCEL  :  return("Request Cancel");
      default                          :  return("Unknown state: "+(string)state);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung der Füll-Politik für das Order-Volumen |
//+------------------------------------------------------------------+
string OrderTypeFillingDescription(const ENUM_ORDER_TYPE_FILLING type)
  {
   switch(type)
     {
      case ORDER_FILLING_FOK     :  return("Fill or Kill");
      case ORDER_FILLING_IOC     :  return("Immediate or Cancel");
      case ORDER_FILLING_BOC     :  return("Book or Cancel");
      case ORDER_FILLING_RETURN  :  return("Return");
      default                    :  return("Unknown type filling: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Ablaufdatums der Order             |
//+------------------------------------------------------------------+
string OrderTypeTimeDescription(const ENUM_ORDER_TYPE_TIME type)
  {
   switch(type)
     {
      case ORDER_TIME_GTC           :   return("Time GTC");
      case ORDER_TIME_DAY           :   return("Time Day");
      case ORDER_TIME_SPECIFIED     :   return("Time Specified");
      case ORDER_TIME_SPECIFIED_DAY :   return("Time Specified Day");
      default                       :  return("Unknown type time: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Beschreibung des Order-Grundes                      |
//+------------------------------------------------------------------+
string OrderReasonDescription(const ENUM_ORDER_REASON reason)
  {
   switch(reason)
     {
      case ORDER_REASON_CLIENT   :  return("Client");
      case ORDER_REASON_MOBILE   :  return("Mobile");
      case ORDER_REASON_WEB      :  return("Web");
      case ORDER_REASON_EXPERT   :  return("Expert");
      case ORDER_REASON_SL       :  return("Stop Loss");
      case ORDER_REASON_TP       :  return("Take Profit");
      case ORDER_REASON_SO       :  return("Stop Out");
      default                    :  return("Unknown reason: "+(string)reason);
     }
  }
//+------------------------------------------------------------------+
//| Rückgabe der Zeit in Millisekunden                               |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Siehe auch

OrdersTotal(), OrderGetTicket(), Ordereigenschaften