Пользовательские символы

Одна из интересных технических особенностей MetaTrader 5 заключается в поддержке пользовательских финансовых инструментов. Это символы, которые определены не на сервере брокером, а самим трейдером — непосредственно в терминале.

Пользовательские символы разрешено добавлять в список Обзора рынка наравне со стандартными символами и использовать чарты с ними привычным образом.

Наиболее простой способ создания пользовательского инструмента — указать его расчетную формулу в соответствующем свойстве. В интерфейсе терминала для этого нужно вызвать контекстное меню в окне Обзора рынка, выполнить команду Символы, и в иерархии символов, находясь в ветви Custom, нажать кнопку Создать символ. В результате откроется диалог настройки свойств нового символа. Там же в подобные инструменты можно импортировать внешнюю историю тиков (закладка Тики) или котировок (закладка Бары) из файлов. Подробно об этом рассказано в документации MetaTrader 5.

Однако наиболее полный контроль над пользовательскими символами предоставляет MQL5 API.

Для пользовательских символов полностью поддерживается группа функций по работе с Финансовыми инструментами и обзором рынка. В частности, их можно перечислить из программы с помощью стандартных функций, таких как SymbolsTotal, SymbolName, SymbolInfo-функций. Мы уже вкратце касались этой возможности в разделе Свойства пользовательских символов, и приводили пример. Отличительной чертой пользовательского символа является взведенный флаг (свойство) SYMBOL_CUSTOM.

С помощью встроенных функций можно выполнять склейки фьючерсов, генерировать случайные временные ряды с заданными характеристиками, эмулировать ренко, равнодиапазонные ("рейндж"-бары), равнообъемные (эквиобъемные) и другие нестандартные виды графиков (например, секундные таймфреймы). Также, в отличие от импорта статических файлов, программно-управляемые пользовательские символы способны в реальном времени формироваться из данных веб-сервисов, таких как криптовалютные биржи. Об интеграции MQL-программ с Интернет разговор еще впереди, но об этой возможности нельзя не упомянуть.

Пользовательский символ легко задействовать для проверки стратегий в тестере или как дополнительный способ технического анализа. Но есть в данной технологии и свои ограничения.

Из-за того, что пользовательские символы определены в терминале, а не на сервере, ими невозможно торговать онлайн. В частности, если вы создадите график ренко, торговые стратегии на его основе нужно будет адаптировать тем или иным образом, чтобы торговые сигналы и торговые операции фактически были разведены по разным символам: искусственному пользовательскому и реальному брокерскому. Мы рассмотрим пару способов решения проблемы.

Кроме того, учитывая такую специфику платформы, что длительность всех баров одного таймфрейма одинакова, любая эмуляция разнопериодных баров (ренко, эквиобъемных и т.д.) основывается, как правило, на меньшем из доступных таймфреймов M1 и не обеспечивает полную временную синхронизацию с реальностью. Иными словами, тики, принадлежащие такому бару, вынуждены иметь искусственное время внутри 60 секунд, даже если "кирпич" ренко или бар заданного объема требовал в реальности гораздо большего времени на свое формирование. В противном случае, если бы мы проставляли тикам реальное время, они сформировали бы следующие бары M1, нарушая правила ренко или эквиобъемности. Более того, возможны ситуации, когда "кирпич" ренко или другой искусственный бар должен быть создан с меньшим промежутком времени, чем 1 минута от предыдущего бара (например, при повышенной быстрой волатильности). В таких случаях в котировках пользовательского инструмента потребуется менять время исторических баров (сдвигать их влево "задним числом") или проставлять новым барам будущее время (что крайне нежелательно). Данную проблему решить в общем виде в рамках технологии пользовательских символов нельзя.