HistoryDealSelect

Uygun fonksiyonlarla yapılacak daha sonraki çağrılar için geçmişteki bir işlemi seçer. Fonksiyon başarıyla tamamlanmışsa 'true', aksi durumda 'false' dönüşü yapar. Hata ile ilgili daha fazla bilgi için GetLastError() fonksiyonunu çağırın.

bool  HistoryDealSelect(
   ulong  ticket      // İşlem fişi
   );

Parametreler

ticket

[in]  İşlem fişi.

Dönüş değeri

Başarılı ise 'true' değerine, aksi durumda 'false' değerine dönüş yapar.

Not

Emirleri, işlemleri ve pozisyonları birbiriyle karıştırmayın. İşlemler, bir emrin işlenmesinin sonucudur. Her pozisyon, bir veya daha fazla işlemin sonuç özetidir.

HistoryDealSelect() fonksiyonu, bir MQL5 programı içerisinde, referans için mevcut işlemlerin listesini temizler ve başarı durumunda tek bir işlemi kopyalar. HistorySelect() fonksiyonu ile seçilmiş tüm işlemleri incelemeniz gerekiyorsa, HistoryDealGetTicket() fonksiyonunu kullanmanız daha iyi olacaktır.

Örnek:

#define   TICKET    2620919264   // bilinen herhangi bir işlemin fişi, örneğin terminal hesap geçmişinden
 
long      ExtTicket=TICKET;      // belirtilen fişi, komut dosyasındaki sınama için makro ikamesinden değişkene ayarla
                                 // veya Uzman Danışmandaki OnTradeTransaction() işleyicisinde işlemleri işle:
//+------------------------------------------------------------------+
//| Expert TradeTransaction handler                                  |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransactiontrans,
                        const MqlTradeRequestrequest,
                        const MqlTradeResultresult)
  {
   //--- finansal hareket geçmişe bir işlem eklemeyse
   if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
     {
      //--- fişe göre bir işlem seç, verilerini al ve işlem açıklamasını günlükte görüntüle
      HistoryDealSelectProcess(trans.deal);
     }
  }
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- fişe göre bir işlem seç, verilerini al ve işlem açıklamasını günlükte görüntüle
   HistoryDealSelectProcess(ExtTicket);
   /*
   sonuç:
   (Position ID #2645974677EURUSD Deal Out 0.10 Buy #2620919264 by order #2646028969 at 1.091782024.07.15 18:16:32.570
   */
  }
//+------------------------------------------------------------------+
//| Fişe göre bir işlem seç ve işlem verilerini günlüğe yazdır       |
//+------------------------------------------------------------------+
void HistoryDealSelectProcess(const ulong deal_ticket)
  {
//--- deal_ticket içinde belirtilen fişe göre geçmiş bir işlem seç
   ResetLastError();
   if(!HistoryDealSelect(deal_ticket))
     {
      PrintFormat("HistoryDealSelect(%I64u) failed. Error %d"deal_ticketGetLastError());
      return;
     }
 
//--- bir işlem başarıyla seçilirse, verilerini al ve işlem açıklamasını günlükte görüntüle
   ENUM_DEAL_TYPE    deal_type  = (ENUM_DEAL_TYPE)HistoryDealGetInteger(ExtTicketDEAL_TYPE);
   ENUM_DEAL_ENTRY   deal_entry = (ENUM_DEAL_ENTRY)HistoryDealGetInteger(ExtTicketDEAL_ENTRY);
   ENUM_DEAL_REASON  deal_reason= (ENUM_DEAL_REASON)HistoryDealGetInteger(ExtTicketDEAL_REASON);
   long              deal_time  = HistoryDealGetInteger(ExtTicketDEAL_TIME_MSC);
   long              deal_order = HistoryDealGetInteger(ExtTicketDEAL_ORDER);
   long              deal_pos_idHistoryDealGetInteger(ExtTicketDEAL_POSITION_ID);
   string            deal_symbolHistoryDealGetString(ExtTicketDEAL_SYMBOL);
   double            deal_volumeHistoryDealGetDouble(ExtTicketDEAL_VOLUME);
   double            deal_price = HistoryDealGetDouble(ExtTicketDEAL_PRICE);
   int               digits     = (int)SymbolInfoInteger(deal_symbolSYMBOL_DIGITS);
   
   PrintFormat("(Position ID #%I64d) %s Deal %s %.2f %s #%I64u by order #%I64d at %.*f, %s",
               deal_pos_iddeal_symbolDealEntryDescription(deal_entry), deal_volume,
               DealTypeDescription(deal_type), ExtTicketdeal_orderdigitsdeal_price,
               TimeMscToString(deal_time));
  }
//+------------------------------------------------------------------+
//| İşlem türü açıklamasını geri döndür                              |
//+------------------------------------------------------------------+
string DealTypeDescription(const ENUM_DEAL_TYPE type)
  {
   switch(type)
     {
      case DEAL_TYPE_BUY                     :  return("Buy");
      case DEAL_TYPE_SELL                    :  return("Sell");
      case DEAL_TYPE_BALANCE                 :  return("Balance");
      case DEAL_TYPE_CREDIT                  :  return("Credit");
      case DEAL_TYPE_CHARGE                  :  return("Additional charge");
      case DEAL_TYPE_CORRECTION              :  return("Correction");
      case DEAL_TYPE_BONUS                   :  return("Bonus");
      case DEAL_TYPE_COMMISSION              :  return("Additional commission");
      case DEAL_TYPE_COMMISSION_DAILY        :  return("Daily commission");
      case DEAL_TYPE_COMMISSION_MONTHLY      :  return("Monthly commission");
      case DEAL_TYPE_COMMISSION_AGENT_DAILY  :  return("Daily agent commission");
      case DEAL_TYPE_COMMISSION_AGENT_MONTHLY:  return("Monthly agent commission");
      case DEAL_TYPE_INTEREST                :  return("Interest rate");
      case DEAL_TYPE_BUY_CANCELED            :  return("Canceled buy deal");
      case DEAL_TYPE_SELL_CANCELED           :  return("Canceled sell deal");
      case DEAL_DIVIDEND                     :  return("Dividend operations");
      case DEAL_DIVIDEND_FRANKED             :  return("Franked (non-taxable) dividend operations");
      case DEAL_TAX                          :  return("Tax charges");
      default                                :  return("Unknown deal type: "+(string)type);
     }
  }
//+------------------------------------------------------------------+
//| Pozisyon değişim yöntemini geri döndür                           |
//+------------------------------------------------------------------+
string DealEntryDescription(const ENUM_DEAL_ENTRY entry)
  {
   switch(entry)
     {
      case DEAL_ENTRY_IN      :  return("In");
      case DEAL_ENTRY_OUT     :  return("Out");
      case DEAL_ENTRY_INOUT   :  return("Reverce");
      case DEAL_ENTRY_OUT_BY  :  return("Out by");
      case DEAL_ENTRY_STATE   :  return("Status record");
      default                 :  return("Unknown deal entry: "+(string)entry);
     }
  }
//+------------------------------------------------------------------+
//| 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

HistorySelect(), HistoryDealGetTicket(), İşlem Özellikleri