- Получение списков доступных символов и Обзора рынка
- Редактирование списка Обзора рынка
- Проверка символа на существование
- Проверка актуальности данных по символу
- Получение последнего тика по символу
- Расписания торговых и котировочных сессий
- Маржинальные коэффициенты по символу
- Обзор функций получения свойств символа
- Проверка состояния символа
- Тип цены для построения графиков по символу
- Базовая, котировочная и маржинальная валюты инструмента
- Точность представления и шаг изменения цен
- Разрешенные объемы торговых операций
- Разрешения на торговлю
- Торговые условия и режимы исполнения приказов по символу
- Маржинальные требования
- Правила истечения сроков отложенных ордеров
- Спреды и отступы приказов от текущей цены
- Получение величины свопов
- Текущая рыночная информация (тик)
- Описательные свойства символов
- Глубина стакана цен
- Свойства пользовательских символов
- Специфические свойства (биржа, срочный рынок, облигации)
Описательные свойства символов
Платформа предоставляет для MQL-программ группу текстовых свойств, описывающих важные качественные характеристики. Например, при разработке индикаторов или торговых стратегий на основе корзины финансовых инструментов может потребоваться отобрать символы по стране происхождения, сектору экономики или названию базового актива (если инструмент производный).
Идентификатор |
Описание |
---|---|
SYMBOL_BASIS |
Имя базового актива для производного инструмента |
SYMBOL_CATEGORY |
Название категории, к которой принадлежит финансовый инструмент |
SYMBOL_COUNTRY |
Страна, к которой отнесен финансовый инструмент |
SYMBOL_SECTOR_NAME |
Сектор экономики, к которому относится финансовый инструмент |
SYMBOL_INDUSTRY_NAME |
Отрасль экономики или вид промышленности, к которой относится финансовый инструмент |
SYMBOL_BANK |
Источник текущей котировки |
SYMBOL_DESCRIPTION |
Строковое описание символа |
SYMBOL_EXCHANGE |
Название биржи или торговой площадки, на которой торгуется символ |
SYMBOL_ISIN |
Уникальный 12-разрядный буквенно-цифровой код в системе международных идентификационных кодов ценных бумаг — ISIN (International Securities Identification Number) |
SYMBOL_PAGE |
Адрес интернет страницы с информацией по символу |
SYMBOL_PATH |
Путь в дереве символов |
Другой случай, когда программа может применить анализ этих свойств, возникает при поиске курса пересчета из одной валюты в другую. Мы уже знаем, как найти инструмент с необходимым сочетанием базовой и котировочной валюты, но сложность в том, что таких инструментов может найтись несколько. Тогда и может помочь чтение свойств вроде SYMBOL_SECTOR_NAME (нужно искать "Currency" или синоним — уточните в спецификации вашего брокера) или SYMBOL_PATH.
Путь SYMBOL_PATH содержит всю иерархию папок в каталоге символов, внутри которых содержится конкретный символ: имена папок разделены обратной косой чертой ('\\') по аналогии с файловой системой. Последний элемент пути — это непосредственно название символа.
Для некоторых строковых свойств имеются аналоги среди целочисленных свойств. В частности, вместо SYMBOL_SECTOR_NAME вы можете использовать свойство SYMBOL_SECTOR, которое возвращает элемент перечисления ENUM_SYMBOL_SECTOR со всеми поддерживаемыми секторами. По аналогии для SYMBOL_INDUSTRY_NAME имеется похожее свойство SYMBOL_INDUSTRY с типом перечисления ENUM_SYMBOL_INDUSTRY.
При необходимости MQL-программа может выяснить даже цвет фона, используемого при отображении символа в Обзоре рынка, — достаточно прочитать свойство SYMBOL_BACKGROUND_COLOR. Это позволит тем программам, которые создают на графике собственный интерфейс с помощью графических объектов (диалоговые окна, списки и пр.), сделать его унифицировано с родными элементами управления терминала.
Рассмотрим пример скрипта SymbolFilterDescription.mq5, который выводит для символов Обзора рынка 4 предопределенных текстовых свойства. Первое из них — SYMBOL_DESCRIPTION (не путать с названием самого символа), и именно по нему будет выполняться сортировка результирующего списка. Остальные три для ознакомления: SYMBOL_SECTOR_NAME, SYMBOL_COUNTRY, SYMBOL_PATH. Все значения заполняются специфическим образом у каждого брокера (могут быть разночтения для одного и того же тикера).
Кроме того, мы оставили за кадром, что в нашем классе SymbolFilter на самом деле реализована особая перегрузка метода equal для сравнения строк: она поддерживает поиск на вхождение подстроки с шаблоном, в котором символом подстановки '*' обозначается 0 или несколько произвольных символов. Например, "*ian*" найдет все символы, в которых встречается подстрока "ian" (в любом месте), а "*Index" — только строки, оканчивающиеся на "Index".
Такая возможность напоминает поиск по подстроке в самом диалоге Символы, доступном пользователям. Правда там не нужно указывать подстановочный символ, потому что всегда ищется подстрока. В алгоритме, с которым можно ознакомиться в исходных кодах (SymbolFilter.mqh), мы оставили возможность искать либо полное соответствие (символов '*' нет), либо подстроку (есть хотя бы одна звездочка).
Сравнение делается с учетом регистра. При необходимости легко адаптировать код для сравнения без различения строчных и прописных букв.
Учитывая новую возможность, определим входную переменную для искомой строки в описании символов. Если переменная пуста, будут выводиться все символы Обзора рынка.
input string SearchPattern = ""; |
Далее все привычно.
void OnStart()
|
Вот возможный вариант списка (с сокращениями).
===== Text fields for symbols (16) =====
|
Если введем строку поиска "*ian*" во входную переменную SearchPattern, получим следующий результат.
===== Text fields for symbols (3) =====
|