SymbolInfoString

Возвращает соответствующее свойство указанного символа. Существует 2 варианта функции.

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

string  SymbolInfoString(
   string  name,                      // символ
   ENUM_SYMBOL_INFO_STRING  prop_id   // идентификатор свойства
   );

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

bool  SymbolInfoString(
   string  name,                      // символ
   ENUM_SYMBOL_INFO_STRING  prop_id,  // идентификатор свойства
   string& string_var                 // сюда примем значение свойства
   );

Параметры

name

[in]  Имя символа.

prop_id

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

string_var

[out]  Переменная типа string, принимающая  значение запрашиваемого свойства. В случае неудачного выполнения информацию об ошибкe можно получить с помощью функции GetLastError():

  • 5040 – неверный строковый параметр для указания имени символа,
  • 4301 – неизвестный символ (финансовый инструмент),
  • 4302 – символ не выбран в "Обзоре рынка" (нет в списке доступных),
  • 4303 – неверный идентификатор свойства символа.

Примечание

Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с момента подключения терминала к торговому счету не было еще ни одной котировки. В таком случае запрашиваемое значение будет неопределенным.

В большинстве случаев достаточно использовать функцию SymbolInfoTick(), которая позволяет получить за один вызов значения Ask, Bid, Last, Volume и время прихода последнего тика.

Пример:

#define SYMBOL_NAME "USDJPY"
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- получим строковые данные по символу SYMBOL_NAME
   string currency_base   = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_BASE);    // Базовая валюта инструмента
   string currency_profit = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_PROFIT);  // Валюта прибыли
   string currency_margin = SymbolInfoString(SYMBOL_NAMESYMBOL_CURRENCY_MARGIN);  // Валюта, в которой вычисляются залоговые средства
   string symbol_descript = SymbolInfoString(SYMBOL_NAMESYMBOL_DESCRIPTION);      // Строковое описание символа
 
//--- создадим текст сообщения с полученными данными
   string text=StringFormat("Symbol %s:\n"+
                            "- Currency Base: %s\n"+
                            "- Currensy Profit: %s\n"+
                            "- Currency Margin: %s\n"+
                            "- Symbol Description: %s",
                            SYMBOL_NAMEcurrency_base,
                            currency_profitcurrency_margin,
                            symbol_descript);
 
//--- выведем полученные данные в журнал
   Print(text);
   /*
   Symbol USDJPY:
   - Currency BaseUSD
   - Currensy ProfitJPY
   - Currency MarginUSD
   - Symbol DescriptionUS Dollar vs Yen
   */
  }

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

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