Создание и тестирование пользовательских символов в MetaTrader 5

4 сентября 2017, 09:53
MetaQuotes Software Corp.
60
3 608

Появление пользовательских символов в MetaTrader 5 открывает новые возможности для разработки торговых систем и анализа любых финансовых рынков. Теперь трейдеры могут строить графики и тестировать торговые стратегии на неограниченном количестве финансовых инструментов. Для этого достаточно создать свой собственный символ на основе тиковой или минутной истории, и вы можете тестировать на нем любого торгового робота из Маркета или библиотеки бесплатных кодов.


Создание пользовательского символа

Покажем, как создать свой собственный символ на основе уже существующего в Обзоре рынка. Откройте правой кнопкой мышки окно Символы и выберите тот, на основе которого вы хотите создать свой собственный.

После нажатии кнопки "Создать символ" вам останется только задать имя пользовательского символа и, при необходимости, изменить нужные свойства в Спецификации контракта.

Все пользовательские символы помещаются в дереве Символов в отдельную директорию <Custom> и всегда находятся в своем разделе, независимо от брокера, к которому вы в данный момент подключены. Сами ценовые данные пользовательских символов сохраняются в отдельном каталоге Custom, вне каталогов конкретных торговых серверов:

C:\Users\[windows account]\AppData\Roaming\MetaQuotes\Terminal\[instance id]\bases\Custom

В этом еще один плюс создания собственного символа — вы можете просто копировать нужные вам символы от каждого брокера в свою пользовательскую группу. Удалять пользовательский символ можно только в том случае, если по нему нет открытых графиков и он не присутствует в Обзоре рынка. Одним словом, всё как у настоящих символов.


Настройка собственного символа

Вы можете менять точность котировок, размер контракта, задавать валюты инструмента, способ расчетов и все остальные свойства, которые влияют на результаты тестирования торговой стратегии по пользовательскому символу.


Импорт истории

После создания собственного инструмента необходимо добавить для него историю котировок. Покажем сначала как создать историю на основе уже существующего инструмента. В окне Символы выбираем вкладку Бары или Тики, в зависимости от того, в каком виде мы хотим подготовить историю. Делаем запрос за нужный период и производим Экспорт.  Для получения баров необходимо выбрать таймфрейм M1, так как вся история в MetaTrader 5 строится на минутных данных.


Экспорт производится в виде текстового CSV-файла с именем вида EURUSD_M1_201701020000_201707251825.csv, которое содержит имя символа, название таймфрейма и границы экспортированной истории с точностью до минуты. Вот как выглядит формат при экспорте баров:

<DATE>	        <TIME>	        <OPEN>	<HIGH>	<LOW>	<CLOSE>	<TICKVOL><VOL>	     <SPREAD>
2017.01.02	00:03:00	1.05141	1.05141	1.05141	1.05141	6	15000000	118
2017.01.02	00:04:00	1.05141	1.05141	1.05141	1.05141	2	5000000	        112
2017.01.02	00:05:00	1.05158	1.05158	1.05148	1.05158	10	17000000	101
2017.01.02	00:06:00	1.05148	1.05158	1.05148	1.05158	7	13000000	101

При экспорте тиковой истории объем CSV-файла существенно возрастает, и его формат содержит уже информацию о каждом тике с точностью до миллисекунды. На основе этих данных терминал сформирует минутную историю, по которой потом будут строиться все остальные таймфреймы.

<DATE>          <TIME>          <BID>   <ASK>   <LAST>  <VOLUME>
2017.07.03      00:03:47.212    1.14175 1.14210 0.00000 0       
2017.07.03      00:03:47.212    1.14168 1.14206 0.00000 0       
2017.07.03      00:03:47.717    1.14175 1.14206 0.00000 0       
2017.07.03      00:03:54.241    1.14175 1.14205 0.00000 0       
2017.07.03      00:03:57.982    1.14165 1.14201 0.00000 0       
2017.07.03      00:04:07.795    1.14175 1.14201 0.00000 0       
2017.07.03      00:04:55.432    1.14164 1.14200 0.00000 0       
2017.07.03      00:14:33.743    1.14173 1.14203 0.00000 0       
2017.07.03      00:14:33.743    1.14173 1.14201 0.00000 0       
2017.07.03      00:16:44.901    1.14174 1.14195 0.00000 0       

Следовательно, при создании истории для собственного инструмента из каких-либо сторонних источников вам необходимо подготовить данные в соответствии с показанными форматами.

