- Получение списков доступных символов и Обзора рынка
- Редактирование списка Обзора рынка
- Проверка символа на существование
- Проверка актуальности данных по символу
- Получение последнего тика по символу
- Расписания торговых и котировочных сессий
- Маржинальные коэффициенты по символу
- Обзор функций получения свойств символа
- Проверка состояния символа
- Тип цены для построения графиков по символу
- Базовая, котировочная и маржинальная валюты инструмента
- Точность представления и шаг изменения цен
- Разрешенные объемы торговых операций
- Разрешения на торговлю
- Торговые условия и режимы исполнения приказов по символу
- Маржинальные требования
- Правила истечения сроков отложенных ордеров
- Спреды и отступы приказов от текущей цены
- Получение величины свопов
- Текущая рыночная информация (тик)
- Описательные свойства символов
- Глубина стакана цен
- Свойства пользовательских символов
- Специфические свойства (биржа, срочный рынок, облигации)
Проверка состояния символа
Ранее мы рассмотрели несколько функций, связанных с состоянием символа. Напомним, что для проверки существования символа используется — SymbolExist, а для включения или исключения из списка Обзора рынка — SymbolSelect. Среди свойств символа есть несколько аналогичных по назначению флагов, использование которых имеет как плюсы, так и минусы по сравнению с вышеупомянутыми функциями.
В частности, свойство SYMBOL_SELECT позволяет узнать, выбран ли указанный символ в Обзоре рынка, в то время как функция SymbolSelect меняет это свойство.
Функция SymbolExist, в отличие от похожего свойства SYMBOL_EXIST, дополнительно заполняет выходную переменную признаком того, что символ является пользовательским. При запросе свойств потребовалось бы анализировать эти два атрибута по отдельности, так как признак пользовательского символа хранится в другом свойстве SYMBOL_CUSTOM. Однако в некоторых случаях в программе может быть нужно лишь одно свойство, и тогда возможность отдельного запроса становится плюсом.
Все флаги представляют собой логические значения, получаемые через функцию SymbolInfoInteger.
Идентификатор |
Описание |
---|---|
SYMBOL_EXIST |
Признак того, что символ с заданным именем существует |
SYMBOL_SELECT |
Признак того, что символ выбран в Обзор рынка |
SYMBOL_VISIBLE |
Признак того, что заданный символ отображается в Обзоре рынка |
Особый интерес представляет SYMBOL_VISIBLE. Дело в том, что некоторые символы (как правило, это кросс-курсы, которые необходимы для расчёта маржинальных требований и прибыли в валюте депозита) выбираются в Обзор рынка автоматически и при этом не отображаются в списке, видимом пользователю. Для отображения такие символы должны быть выбраны явно (пользователем или программно). Таким образом, именно свойство SYMBOL_VISIBLE позволяет определить, виден ли символ в окне: оно может оказаться равным false у некоторых элементов списка, полученного с помощью пары функций SymbolsTotal и SymbolName с параметром selected равным true.
Рассмотрим простой скрипт (SymbolInvisible.mq5), который ищет в терминале неявным образом выбранные символы, то есть такие, которые не отображаются в Обзоре рынка (SYMBOL_VISIBLE сброшен), но тем не менее для них SYMBOL_SELECT равно true.
#define PUSH(A,V) (A[ArrayResize(A, ArraySize(A) + 1) - 1] = V)
|
Попробуйте откомпилировать и запустить скрипт на разных счетах. Ситуация, когда символ выбран неявным образом встречается не всегда. Например, если в Обзоре рынка выбраны тикеры российских голубых фишек, которые котируются в рублях, а торговый счет в валюте (например, доллары или евро, но не рубли), то символ "USDRUB" будет выбран автоматически. Разумеется, при этом предполагается, что он не был ранее добавлен в Обзор рынка явным образом. Тогда получим в журнале результат такого вида:
Symbols: total=50681, selected=49, implicit=1
|