У нас хорошая новость — пользовательские/кастомные символы в MetaTrader 5 дали новые возможности для разработки торговых систем и анализа любых финансовых рынков.
Теперь трейдеры могут строить графики и тестировать торговые стратегии на неограниченном количестве финансовых инструментов. Для этого достаточно создать свой собственный символ на основе тиковой или минутной истории, и вы можете тестировать на нем любого торгового робота из Маркета или библиотеки бесплатных кодов.
По сути, целый класс чистых аналитических систем типа AmiBroker, Wealthlab, Multicharts и тд теряют свою привлекательность. Любой анализ теперь можно делать бесплатно. Причем с каждой версией мы расширяем объем функционала и удобства.
Покажем, как создать свой собственный символ на основе уже существующего в Обзоре рынка. Откройте правой кнопкой мышки окно Символы и выберите тот, на основе которого вы хотите создать свой собственный.
После нажатии кнопки «Создать символ» вам останется только задать имя пользовательского символа и, при необходимости, изменить нужные свойства в Спецификации контракта.
Все пользовательские символы помещаются в дереве Символов в отдельную директорию <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.
Тогда на основе имени форексного инструмента тестер ищет необходимые символы в следующем порядке:
При тестировании на собственных инструментах убедитесь, что на торговом счете доступны все необходимые валютные пары для расчетов.
В противном случае расчет финансовых результатов и залоговых требований при тестировании будет невозможен.
Для оптимизации торговых стратегий на пользовательских символах можно помимо собственных агентов задействовать агентов из локальной сети и удаленных агентов. Таким образом, вы сможете использовать еще одно преимущество тестера стратегий MetaTrader 5 и сократить время на поиски оптимальных параметров вашей торговой системы.
Использование MQL5 Cloud Network для оптимизации на собственных символах не разрешено. Это связано с тем, что на компьютерах разных трейдеров могут находиться пользовательские символы с одинаковыми именами, но разными ценовыми историями.
Это может привести не только к расхождению результатов тестирования между отдельными агентами сети, но и к массовым перезакачкам и синхронизации исторических данных, создавая избыточный интернет-трафик.
Работать с собственными символами можно и помощью языка MQL5, для этого служат функции из раздела Пользовательские символы. С помощью MQL5-программы можно быстро создавать нужные вам финансовые инструменты с заданными свойствами на основе данных из сторонних источников.
Таким образом, вы можете автоматизировать и рутинные операции по сбору и подготовке исторических данных для любых символов, а также создавать свои собственные индексы и другие производные инструменты с возможностью проверки в тестере стратегий MetaTrader 5.
и второй вопрос — а обязательно иметь именно минутки если интересует только торговля не ниже часовиков? Если да то это недоработка.
Artemunak, скоро мы выпустим новый тип программы — Сервисы.
С их помощью можно писать постоянно работающие сервисы, не зависящие от переконнектов или чартов.
Они позволят писать полноценные кастомные датафиды любых данных: тиков, баров, стаканов и новостей.
Но уже сейчас можно писать свои датафиды в виде экспертов или скриптов, которые пользуются CustomXXX функциями. Для этого надо обновиться на последнюю бету с MetaQuotes-Demo.
Импортировать можно любые таймфреймы.
У кастомных символов несколько задач:
— Дать возможность анализировать любые данные в дополнение к рабочим торговым инструментам. Например, анализировать индексы или другие показатели.
— Дать возможность заниматься анализом и тестированием торговых стратегий любых инструментов
— Создавать на лету синтетические инструменты из существующих, доставляя данные в рилтайме
— Заниматься анализом, передавая торговые приказы в сторонние системы
Мы еще очень много включим в кастомные символы. Сейчас пока идет построение базового функционала.
Благодарю за обновления и статью, но остались следующие вопросы по теме:
1. При создании кастомного символа, который планируется использовать для тестирования на «реальных» тиках, достаточно экспортировать тики без минутных баров?
2. В структуре MqlTick присутсвует поле flags, a в статье ничего об этом не говорится. Если есть возможность опишите комбинации флагов в различных сценариях. Интересует исключительно «биржевое» исполнение.
3. При тестировании эксперта используются «агрегированные» тики?
4. «Сервисы» — это аналог NT служб или они будут работать внутри терминала? Какие сценарии использования и сроки реализации?
5. Почему не хотите реализовать API для своего сервера?
Небольшой список пожеланий:
1. Добавить биржевой идентификатор для сделок, ордеров и тиков
2. Ускорить исполнение на уровне бриджа (шлюза). Исполнение отложенных стоп ордеров уступает в скорости .NET приложению на колокации с Plaza 2
3. Добавить функционал для автоматического переключения эксперта и графика на другой символ при экспирации или по расписанию
Успехов в работе и спасибо за обновление!
Все гораздо удобнее сделать прямо на MQL5. Это быстро как в плане производительности, так и по сетевому латенси.
Посмотрите вот эти публикации:
— Битва за скорость: QLUA vs MQL5 — почему MQL5 быстрее от 50 до 600 раз?
— Cравниваем MQL5 и QLUA — почему роботы на MQL5 до 28 раз быстрее?
— MetaTrader с библиотеками математических функций на пути к R
— MQL4 и MQL5 – на 41-м месте рейтинга языков программирования TIOBE
MQL не интересен. Я программирую на C#. Дополнительно хочу уйти от лишней прослойки.
Замечание небольшое: пройдет некоторое время и вы поймете, что зря потратили столько времени на бесполезное изобретение велосипеда.
Вы не робота пишите и не бизнес-логику, а обвязку-велосипед. И задача программирования обвязки для вас гораздо интереснее робота.
Иначе бы вы сконцентрировались на самой сути в виде робота и максимально эффективного достижения цели на основе имеющихся качественных решений.
Так как вы отбрасываете готовые и очень эффективные решения (MQL мне не интересен), то остается единственный вывод — вам именно интересно писать обвязки, а сам трейдинг вторичен.
Логика пишется за пару часов, спасибо, это уже давно все сделано. Ищутся нормальные качественные подключения. У меня нет нареканий к вашему серверу, но ваш терминал падал несколько раз. Поэтому переход на прямое подключение очевиден. Теперь стоит вопрос — торговать на платном подключении или все же ваша компания сделает нормальный доступ для роботов.
Встречный вопрос. Почему вы отказываетесь давать доступ для роботов? В чем ваша выгода, что клиент уйдет на прямое подключение к брокеру?
И странно не замечать, какую долю рынка мы занимаем в торговых терминалах.
Зачем нам развивать заведомо мертвые решения, результаты которых мы заведомо знаем? Мы работаем на массовый рынок и предлагаем готовые и эффективные решения.
Доступ для роботов у нас отличный и быстрый. А по рыночному окружению мы оставляем в бесконечной дали любое решение по прямому подключению в урезанный(других не бывает) шлюз.
Я практикующий алготрейдер. И я вам заявляю — ваш терминал ненадежное решение для роботов. Поэтому САМ брокер предложил прямой доступ к торгам. Единственное что смущает — это финансовые условия для подключения. На тестах скорость катастрофически выигрывает МТ. Но мне не нужна скорость. Мрне нужна надежность. А о какой надежности может идти речь, если ваш терминал падает.
Почему вы не идете в ногу со временем и не сделаете нормальные вещи? Посмотрите на критпо биржи. Все они дают качественный АПИ. Почему вы так же не можете? Расскройте секрет.
И она показывает их очень мало количество. Вы точно уверены, что у вас есть проблемы с терминалом? Когда это было? После использования своих DLL в экспертах?
Можете привести доказательства, что у вас крешится терминал?
Можете привести доказательства, что ваше решение «катастрофически выигрывает MetaTrader 5»? Так, чтобы было достаточно для воспроизведения условий.
Если у вас есть послная статистика всех крешей, то значит и моя ситуация у вас есть.
Сторонние DLL не использовал.
— https://www.mql5.com/ru/code
— https://www.mql5.com/ru/market
Нет ни доступа к глубокой истории, ни к визуализации, ни к тестированию и тд. А именно это и нужно для вменяемой разработки роботов.
Если бы занимались трейдингом, то именно торговые стратегии вы бы и писали. Пользуясь готовыми решениями.
Но программисту на самом деле интересно совсем другое.
Не позорьтесь. Смысла не вижу в дальнейшей беседы. Вы бид от офера не сможете отличить. Перейдате мои сообщения вашему начальству. Может хоть так будет какая-то внятная реакция.
Ситуация многократно повторяемая и известная. Я просто пообщался по теме.
Вы думаете, что пишите робота, хотя пишите обвязку для робота.
В меню есть удобные команды по управлению графическими объектами:
У меня к вам предложение по доработке тестера.
1. Как мне отображать индикаторы, используемые в эксперте на графике тестирования? Я не про визуализацию, а про обычный график, который появляется в терминале со стрелками. На визуализацию вроде можно темплейт с тем же именем, что и эксперт, создать, а здесь не работает.
2. Было бы здорово на графике Balance/Equity после бэктеста иметь такую фичу — кликнул ПКМ на кривой и выбрал что-то навроде Show on the chart. И показывается это место на графике. Видишь просадку, хочешь выяснить из-за чего. Чтоб не мотать вручную график.
3. Когда вы наконец добавите информацию в файл с результатами оптимизации? Какие параметры оптимизировались, какие диапазоны и пр. Плюс возможно все входные параметры, как в отчете тестирования.
Может быть еще имеет смысл добавлять версию EA из #property version. Сейчас этот пустой Excel файл лишь с результатами прогонов не очень информативен. Может быть, в имя файла еще можно добавить время что ли. Чтоб не переименовывать во что-то уникальное каждый раз самому.
4. Некоторые неудобства с сохранением файлов. Не могли бы сделать, чтоб запоминался последний выбранный путь сохранения файла оптимизации/отчета тестирования, а также set файла с входными параметрами?
Спасибо.
Я поставил ваши пожелания в наш сервисдеск на обсуждение.
Спасибо!
Я уже не знаю, что еще снести, где этот грёбаный кэш хранится?
Не только стрелки, но и используемые индикаторы кэширует. При обычном тестировании они уже не подгружаются, а через плеер в логе видно, что старый индикатор загружается. Это п… ц!
Запустите в режиме portable и потестируйте уже… 1653
Sergey, API от MQ — это утопия)
Они поставляют свой торговый сервер для 99% «кухонь», основная задача которых не дать клиенту выиграть. Наличие Client API может значительно увеличить перевес МО в сторону трейдера, а казино этого не любит.
Плюс торговля роботами написанными на «эксклюзивном» языке приносит немалый профит. Зачем же рубить сук на котором сидишь?
Если у вас есть возможность прямого подключения, и она окупается используйте, зачем думать про MT5? Скорость исполнения «серверных» Стоп ордеров уступает скорости работы аналогичного робота написанного на C# + Plaza 2 с колокацией на бирже, но это зависит от задачи.
Вероятно, вы не в курсе, что с одного МТ5 терминала можно делать до 1800 торговых транзакций в секунду.
Все это через MQL5 по штатному протоколу. Поэтому не получится вам с клиентским апи сделать лучше.
D.G., верно — вы многого не знаете.
У брокеров свои лимиты, не связанные с лимитами, выдаваемыми независимым трейдерам.
Наши цифры показывают сетевую производительность и низкое латенси торговых операций с терминала до нашего сервера. Что означает — ни с каким API вы не достигнете производительности больше. Поэтому наше решение с MQL5 гораздо лучше любых сторонних обвязок.
Хочу заметить, что жизнь не ограничивается старинным и странным Plaza шлюзом. Современные технологии сильно впереди всего, что творится в России.
Даже если вы переписали исполнение на TWIME, оно ограничено пропускными способностями для логина, под которым работает бирдж. Ваши цифры можно применить для сравнения с работой через QUIK, но не как с прямым подключением.
Я исхожу из личного опыта, .net приложение на колокации быстрее ваших СЕРВЕРНЫХ стопов. Чтобы не быть голословным, могу предоставить статистику, если вы добавите в ваши ордера и сделки биржевые идентификаторы.
Спасибо за внимание, кстати вы не ответили на мой комментарий с вопросами по сабжу. Буду очень признателен, если вы обратите на них внимание.
Подскажите
1. Когда с опционами на счете (фортс) можно будет использовать терминал?
2. Мув на срочном рынке будет за одну транзакцию?
3. На срочном рынке у меня стоп сработал однажды по цене в стакане, а не цене сделки. После этого я терминалом не пользовался. Для ММВБ это настраивается? в 19-00 стаканы очищаются, есть шанс вылететь по стопу.
4. Будет кнопка — удалить все заявки (все, все по инструменту, для мобильной версии )?
1) Не могу сказать
2) Опишите точнее, пожалуйста.
3) Срабатывание происходит на бирже, а интегрированные стопы(sl/tp) срабатывают по рынку.
Чтобы срабатывало точно по указанной цене, надо ставить жесткие Buy/Sell Limit ордеры.
2) Для деривативов (ФОРТС) — на биржу по его шлюзу у нас отправляется одна команда — «измени ордер», а вот реализует её сама биржа через 2 операции — снятие старого ордера и установка нового.
Для валютки и срочки MOEX — модификация в принципе реализуется через снятие старого + установку нового. Встроенных команд модификации у биржевых шлюзов нет.
3) Скорее всего вам показалось, стопы на биржевом исполнении у нас активируются по анализу Last цены, а не Bid/Ask.
Не сразу ответ заметил.
2. Я говорю именно про транзакцию на уровне биржевого протокола(общение между МТ и биржей). Если я замувлю заявку через МТ , какое сообщение шлется на биржу (название сообщения из документации с moex.com напишите, вопрос будет снят.)? Давно задавал вопрос брокеру, ответ был — будет две транзакции на биржу.
На валютном рынке есть возможность мува за одну транзакцию через FIX протокол. Но тут и штрафа за неэф-е транзакции нет.
3. Моя сделка была в 19:00:00 и по неадекватной цене.
Есть номер сделки+заявки и дата, если интересно напишу. (архива всех сделок нет под рукой, не могу утверждать, что сделка была первой в сессии)
Анализ цены сделки или цены в стакане является настройкой для сервера MT? Или у брокера нет возможности включить анализ стакана вместо цены сделок?
mr lab,
2) Так я же написал — для FORST пошлется одна команда, а для валютки и фонды — две.
3) Хотя триггером срабатывания интегрированного в позицию стопа является Last цена, исполнение будет отправлено как маркет ордер. В результате проскальзывание может быть и исполнится возможно не по заявленной цене.
Но триггером на биржевом исполнении является именно Last, а не Bid/Ask.
Странно, но пусть будет так.
Благодарю за ответы.
1. В моем случае я не могу держать субсчет с опционом. Есть шанс влететь или нужно много свободных денег. В итоге я не пользуюсь терминалом. У кого можно узнать сроки или голосовалку устроить где-то?
2. На срочном рынке есть операция мув через разное апи(биржи) — это одна транзакция физически со стороны клиента. Если делать мув через терминал, то сервис терминала проводит ее за две транзакции del+add. Что не очень хорошо с учетом штрафа за неэффективные транзакции.
3. Я говорю о триггере срабатывания. В случае квика, триггер настроен на цену последней сделки, а сервис метатрейдера смотрит цену в стакане.
4. новый пункт, еще дописал, повторю.
Будет кнопка — удалить все заявки (все, все по инструменту, для мобильной версии )?
1) пока новостей нет
2) подумаем над реализацией, хорошая вещь
3) тоже хорошая идея, поставил на обсуждение
4) да, будет обязательно. мы постепенно апгрейдимся
За ответы спасибо, но сроки видимо не ближайшие.
По 1 пункту — главное чтоб сам метатрейдер работал(без операций по опционам) хотя бы, если есть позиция по опционам и приходили новые сделки, сделанные через квик например. Выясняю ситуацию с ГО при субсчетах с брокером, но боюсь ответ будет неутешительным.
Добавлю еще пункт 5.
Снимать заявки, если клиент отпал(соединение). Только не все заявки, а те, что указал сам клиент.
Еще вопрос.
В связи с чем нет hedge счета для срочного рынка?
Я бы хотел крыть даже однонаправленные позиции с разными профитом, получается надо независимые тэйки выставлять, что они не затерлись?
При выставлении заявки цена сделки не известна заранее, относительный тэйк задавать нельзя?
Не совсем понял вопроса. Вы про фьючи на акции? Да хоть на фондовой биржи, не вижу противоречий.
Я для разных однонаправленных поз хочу выставлять разные стоп заявки.Эти стоп-заявки я хочу выставлять до совершения сделки при выставлении заявки. На неттинг счете это невозможно сделать.
То, что изначально транслируется информация с биржи — это ясно.
Меня интересует отображение в терминале. Как это будет реализовано — не важно( на стороне сервера мт5). Есть один серьезный плюс у мт- можно сразу привязать стоп при выставлении заявки. Но неттинг для более 1 позы все это убивает. В настольной версии квика это решается приводом. Для мобильной уже сложнее.