- Получение списков доступных символов и Обзора рынка
- Редактирование списка Обзора рынка
- Проверка символа на существование
- Проверка актуальности данных по символу
- Получение последнего тика по символу
- Расписания торговых и котировочных сессий
- Маржинальные коэффициенты по символу
- Обзор функций получения свойств символа
- Проверка состояния символа
- Тип цены для построения графиков по символу
- Базовая, котировочная и маржинальная валюты инструмента
- Точность представления и шаг изменения цен
- Разрешенные объемы торговых операций
- Разрешения на торговлю
- Торговые условия и режимы исполнения приказов по символу
- Маржинальные требования
- Правила истечения сроков отложенных ордеров
- Спреды и отступы приказов от текущей цены
- Получение величины свопов
- Текущая рыночная информация (тик)
- Описательные свойства символов
- Глубина стакана цен
- Свойства пользовательских символов
- Специфические свойства (биржа, срочный рынок, облигации)
Редактирование списка Обзора рынка
С помощью функции SymbolSelect разработчик MQL-программы может добавить конкретный символ в Обзор рынка или удалить оттуда.
bool SymbolSelect(const string name, bool select)
Параметр name содержит имя символа, над которым выполняется действие. В зависимости от значения параметра select символ добавляется в Обзор рынка (true) или удаляется из него. В именах символов учитывается регистр: например, "EURUSD.m" не равно "EURUSD.M".
Функция возвращает признак успеха (true) или ошибки (false). Код ошибки можно узнать в _LastError.
Символ не может быть убран, если есть открытые графики с этим символом или открытые позиции по этому символу. Кроме того, нельзя удалить символ, который явным образом использован в формуле расчета синтетического (пользовательского) инструмента, добавленного в Обзор рынка.
Следует иметь в виду, что даже если по символу нет открытых графиков и позиций, он может опосредованно использоваться MQL-программами: например, они могут читать его историю котировок или тиков. Удаление такого символа может привести к проблемам в этих программах.
Следующий скрипт — SymbolRemoveUnused.mq5 — способен скрыть все явно неиспользуемые символы, поэтому рекомендуется проверять его на демо-счете или предварительно сохранить текущий набор символов через контекстное меню.
#include <MQL5Book/MqlError.mqh>
|
После того как пользователь даст согласие на анализ списка символов, программа пытается последовательно скрыть каждый символ, вызывая SymbolSelect(s, false). Это удается только для неиспользуемых явно инструментов. Перебор символов производится в обратном порядке, чтобы не нарушать индексацию. Все успешно удаленные символы собираются в массиве removed. В журнал выводится статистика и сам массив.
Если Обзор рынка был изменен, пользователю затем предоставляется возможность восстановить в нем все удаленные символы, вызвав в цикле SymbolSelect(removed[i], true).
if(r > 0)
|
Вот каким может быть результат в журнале.
Can't remove 'EURUSD': MARKET_SELECT_ERROR (4305)
|
Примите к сведению, что хотя восстановление символов и производится в исходном порядке, в каком они были в Обзоре рынка относительно друг друга, добавление происходит в конец списка, после оставшихся символов. Таким образом, все "занятые" символы окажутся в начале списка, а восстановленные — после них. Такова специфика SymbolSelect: добавление символа всегда производится в конец списка, то есть вставить символ в конкретную позицию нельзя — перестановка элементов списка доступна только для ручного редактирования.