OrderGetDouble

OrderGetTicket veya OrderSelect kullanılarak önceden seçilmiş olan emrin bir özelliğine dönüş yapar. Emir özelliği double tipinde olmalıdır. Fonksiyonun iki türü mevcuttur.

1. Hızlı bir şekilde özellik değerine dönüş yapar.

double  OrderGetDouble(
   ENUM_ORDER_PROPERTY_DOUBLE  property_id        // özellik tanımlayıcı
   );

2. Fonksiyonun başarı durumuna göre, true (doğru) veya false (yanlış) değerine dönüş yapar. Başarı durumunda özellik değeri, referansla geçirilen son parametreye girilir.

bool  OrderGetDouble(
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // özellik tanımlayıcı
   double&                        double_var         // özellik değerini burada kabul ediyoruz
   );

Parametreler

property_id

[in]  Emir özelliğinin tanımlayıcısı. Bu, ENUM_ORDER_PROPERTY_DOUBLE sayımının değerlerinden biri olabilir.

double_var

[out]  İstenen özellik değerini alacak olan double tipli değişken.

Dönüş Değeri

double tipli değer. Başarısız sonuç duruunda, 0 dönüşü yapar.

Not

Müşteri terminalinde Araçkutusunun "İşlem" sekmesinde birlikte gösterilen mevcut bekleyen emirler ve pozisyonlar birbirleriyle karıştırılmamalıdır.

Netleştirme (netting) sisteminde (ACCOUNT_MARGIN_MODE_RETAIL_NETTING ve ACCOUNT_MARGIN_MODE_EXCHANGE) bir sembol üzerinde sadece bir pozisyon bulunabilir. Bu pozisyon bir veya daha fazla işlemin sonucu açılmış olabilir. Müşteri terminalinde Araçkutusunun "İşlem" sekmesi içinde birlikte gösterilen mevcut bekleyen emirler ve pozisyonlar birbirleriyle karıştırılmamalıdır.

Çoklu pozisyonlara izin verilemsi durumunda (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) bir sembol üzerinde birden fazla pozisyon açılabilir.

Emirle ilgili güncel verileri alabilmek için OrderSelect() çağrısının değişikliklerden sonra yapıldığından emin olmalısınız.

Örnek:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- hesaptaki tüm emirlerin listesine göre bir döngü içerisinde
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- döngü indeksine göre listedeki emrin fişini al
      ulong ticket=OrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- emrin türünü al ve seçilen emrin reel özelliklerinin listesi için başlığı görüntüle
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("Double properties of an active pending order %s #%I64u:"typeticket);
      
      //--- seçilen emrin tüm reel özelliklerini başlık altında yazdır
      OrderPropertiesDoublePrint(16);
     }
   /*
  sonuç:
   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
   */
  }
//+------------------------------------------------------------------+
//| Emir türü açıklamasını geri döndür                               |
//+------------------------------------------------------------------+
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");
     }
  }
//+------------------------------------------------------------------+
//| Seçilen emrin reel özelliklerini günlükte görüntüle              |
//+------------------------------------------------------------------+
void OrderPropertiesDoublePrint(const uint header_width=0)
  {
//--- emir sembolünü ve bu sembolün ondalık basamak sayısını al
   string symbol = OrderGetString(ORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbolSYMBOL_DIGITS);
   
//--- emir yerleştirilirken olan başlangıç hacmini belirtilen başlık genişliğiyle günlükte görüntüle
   OrderPropertyPrint("Volume initial:",header_width,2,ORDER_VOLUME_INITIAL);
   
//--- yerine getirilmemiş emir hacmini günlükte görüntüle
   OrderPropertyPrint("Volume current:",header_width,2,ORDER_VOLUME_CURRENT);
   
//--- emirde belirtilen fiyatı günlükte görüntüle
   OrderPropertyPrint("Price open:",header_width,digits,ORDER_PRICE_OPEN);
   
//--- Zararı Durdur seviyesini günlükte görüntüle
   OrderPropertyPrint("StopLoss:",header_width,digits,ORDER_SL);
 
//--- Kârı Al seviyesini günlükte görüntüle
   OrderPropertyPrint("TakeProfit:",header_width,digits,ORDER_TP);
 
//--- emir sembolüne göre mevcut fiyatı günlükte görüntüle
   OrderPropertyPrint("Price current:",header_width,digits,ORDER_PRICE_CURRENT);
 
//--- Stop Limit emri etkinleştirildiğindeki Limit emri fiyatını günlükte görüntüle
   OrderPropertyPrint("StopLimit:",header_width,digits,ORDER_PRICE_STOPLIMIT);
  }
//+------------------------------------------------------------------+
//| Emrin reel özellik değerini günlükte görüntüle                   |
//+------------------------------------------------------------------+
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
     {
      //--- başlık genişliği fonksiyona sıfıra eşit olarak aktarılırsa, genişlik başlık satırının boyutu + 1 olacaktır
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-.*f"wheaderdigitsvalue);
     }
  }

Ayrıca bakınız

OrdersTotal(), OrderGetTicket(), Emir Özellikleri