HistoryDealGetString

Возвращает запрошенное свойство сделки. Свойство сделки должно быть типа string. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

string  HistoryDealGetString(
   ulong                      ticket_number,     // тикет
   ENUM_DEAL_PROPERTY_STRING  property_id        // идентификатор свойства
   );

2. Возвращает true или false в зависимости от успешности выполнения функции.  В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool  HistoryDealGetString(
   ulong                      ticket_number,     // тикет
   ENUM_DEAL_PROPERTY_STRING  property_id,       // идентификатор свойства
   string&                    string_var         // сюда примем значение свойства
   );

Параметры

ticket_number

[in]  Tикет сделки.

property_id

[in]  Идентификатор свойства сделки. Значение может быть одним из значений перечисления ENUM_DEAL_PROPERTY_STRING.

string_var

[out]  Переменная типа string, принимающая  значение запрашиваемого свойства.

Возвращаемое значение

Значение типа string.

Примечание

Не следует путать между собой ордера, сделки и позиции. Каждая сделка является результатом исполнения некоего ордера, каждая позиция является итоговым результатом одной или нескольких сделок.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- запрашиваем историю сделок и ордеров
   if(!HistorySelect(0TimeCurrent()))
     {
      Print("HistorySelect() failed. Error "GetLastError());
      return;
     }
 
//--- в цикле по списку сделок в истории счёта
   int total=HistoryDealsTotal();
   for(int i=0i<totali++)
     {
      //--- получаем тикет очередной сделки (сделка автоматически выбирается для получения её свойств)
      ulong ticket=HistoryDealGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- получаем тип и направление сделки и выводим заголовок для списка вещественных свойств выбранной сделки
      string type=DealTypeDescription((ENUM_DEAL_TYPE)HistoryDealGetInteger(ticketDEAL_TYPE));
      string entry=DealEntryDescription((ENUM_DEAL_ENTRY)HistoryDealGetInteger(ticketDEAL_ENTRY));
      PrintFormat("String properties of an deal %s entry %s #%I64u:"typeentryticket);
      
      //--- распечатываем под заголовком все вещественные свойства выбранной сделки
      HistoryDealPropertiesStringPrint(ticket13);
     }
   /*
   результат:
   String properties of an deal Buy entry In #2785021084:
   Symbol:      EURUSD
   Comment:     Test PositionGetString
   Extarnal ID:
   String properties of an deal Buy entry Out #2497993663:
   Symbol:      EURUSD
   Comment:     [tp 1.08639]
   Extarnal ID
   */
  }
//+------------------------------------------------------------------+
//| Выводит в журнал строковые свойства  выбранной сделки            |
//+------------------------------------------------------------------+
void HistoryDealPropertiesStringPrint(const ulong ticketconst uint header_width=0)
  {
   uint   w=0;
   string header="";
   string value ="";
   
//--- определяем текст заголовка и ширину поля заголовка
//--- если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
   header="Symbol:";
   w=(header_width==0 ? header.Length()+1 : header_width);
//--- получаем и выводим в журнал символ сделки с заголовком установленной ширины
   if(!HistoryDealGetString(ticketDEAL_SYMBOLvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- выводим в журнал комментарий к сделке
   header="Comment:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_COMMENTvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
   
//--- выводим в журнал идентификатор сделки во внешней торговой системе 
   header="Extarnal ID:";
   w=(header_width==0 ? header.Length()+1 : header_width);
   if(!HistoryDealGetString(ticketDEAL_EXTERNAL_IDvalue))
      return;
   PrintFormat("%-*s%-s"wheadervalue);
  }
//+------------------------------------------------------------------+
//| Возвращает описание типа сделки                                  |
//+------------------------------------------------------------------+
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);
     }
  }
//+------------------------------------------------------------------+
//| Возвращает описание способа изменения позиции                    |
//+------------------------------------------------------------------+
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);
     }
  }

Смотри также

HistoryDealsTotal(), HistorySelect(), HistoryDealGetTicket(), Свойства сделок