OrderGetString

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

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

string  OrderGetString(
   ENUM_ORDER_PROPERTY_STRING  property_id        // идентификатор свойства
   );

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

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

Параметры

property_id

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

string_var

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

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

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

Примечание

Не следует путать между собой действующие отложенные ордера и позиции, которые также отображаются на вкладке "Торговля" в панели "Инструменты" клиентского терминала.

При "неттинговом" учете позиций (ACCOUNT_MARGIN_MODE_RETAIL_NETTING и ACCOUNT_MARGIN_MODE_EXCHANGE) по каждому символу в любой момент времени может быть открыта только одна позиция, которая является результатом одной или более сделок. Не следует путать между собой позиции и действующие отложенные ордера, которые также отображаются на вкладке "Торговля" в панели "Инструменты".

При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно может быть открыто несколько позиций.

Для гарантированного получения свежих данных об ордере рекомендуется вызывать функцию OrderSelect() непосредственно перед обращением за ними.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- в цикле по списку всех ордеров на счёте
   int total=OrdersTotal();
   for(int i=0i<totali++)
     {
      //--- получаем тикет ордера в списке по индексу цикла
      ulong ticket=OrderGetTicket(i);
      if(ticket==0)
         continue;
      
      //--- получаем тип ордера и выводим заголовок для списка строковых свойств выбранного ордера
      string type=OrderTypeDescription((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE));
      PrintFormat("String properties of an active pending order %s #%I64u:"typeticket);
      
      //--- распечатываем под заголовком все строковые свойства выбранного ордера
      OrderPropertiesStringPrint(13);
     }
   /*
   результат:
   String properties of an active pending order Sell Limit #2813781342:
   Comment:     Test OrderGetString
   Symbol:      EURUSD
   External ID
   */
  }
//+------------------------------------------------------------------+
//| Выводит в журнал строковые свойства выбранного ордера            |
//+------------------------------------------------------------------+
void OrderPropertiesStringPrint(const uint header_width=0)
  {
//--- выводим в журнал комментарий
   OrderPropertyPrint("Comment:"header_widthORDER_COMMENT);
   
//--- выводим в журнал символ, по которому выставлен ордер
   OrderPropertyPrint("Symbol:"header_widthORDER_SYMBOL);
   
//--- выводим в журнал идентификатор ордера во внешней системе 
   OrderPropertyPrint("External ID:"header_widthORDER_EXTERNAL_ID);
  }
//+------------------------------------------------------------------+
//| Выводит в журнал значение строкового свойства ордера             |
//+------------------------------------------------------------------+
void OrderPropertyPrint(const string headeruint header_widthENUM_ORDER_PROPERTY_STRING property)
  {
   string value="";
   if(!OrderGetString(propertyvalue))
      PrintFormat("Cannot get property %s, error=%d"EnumToString(property), GetLastError());
   else
     {
      //--- если ширина заголовка передана в функцию равной нулю, то шириной будет размер строки заголовка + 1
      uint w=(header_width==0 ? header.Length()+1 : header_width);
      PrintFormat("%-*s%-s"wheadervalue);
     }
  }
//+------------------------------------------------------------------+
//| Возвращает описание типа ордера                                  |
//+------------------------------------------------------------------+
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);
     }
  }

Смотри также

OrdersTotal(), OrderGetTicket(), Свойства ордеров