OrderGetDouble

Gibt die angeforderte Ordereigenschaft zurück, die vorher mit der Funktionen OrderGetTicket oder OrderSelect ausgewählt wurde. Ordereigenschaften vom Typ double.  Es gibt zwei Arten der Funktion.

1. Gibt unmittelbar die Eigenschaftsgröße zurück.

double  OrderGetDouble(
   ENUM_ORDER_PROPERTY_DOUBLE  property_id        // Eigenschaftsidentifikator
   );

2. Gibt true oder false zurück, abhängig davon, ob die Funktion erfolgreich durchgeführt wird. Im Erfolgsfall wird der Eigenschaftswert der Empfangsvariable zugewiesen, die im letzten Parameter als Referenz übergeben wird.

bool  OrderGetDouble(
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,      // Eigenschaftsidentifikator
   double&                     double_var        // hier erhalten wir den Wert der Eigenschaft 
   );

Parameter

property_id

[in]  Ordereigenschaftsidentifikator.  Der Wert kann einer aus der Enumeration ENUM_ORDER_PROPERTY_DOUBLE sein.

double_var

[out]  Variable vom Typ double, der der Wert der angeforderten Eigenschaft zugewiesen wird.

Rückgabewert

Wert vom Typ double.

Hinweis

Man darf gültige schwebende Aufträge nicht mit Positionen verwechseln, die auch 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 die neuesten Daten einer Position zu erhalten, ist es empfehlenswert, die Funktion OrderSelect() aufzurufen, bevor man diese Daten verwendet.

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("Double properties of an active pending order %s #%I64u:"typeticket);
      
      //--- alle „double“-Eigenschaften des ausgewählten Auftrags unter der Überschrift ausdrucken
      OrderPropertiesDoublePrint(16);
     }
   /*
   Ergebnis:
   Double properties of an active pending order Sell Limit #2812000714:
   Volume initial1.00
   Volume current1.00
   Price open:     145.282
   StopLoss:       0.000
   TakeProfit:     0.000
   Price current:  145.044
   StopLimit:      0.000
   Double properties of an active pending order Buy Limit #2812001112:
   Volume initial1.00
   Volume current1.00
   Price open:     144.836
   StopLoss:       0.000
   TakeProfit:     0.000
   Price current:  145.051
   StopLimit:      0.000
   Double properties of an active pending order Buy Stop #2812001488:
   Volume initial0.50
   Volume current0.50
   Price open:     1.10642
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10530
   StopLimit:      0.00000
   Double properties of an active pending order Sell Stop #2812001712:
   Volume initial0.50
   Volume current0.50
   Price open:     1.10374
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10525
   StopLimit:      0.00000
   */
  }
//+------------------------------------------------------------------+
//| 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");
     }
  }
//+------------------------------------------------------------------+
//| „double“-Eigenschaften der gewählten Order ausdrucken            |
//+------------------------------------------------------------------+
void OrderPropertiesDoublePrint(const uint header_width=0)
  {
//--- Orders-Symbol und Anzahl dessen Dezimalstellen abrufen
   string symbol = OrderGetString(ORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- Ausdruck des Anfangsvolumens bei der Platzierung einer Order mit einer Kopfzeile der angegebenen Breite im Journal
   OrderPropertyPrint("Volume initial:",header_width,2,ORDER_VOLUME_INITIAL);
   
//--- Anzeige des nicht gefüllten Auftragsvolumens im Journal
   OrderPropertyPrint("Volume current:",header_width,2,ORDER_VOLUME_CURRENT);
   
//--- Anzeige des in der Order angegebenen Preises im Journal
   OrderPropertyPrint("Price open:",header_width,digits,ORDER_PRICE_OPEN);
   
//--- Ausdruck der StopLoss-Level im Journal
   OrderPropertyPrint("StopLoss:",header_width,digits,ORDER_SL);
 
//--- Ausdruck des TakeProfit-Levels im Journal
   OrderPropertyPrint("TakeProfit:",header_width,digits,ORDER_TP);
 
//--- Ausdruck des aktuellen Preises des Ordersymbols im Journal
   OrderPropertyPrint("Price current:",header_width,digits,ORDER_PRICE_CURRENT);
 
//--- Ausdruck des Limit-Orderpreises, wenn eine StopLimit-Order aktiviert ist, im Journal
   OrderPropertyPrint("StopLimit:",header_width,digits,ORDER_PRICE_STOPLIMIT);
  }
//+------------------------------------------------------------------+
//| Die Order-Eigenschaften vom Typ „double“-im Journal anzeigen     |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthint digitsENUM_ORDER_PROPERTY_DOUBLE property)
  {
   double value=0;
   if(!OrderGetDouble(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%-.*f"wheaderdigitsvalue);
     }
  }

Siehe auch

OrdersTotal(), OrderGetTicket(), Ordereigenschaften