Во введении в данную главу мы уже упоминали пользовательские символы — символы, для которых котировки создаются непосредственно в терминале по команде пользователя или программным способом.
В виде пользовательского символа легко сформировать, например, синтетический инструмент на основе формулы, включающей другие символы Обзора рынка — это доступно пользователю непосредственно в интерфейсе терминала.
MQL-программа может реализовывать в MQL5 более сложные сценарии, вроде склейки разных инструментов за разные периоды, генерации рядов по заданному случайному распределению или получение данных (котировки, бары, тики) из внешних источников.
Чтобы в алгоритмах можно было отличить стандартный символ от пользовательского, в MQL5 имеется свойство SYMBOL_CUSTOM — это логический признак того, что символ является пользовательским.
Если для символа задана формула, она доступна через строковое свойство SYMBOL_FORMULA. В формулах, как известно, можно использовать имена других символов, а также математические функции и операторы. Вот несколько примеров:
Указание формулы удобно для пользователя, но, как правило, не используется из MQL-программ, поскольку они могут рассчитывать формулы непосредственно в коде, с нестандартными функциями и с большим контролем, в частности, на каждом тике, а не по таймеру 1 раз в 100мс.
Проверим работу со свойствами в скрипте SymbolFilterCustom.mq5: он выводит в журнал все пользовательские символы и их формулы (если есть).
input bool UseMarketWatch = false;
|
Ниже показан результат с единственным найденным пользовательским символом.
===== All available custom symbols =====
|