Скачать MetaTrader 5

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

4 сентября 2017, 09:53
MetaQuotes Software Corp.
45
2 345

Появление пользовательских символов в 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 даже на тех инструментах, которых еще нет у брокера. Создавайте свои собственные символы и проверяйте торговые стратегии на любых финансовых рынках!

Последние комментарии | Перейти к обсуждению на форуме трейдеров (45)
AndreyKrivcov
AndreyKrivcov | 8 дек 2017 в 15:19
fxsaber:

Там другая функция по названию. Заменять ее Replace-функцией - не совсем понимать, для чего TicksAdd нужна: пробрасывание соответствующих Tick-событий.


У меня интелесценс не видит TicksAdd, я думаю что изначально была TicksAdd, но после по аналогии с RatesUpdate (которая как добавляет, так и удаляет данные) ее переименовали, что бы разнобоя не было и правильно сделали.

Заменяю ее реплейсом так как функция Update - не работает (если скрипт выполните, то тоже самое увидите, файлы в Common/Files будут.) 
  

fxsaber
fxsaber | 8 дек 2017 в 15:27
AndreyKrivcov:

У меня интелесценс не видит TicksAdd

Обновитесь на 1700 build.

fxsaber
fxsaber | 8 дек 2017 в 15:30
AndreyKrivcov:

Но кое в чем я ошибся точно - функция скорее всего работает, но не может записать все запрашиваемые мною тики (я слишком много тиков записать пытаюсь) 

Она не предназначена для записи.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Бета-версия платформы MetaTrader 5 build 1700: Проекты в MetaEditor и синтетические инструменты

MetaQuotes Software Corp., 2017.12.05 14:22

  1. Terminal: Добавлена возможность вбрасывать котировки для пользовательских инструментов в режиме реального времени. Теперь на MQL5 можно написать эксперта, который будет вбрасывать любые котировки по заданному пользовательскому инструменту. Для этого используется новая функция CustomTicksAdd.
    int  CustomTicksAdd(
       const string           symbol,       // имя символа
       const MqlTick&         ticks[]       // массив с тиковыми данными, которые необходимо применить к пользовательскому инструменту
       );
    Функция CustomTicksAdd позволяет транслировать тики так, как если бы они приходили от сервера брокера. Данные записываются не напрямую в базу тиков, а отправляются в окно "Обзор рынка". И уже из него терминал сохраняет тики в своей базе. При большом объеме данных, передаваемых за один вызов, функция меняет свое поведение для экономии ресурсов. Если передается более 256 тиков, данные делятся на две части. Первая часть (большая) сразу напрямую записывается в базу тиков (как это делает CustomTicksReplace). Вторая часть, состоящая из последних 128 тиков, передается в окно "Обзор рынка" и после этого сохраняется терминалом в базе.
AndreyKrivcov
AndreyKrivcov | 8 дек 2017 в 15:35
fxsaber:

Она не предназначена для записи.


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

fxsaber
fxsaber | 8 дек 2017 в 16:36
AndreyKrivcov:

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

Для этого и создана Replace.

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

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

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

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

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

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

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

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