Для импорта истории делаем аналогичные шаги — в папке Custom\<Пользовательская_группа> находим наш пользовательский символ EURUSD_my, переходим на вкладку Тики, выбираем нужный CSV-файл и жмем кнопку "Импортировать тики" (для импорта баров всё аналогично).


После импорта истории вы можете её редактировать — добавлять, удалять или изменять любые бары и тики.

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


Тестирование торговых стратегий на пользовательском символе

Многопоточный тестер стратегий MetaTrader 5 позволяет тестировать на реальных тиках стратегии, торгующие на многих финансовых инструментах. Воспользуйтесь всеми его преимуществами для тестирования стратегий на собственных символах. Для этого достаточно импортировать качественную минутную (а лучше тиковую) историю и настроить свойства для каждого инструмента, необходимого для детального воссоздания торгового окружения. После этого просто выберите нужного эксперта и задайте настройки тестирования. Всё делается так же, как и с обычными торговыми символами, которые предоставляет ваш брокер.

При этом важно обеспечить для тестера все необходимые символы, которые могут понадобиться для расчета маржинальных требований и прибыли в валюте вашего торгового счета. При расчете маржи и прибыли тестер стратегий автоматически использует доступные кросс-курсы. Например, мы создали собственный символ AUDCAD.custom с типом расчета маржи Forex, и валюта нашего счета — USD. Тогда на основе имени форексного инструмента тестер ищет необходимые символы в следующем порядке:

  1. сначала ищутся символы вида AUDUSD.custom (для расчёта маржи) и USDCAD.custom (для расчёта прибыли по сделкам)
  2. затем, если какого-то из этих инструментов нет, ищется первый символ, который соответствует по имени необходимым валютным парам  — AUDUSD и USDCAD соответственно. Например, найдены AUDUSD.b и USDCAD.b — значит, именно курсы этих инструментов будут использоваться при расчетах маржи и прибыли.
Для инструментов с остальными типами расчета маржи (CFD, Futures, Stock Exchange) необходимо наличие валютной пары для пересчета валюты инструмента в валюту депозита. Например, мы создали собственный символ с валютой прибыли и валютой маржи, выраженными в британских функтах (GBP), а валютой депозита является швейцарский франк (CHF). Тогда поиск инструментов для тестирования ведется в следующем порядке:
  1. Проверяется наличие торгового инструмента, соответствующего валютной паре GBPCHF (GBP vs CHF).
  2. Если он отсутствует, то ищется первый торговый инструмент, который соответствует по имени валютной паре GBPCHF, например GBPCHF.b или GBPCHF.def.

При тестировании на собственных инструментах убедитесь, что на торговом счете доступны все необходимые валютные пары для расчетов. В противном случае расчет финансовых результатов и залоговых требований при тестировании будет невозможен.


Оптимизация стратегий на пользовательском символе в локальной сети

Для оптимизации торговых стратегий на пользовательских символах можно помимо собственных агентов задействовать агентов из локальной сети и удаленных агентов. Таким образом, вы сможете использовать еще одно преимущество тестера стратегий MetaTrader 5 и сократить время на поиски оптимальных параметров вашей торговой системы.

Использование MQL5 Cloud Network для оптимизации на собственных символах не разрешено. Это связано с тем, что на компьютерах разных трейдеров могут находиться пользовательские символы с одинаковыми именами, но разными ценовыми историями. Это может привести не только к расхождению результатов тестирования между отдельными агентами сети, но и к массовым перезакачкам и синхронизации исторических данных, создавая избыточный интернет-трафик.


Функции для работы с пользовательскими символами

Работать с собственными символами можно и помощью языка MQL5,  для этого служат функции из раздела Пользовательские символы. С помощью MQL5-программы можно быстро создавать нужные вам финансовые инструменты с заданными свойствами на основе данных из сторонних источников. Таким образом, вы можете автоматизировать и рутинные операции по сбору и подготовке исторических данных для любых символов, а также создавать свои собственные индексы и другие производные инструменты с возможностью проверки в тестере стратегий MetaTrader 5.

Функция

Действие

CustomSymbolCreate

Создает пользовательский символ с указанным именем в указанной группе

CustomSymbolDelete

Удаляет пользовательский символ с указанным именем

CustomSymbolSetInteger

Устанавливает для пользовательского символа значение свойства целочисленного типа

CustomSymbolSetDouble

Устанавливает для пользовательского символа значение свойства вещественного типа

CustomSymbolSetString

Устанавливает для пользовательского символа значение свойства строкового типа

