HistoryOrderGetDouble

Bir emrin istenen özelliğine dönüş yapar. Emir özelliği double tipinde olmalıdır. Fonksiyonun 2 çeşidi bulunmaktadır.

1. Hemen, özellik değerine dönüş yapar.

double  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Fiş
   ENUM_ORDER_PROPERTY_DOUBLE  property_id        // Özellik tanımlayıcı
   );

2. Fonksiyonun başarı durumuna göre, 'true' veya 'false' değerine dönüş yapar. Başarı durumunda, özellik değeri, son parametreye referans ile geçirilen hedef değişkene yerleştirilir.

bool  HistoryOrderGetDouble(
   ulong                       ticket_number,     // Fiş
   ENUM_ORDER_PROPERTY_DOUBLE  property_id,       // Özellik tanımlayıcı
   double&                     double_var         // Özellik değerini burada farz ediyoruz
   );

Parametreler

ticket_number

[in]  Emir fişi.

property_id

[in]  Özellik tanımlayıcı. Bu değer 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.

Not

Alım-satım geçmişindeki emirlerle - "AraçKutusu" çubuğunun "Trade" sekmesinde görünen - bekleyen emirleri birbirine karıştırmayın. İptal edilmiş veya bir faaliyete konu olmuş emirler, "AraçKutusu" çubuğunun "Geçmiş" sekmesinde bulunabilir.

Örnek:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- işlem ve emir geçmişini talep et
   if(!HistorySelect(0, TimeCurrent()))
     {
      Print("HistorySelect() failed. Error ", GetLastError());
      return;
     }
     
//--- hesaptaki tüm geçmiş emirlerin listesinde bir döngü içerisinde
   int total=HistoryOrdersTotal();
   for(int i=0; i<total; i++)
     {
      //--- döngü indeksine göre listedeki emrin fişini al
      ulong ticket=HistoryOrderGetTicket(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)HistoryOrderGetInteger(ticket, ORDER_TYPE));
      PrintFormat("Double properties of an history order %s #%I64u:", type, ticket);
      
      //--- seçilen emrin tüm reel özelliklerini başlık altında yazdır
      HistoryOrderPropertiesDoublePrint(ticket, 16);
     }
   /*
  sonuç:
   Double properties of an history order Sell #2810847541:
   Volume initial: 0.50
   Volume current: 0.00
   Price open:     1.10491
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10491
   StopLimit:      0.00000
   Double properties of an history order Buy Limit #2811003507:
   Volume initial: 1.00
   Volume current: 1.00
   Price open:     1.10547
   StopLoss:       0.00000
   TakeProfit:     0.00000
   Price current:  1.10591
   StopLimit:      0.00000
   */
  }
//+------------------------------------------------------------------+
//| Seçilen geçmiş emrin                                             |
//| reel özelliklerini günlükte görüntüle                            |
//+------------------------------------------------------------------+
void HistoryOrderPropertiesDoublePrint(const long ticket, const uint header_width=0)
  {
   uint   w=0;
   string header="";
   double value=0;
   
//--- emir sembolünü ve bu sembolün ondalık basamak sayısını al
   string symbol = HistoryOrderGetString(ticket, ORDER_SYMBOL);
   int    digits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);
   
//--- başlık metnini ve başlık alanının genişliğini tanımla
//--- 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
   header="Volume initial:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- emir yerleştirilirken olan başlangıç hacmini al ve belirtilen başlık genişliğiyle günlükte görüntüle
   if(!HistoryOrderGetDouble(ticket, ORDER_VOLUME_INITIAL, value))
      return;
   PrintFormat("%-*s%-.2f", w, header, value);
   
//--- yerine getirilmemiş emir hacmini günlükte görüntüle
   header="Volume current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_VOLUME_CURRENT, value))
      return;
   PrintFormat("%-*s%-.2f", w, header, value);
   
//--- emirde belirtilen fiyatı günlükte görüntüle
   header="Price open:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_PRICE_OPEN, value))
      return;
   PrintFormat("%-*s%-.*f", w, header, digits, value);
   
//--- Zararı Durdur seviyesini günlükte görüntüle
   header="StopLoss:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_SL, value))
      return;
   PrintFormat("%-*s%-.*f", w, header, digits, value);
 
//--- Kârı Al seviyesini günlükte görüntüle
   header="TakeProfit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_TP, value))
      return;
   PrintFormat("%-*s%-.*f", w, header, digits, value);
 
//--- emir sembolüne göre mevcut fiyatı günlükte görüntüle
   header="Price current:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_PRICE_CURRENT, value))
      return;
   PrintFormat("%-*s%-.*f", w, header, digits, value);
 
//--- Stop Limit emri etkinleştirildiğindeki Limit emri fiyatını günlükte görüntüle
   header="StopLimit:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryOrderGetDouble(ticket, ORDER_PRICE_STOPLIMIT, value))
      return;
   PrintFormat("%-*s%-.*f", w, header, digits, value);
  }
//+------------------------------------------------------------------+
//| 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");
     }
  }

Ayrıca Bakınız

HistorySelect(), HistoryOrdersTotal(), HistoryOrderSelect(), Emir özellikleri