OrderGetInteger

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

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

long  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  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  OrderGetInteger(
   ENUM_ORDER_PROPERTY_INTEGER  property_id,       // özellik tanımlayıcı
   long&                        long_var           // özellik değerini burada kabul ediyoruz
   );

Parametreler

property_id

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

long_var

[out]  İstenen özellik değerinin girileceği long tipli değişken.

Dönüş Değeri

long 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("Integer properties of an active pending order %s #%I64u:"typeticket);
      
      //--- seçilen emrin tüm tam sayı özelliklerini başlık altında yazdır
      OrderPropertiesIntegerPrint(17);
     }
   /*
   sonuç:
   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
   */
  }
//+------------------------------------------------------------------+
//| Seçilen emrin tam sayı özelliklerini günlükte görüntüle  |
//+------------------------------------------------------------------+
void OrderPropertiesIntegerPrint(const uint header_width=0)
  {
   uint   w=0;
   string header="";
   long   value=0;
   
//--- emir fişini günlükte görüntüle
   OrderPropertyPrint("Ticket:"header_widthORDER_TICKET);
   
//--- emrin yerleştirilme zamanını günlükte görüntüle
   OrderPropertyPrint("Time setup:"header_widthORDER_TIME_SETUP);
   
//--- emir türünü günlükte görüntüle
   OrderPropertyPrint("Type:"header_widthORDER_TYPE);
   
//--- emir durumunu günlükte görüntüle
   OrderPropertyPrint("State:"header_widthORDER_STATE);
   
//--- emrin sona erme zamanını günlükte görüntüle
   OrderPropertyPrint("Time expiration:"header_widthORDER_TIME_EXPIRATION);
   
//--- emrin gerçekleşme/iptal edilme zamanını günlükte görüntüle
   OrderPropertyPrint("Time done:"header_widthORDER_TIME_DONE);
   
//--- emrin yerleştirilme zamanını 01.01.1970 tarihinden itibaren milisaniye cinsinden günlükte görüntüle
   OrderPropertyPrint("Time setup msc:"header_widthORDER_TIME_SETUP_MSC);
   
//--- emrin gerçekleşme/iptal edilme zamanını 01.01.1970 tarihinden itibaren milisaniye cinsinden günlükte görüntüle
   OrderPropertyPrint("Time done msc:"header_widthORDER_TIME_DONE_MSC);
   
//--- emrin yerine getirilme türünü günlükte görüntüle
   OrderPropertyPrint("Type filling:"header_widthORDER_TYPE_FILLING);
   
//--- emrin ömrünü günlükte görüntüle
   OrderPropertyPrint("Type time:"header_widthORDER_TYPE_TIME);
   
//--- emri yerleştiren Uzman Danışmanın kimliğini günlükte görüntüle
   OrderPropertyPrint("Magic:"header_widthORDER_MAGIC);
   
//--- emrin nedenini veya kaynağını günlükte görüntüle
   OrderPropertyPrint("Reason:"header_widthORDER_REASON);
   
//--- emrin gerçekleştirilmesi sırasında emre ayarlanan pozisyon kimliğini günlükte görüntüle
   OrderPropertyPrint("Position ID:"header_widthORDER_POSITION_ID);
   
//--- ORDER_TYPE_CLOSE_BY türündeki emirler için zıt pozisyon kimliğini günlükte görüntüle
   OrderPropertyPrint("Position By ID:"header_widthORDER_POSITION_BY_ID);
  }
//+------------------------------------------------------------------+
//| Emrin tam sayı özellik değerini günlükte görüntüle               |
//+------------------------------------------------------------------+
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;
        }
      
      //--- 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%-s"wheadersvalue);
     }
  }
//+------------------------------------------------------------------+
//| 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: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Emir durumu açıklamasını geri döndür                             |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Emir hacmi yerine getirme politikasının açıklamasını geri döndür |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Emrin sona erme zamanı açıklamasını geri döndür                  |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Emir yerleştirme nedeni açıklamasını geri döndür                 |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Milisaniyeli zamanı geri döndür                                  |
//+------------------------------------------------------------------+
string TimeMscToString(const long time_mscint flags=TIME_DATE|TIME_MINUTES|TIME_SECONDS)
  {
   return(TimeToString(time_msc/1000flags) + "." + IntegerToString(time_msc %10003, '0'));
  }

Ayrıca bakınız

OrdersTotal(), OrderGetTicket(), Emir Özellikleri