CustomSymbolSetMarginRate

Устанавливает для пользовательского символа коэффициенты взимания маржи в зависимости от типа и направления ордера

CustomSymbolSetSessionQuote

Устанавливает время начала и время окончания  указанной котировочной сессии для указанных символа и дня недели

CustomSymbolSetSessionTrade

Устанавливает время начала и время окончания  указанной торговой сессии для указанных символа и дня недели

CustomRatesDelete

Удаляет все бары в указанном временном интервале из ценовой истории пользовательского инструмента

CustomRatesReplace

Полностью заменяет ценовую историю пользовательского инструмента в указанном временном интервале данными из массива типа  MqlRates

CustomRatesUpdate

Добавляет в историю пользовательского инструмента отсутствующие бары и заменяет существующие бары данными из массива типа  MqlRates

CustomTicksDelete

Удаляет все тики в указанном временном интервале из ценовой истории пользовательского инструмента

CustomTicksReplace

Полностью заменяет ценовую историю пользовательского инструмента в указанном временном интервале данными из массива типа  MqlTick

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


Тестируйте торговые идеи на любых символах в MetaTrader 5!

Для алготрейдеров платформа MetaTrader 5 предлагает самые широкие возможности. Вот лишь некоторые из них:

Трейдерам доступны все преимущества терминала MetaTrader 5 даже на тех инструментах, которых еще нет у брокера. Создавайте свои собственные символы и проверяйте торговые стратегии на любых финансовых рынках!

Последние комментарии | Перейти к обсуждению на форуме трейдеров (60)
Maxim Romanov
Maxim Romanov | 16 июл 2018 в 20:48
Если создавать кастомные символы через формулу, то в формуле можно как-то указать, чтобы бралась цена close предыдущего бара или несколько баров назад? К примеру я хочу взять цену eurusd 5 баров назад и прибавить к цене gbpusd 3 бара назад.
Ivan Titov
Ivan Titov | 3 авг 2018 в 19:52
Прошу пояснить, почему удаляются тики пользовательского символа, записанные с помощью CustomTicksAdd() или CustomTicksReplace(),  после перезагрузки терминала.
fxsaber
fxsaber | 3 авг 2018 в 19:54
Ivan Titov:
Прошу пояснить, почему удаляются тики пользовательского символа, записанные с помощью CustomTicksAdd() или CustomTicksReplace(),  после перезагрузки терминала.

1881 build, вроде, без этого бага.

Ivan Titov
Ivan Titov | 3 авг 2018 в 21:02
fxsaber:

1881 build, вроде, без этого бага.

Как раз на 1881 удаляются

fxsaber
fxsaber | 4 авг 2018 в 10:17
Ivan Titov:

Как раз на 1881 удаляются

Не проверял это решение:

Forum on trading, automated trading systems and testing trading strategies

Imported Tick Data is Removed on Start-up

ludoz, 2018.08.04 01:44

For everyone that need a solution, here is one:

Go to the folder where ticks are saved and remove the permissions to delete the folder or the file inside of it.

  • Right click on the folder (for me the folder is in C:\Program Files\MetaTrader 5\Bases\Custom\ticks) and then Properties
  • Security tab
  • Advanced
  • Edit authorizations
  • Select the proper user or user group
  • Edit the authorizations as needed. I removed the permission to Delete the folder or the files inside it

Problem solved..

Оптимизируем стратегию по графику баланса и сравниваем результаты с критерием "Balance + max Sharpe Ratio" Оптимизируем стратегию по графику баланса и сравниваем результаты с критерием "Balance + max Sharpe Ratio"

Рассмотрен еще один пользовательский критерий оптимизации торговых стратегий, основанный на анализе графика баланса. Для этого использовалось вычисление линейной регрессии с помощью функции из библиотеки ALGLIB.

Оценка риска в последовательности сделок с одним активом Оценка риска в последовательности сделок с одним активом

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

Треугольный арбитраж Треугольный арбитраж

Статья посвящена популярному методу торговли - треугольному арбитражу. Тема разобрана максимально подробно, рассмотрены положительные и отрицательные стороны стратегии, разработан готовый код эксперта.

Нечеткая логика в торговых стратегиях Нечеткая логика в торговых стратегиях

В статье рассматривается пример использования нечеткой логики для построения простой торговой системы, с использованием библиотеки Fuzzy. Предложены варианты улучшения системы путем сочетания нечеткой логики, генетических алгоритмов и нейронных сетей.