MetaQuotes Software
MetaQuotes Software Блог компании MetaQuotes Software
05 сентября 2017, 13:01

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

У нас хорошая новость — пользовательские/кастомные символы в MetaTrader 5 дали новые возможности для разработки торговых систем и анализа любых финансовых рынков.

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

По сути, целый класс чистых аналитических систем типа AmiBroker, Wealthlab, Multicharts и тд теряют свою привлекательность. Любой анализ теперь можно делать бесплатно. Причем с каждой версией мы расширяем объем функционала и удобства.

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

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

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

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

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

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

Сами ценовые данные пользовательских символов сохраняются в отдельном каталоге Custom, вне каталогов конкретных торговых серверов:

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

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

 

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

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

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

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

После создания собственного инструмента необходимо добавить для него историю котировок. Покажем сначала как создать историю на основе уже существующего инструмента.

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

Для получения баров необходимо выбрать таймфрейм M1, так как вся история в MetaTrader 5 строится на минутных данных.

Создание и тестирование пользовательских символов в 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, включая запуск любых пользовательских индикаторов и аналитических продуктов из Маркета.

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

Многопоточный тестер стратегий 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.

Где скачать MetaTrader 5

Получить доступ ко всем возможностями можно за 1 минуту, бесплатно и без регистраций https://www.metatrader5.com/ru/download
53 Комментария
  • Artemunak
    05 сентября 2017, 13:14
    из статьи не понял: если из внешней программы обновлять csv файл то можно торговать по сигналам такого символа? или они только для тестирования?
    и второй вопрос — а обязательно иметь именно минутки если интересует только торговля не ниже часовиков? Если да то это недоработка.  
      • D.G.
        05 сентября 2017, 23:02
        MetaQuotes Software, 

        Благодарю за обновления и статью, но остались следующие вопросы по теме:

        1. При создании кастомного символа, который планируется использовать для тестирования на «реальных» тиках, достаточно экспортировать тики без минутных баров?

        2. В структуре MqlTick присутсвует поле flags, a в статье ничего об этом не говорится. Если есть возможность опишите комбинации флагов в различных сценариях. Интересует исключительно «биржевое» исполнение.

        3. При тестировании эксперта используются «агрегированные» тики?

        4. «Сервисы» — это аналог NT служб или они будут работать внутри терминала? Какие сценарии использования и сроки реализации?

        5. Почему не хотите реализовать API для своего сервера?

        Небольшой список пожеланий:

        1. Добавить биржевой идентификатор для сделок, ордеров и тиков


        2. Ускорить исполнение на уровне бриджа (шлюза). Исполнение отложенных стоп ордеров уступает в скорости .NET приложению на колокации с Plaza 2

        3. Добавить функционал для автоматического переключения эксперта и графика на другой символ при экспирации или по расписанию

        Успехов в работе и спасибо за обновление!

  • Sergey
    05 сентября 2017, 13:27
    Интересует один брокер, готов предоставить FIX подключение за плату. Можно ли подключаться напрямую к серверу минуя ваш терминал? Или только через брокерские FIX гейты?
      • Sergey
        05 сентября 2017, 15:19
        MetaQuotes Software, шлюз есть у брокера.

        MQL не интересен. Я программирую на C#. Дополнительно хочу уйти от лишней прослойки.
          • Sergey
            05 сентября 2017, 17:29
            MetaQuotes Software, я делаю торгового робота. Не вам решать велосипед это или нет, так как я живу роботами, а вы платный писака за 500 рублей.
              • Sergey
                05 сентября 2017, 18:37
                MetaQuotes Software, C# один из мощнейший языков в мире, за которым стоит гиганская корпорация Майкрософт. За вашим языком не стоит никто, кроме вас.

                Логика пишется за пару часов, спасибо, это уже давно все сделано. Ищутся нормальные качественные подключения. У меня нет нареканий к вашему серверу, но ваш терминал падал несколько раз. Поэтому переход на прямое подключение очевиден. Теперь стоит вопрос — торговать на платном подключении или все же ваша компания сделает нормальный доступ для роботов.

                Встречный вопрос. Почему вы отказываетесь давать доступ для роботов? В чем ваша выгода, что клиент уйдет на прямое подключение к брокеру?
                  • Sergey
                    05 сентября 2017, 19:04
                    MetaQuotes Software, вы сейчас серьезно это пишите? Я пытаюсь вам объяснить недобства пользования МТ5 а вы мне в ответ пишите что я что-то не понимаю?

                    Я практикующий алготрейдер. И я вам заявляю — ваш терминал ненадежное решение для роботов. Поэтому САМ брокер предложил прямой доступ к торгам. Единственное что смущает — это финансовые условия для подключения. На тестах скорость катастрофически выигрывает МТ. Но мне не нужна скорость. Мрне нужна надежность. А о какой надежности может идти речь, если ваш терминал падает.

                    Почему вы не идете в ногу со временем и не сделаете нормальные вещи? Посмотрите на критпо биржи. Все они дают качественный АПИ. Почему вы так же не можете? Расскройте секрет.
                      • Sergey
                        05 сентября 2017, 20:14
                        MetaQuotes Software, зачем мне все это? Я ваш сотрудник? Нет.

                        Если у вас есть послная статистика всех крешей, то значит и моя ситуация у вас есть.

                        Сторонние DLL не использовал.
                  • Sergey
                    05 сентября 2017, 19:06
                    MetaQuotes Software, меня не интересуют покупные поделки от околорыночников. Я сам трейдер, и сам могу писать прибыльные стратегии.
                      • Sergey
                        05 сентября 2017, 20:16
                        MetaQuotes Software, у меня данные от tickdata. Да, я трейдингом не занимаю. Я от балды вам тут пишу, у меня же много свободного времени.

                        Не позорьтесь. Смысла не вижу в дальнейшей беседы. Вы бид от офера не сможете отличить. Перейдате мои сообщения вашему начальству. Может хоть так будет какая-то внятная реакция.
                          • Sergey
                            05 сентября 2017, 20:33
                            MetaQuotes Software, https://smart-lab.ru/blog/418882.php передайте начальству, если не сложно. Мне очень интересна информация, но тратить время на маркелогов я не могу.
                              • Sergey
                                06 сентября 2017, 11:48
                                MetaQuotes Software, передайте ссылку начальству. С вами бесполезное общаться, вы не понимаете азов.
                      • Миха
                        18 сентября 2017, 11:59
                        MetaQuotes Software, вашу визуализацию невозможно использовать! Как мне убрать эти закешированные стрелки с прошлых прогонов? Косяк на косяке… Хоть проверяете что-нибудь перед релизом?




                          • Миха
                            19 сентября 2017, 23:04
                            MetaQuotes Software, ааа, ну спасибо, тогда извиняюсь за это.

                            У меня к вам предложение по доработке тестера.

                            1. Как мне отображать индикаторы, используемые в эксперте на графике тестирования? Я не про визуализацию, а про обычный график, который появляется в терминале со стрелками. На визуализацию вроде можно темплейт с тем же именем, что и эксперт, создать, а здесь не работает.

                            2. Было бы здорово на графике Balance/Equity после бэктеста иметь такую фичу — кликнул ПКМ на кривой и выбрал что-то навроде Show on the chart. И показывается это место на графике. Видишь просадку, хочешь выяснить из-за чего. Чтоб не мотать вручную график.
                          • Миха
                            19 сентября 2017, 23:05

                            3. Когда вы наконец добавите информацию в файл с результатами оптимизации? Какие параметры оптимизировались, какие диапазоны и пр. Плюс возможно все входные параметры, как в отчете тестирования.
                            Может быть еще имеет смысл добавлять версию EA из #property version. Сейчас этот пустой Excel файл лишь с результатами прогонов не очень информативен. Может быть, в имя файла еще можно добавить время что ли. Чтоб не переименовывать во что-то уникальное каждый раз самому.

                            4. Некоторые неудобства с сохранением файлов. Не могли бы сделать, чтоб запоминался последний выбранный путь сохранения файла оптимизации/отчета тестирования, а также set файла с входными параметрами?

                            Спасибо.

                          • Миха
                            26 сентября 2017, 20:02
                            MetaQuotes Software, как же убрать эти стрелки в плеере? Невозможно ж работать! Ваши «удобные команды» не помогают.
                            Я уже не знаю, что еще снести, где этот грёбаный кэш хранится?
                            Не только стрелки, но и используемые индикаторы кэширует. При обычном тестировании они уже не подгружаются, а через плеер в логе видно, что старый индикатор загружается. Это п… ц!
                            Запустите в режиме portable и потестируйте уже… 1653
    • D.G.
      05 сентября 2017, 23:17

      Sergey, API от MQ — это утопия)

      Они поставляют свой торговый сервер для 99% «кухонь», основная задача которых не дать клиенту выиграть. Наличие Client API может значительно увеличить перевес МО в сторону трейдера, а казино этого не любит.


      Плюс торговля роботами написанными на «эксклюзивном» языке приносит немалый профит. Зачем же рубить сук на котором сидишь?

      Если у вас есть возможность прямого подключения, и она окупается используйте, зачем думать про MT5? Скорость исполнения «серверных» Стоп ордеров уступает скорости работы аналогичного робота написанного на C# + Plaza 2 с колокацией на бирже, но это зависит от задачи.

        • D.G.
          06 сентября 2017, 00:01
          MetaQuotes Software, ваши транзакции ничего общего не имеют с транзакциями на шлюзе Plaza 2. Я конечно не знаю какие логины используют Открытие и БКС для MT5, но количество транзакций на логин лимитировано. Поэтому ваши цифры не имеют ничего общего с реальностью. Плюс расчет маржи и прочие операции, которые вы производите на сервере и шлюзе нивелируют все преимущества. Вы не продадите свои цифры мне, я немного понимаю кухню))) А еще есть серверные плагины, это вообще отдельная песня…
            • D.G.
              06 сентября 2017, 14:45
              MetaQuotes Software, я знаю достаточно, чтобы делать такие выводы. Если не доказано обратного, я предпочитаю не подходить оптимистично к высказываниям заинтересованных людей. 

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

              Я исхожу из личного опыта, .net приложение на колокации быстрее ваших СЕРВЕРНЫХ стопов. Чтобы не быть голословным, могу предоставить статистику, если вы добавите в ваши ордера и сделки биржевые идентификаторы. 

              Спасибо за внимание, кстати вы не ответили на мой комментарий с вопросами по сабжу. Буду очень признателен, если вы обратите на них внимание.
  • mr lab
    05 сентября 2017, 14:10
    MetaQuotes Software
    Подскажите
    1. Когда с опционами на счете (фортс) можно будет использовать терминал?
    2. Мув на срочном рынке будет за одну транзакцию?
    3. На срочном рынке у меня стоп сработал однажды по цене в стакане, а не цене сделки. После этого я терминалом не пользовался. Для ММВБ это настраивается? в 19-00 стаканы очищаются, есть шанс вылететь по стопу.
    4. Будет кнопка — удалить все заявки  (все, все по инструменту, для мобильной версии )?
      • mr lab
        05 сентября 2017, 22:01
        MetaQuotes Software, 
        Не сразу ответ заметил.
        2. Я говорю именно про транзакцию на уровне биржевого протокола(общение между МТ  и биржей). Если я замувлю заявку через МТ , какое сообщение шлется на биржу (название сообщения из документации с moex.com напишите, вопрос будет снят.)? Давно задавал вопрос брокеру, ответ был — будет две транзакции на биржу.

        На валютном рынке есть возможность мува за одну транзакцию через FIX протокол. Но тут и штрафа за неэф-е транзакции нет.

        3. Моя сделка была в 19:00:00 и по неадекватной цене. 
        Есть  номер сделки+заявки и дата, если интересно напишу. (архива всех сделок нет под рукой, не могу утверждать, что сделка была первой в сессии)
        Анализ цены сделки или цены в стакане является настройкой для сервера MT? Или у брокера нет возможности включить анализ стакана вместо цены сделок?
          • mr lab
            05 сентября 2017, 22:31
            MetaQuotes Software, 
            Странно, но пусть будет так.
            Благодарю за ответы.
  • mr lab
    05 сентября 2017, 14:34
     MetaQuotes Software
    1. В моем случае я не могу держать субсчет с опционом. Есть шанс влететь или нужно много свободных денег. В итоге я не пользуюсь терминалом. У кого можно узнать сроки или голосовалку устроить где-то?
    2. На срочном рынке есть операция мув через разное апи(биржи) — это одна транзакция физически со стороны клиента. Если делать мув через терминал, то сервис терминала проводит ее за две транзакции del+add. Что не очень хорошо с учетом штрафа за неэффективные транзакции.
    3. Я говорю о триггере срабатывания. В случае квика, триггер настроен на цену последней сделки, а сервис метатрейдера смотрит цену в стакане. 
    4. новый пункт, еще дописал, повторю.
    Будет кнопка — удалить все заявки  (все, все по инструменту, для мобильной версии )?

      • robomakerr
        06 сентября 2017, 16:33
        MetaQuotes Software, когда тиковый таймфрейм будет на графиках?
  • mr lab
    05 сентября 2017, 15:15
    MetaQuotes Software

    За ответы спасибо, но сроки видимо не ближайшие.

    По 1 пункту —  главное чтоб сам метатрейдер работал(без операций по опционам) хотя бы, если есть позиция по опционам и приходили новые сделки, сделанные через квик например. Выясняю ситуацию с ГО при субсчетах с брокером, но боюсь ответ будет неутешительным.
    Добавлю еще пункт 5.
    Снимать заявки, если клиент отпал(соединение). Только не все заявки, а  те, что указал сам клиент.
  • mr lab
    08 сентября 2017, 11:07
    День добрый.
    Еще вопрос.
    В связи с чем нет hedge счета для срочного рынка?
    Я бы хотел крыть даже однонаправленные позиции с разными профитом, получается надо независимые тэйки выставлять, что они не затерлись?
    При выставлении заявки цена сделки не известна заранее, относительный тэйк задавать нельзя?
    • oreshkinalexey
      11 сентября 2017, 22:44
      mr lab, как ты представляешь себе хедж счёт для фонды ???
      • mr lab
        11 сентября 2017, 22:52
        DedBoroded, 
        Не совсем понял вопроса.  Вы про фьючи на акции? Да хоть на фондовой биржи, не вижу противоречий.
        Я для разных однонаправленных поз хочу выставлять разные стоп заявки.Эти стоп-заявки я хочу выставлять до совершения сделки при выставлении заявки. На неттинг счете это невозможно сделать.
        • oreshkinalexey
          11 сентября 2017, 23:28
          mr lab, на бирже все счета неттинговые, хоть срочка, хоть спот. МТ транслирует инфу с биржи. Что тогда транслировать метатрейдеру если на бирже у него нет позы, а в терминале у трейдера появилось желание поставить позу в замок?
          • mr lab
            11 сентября 2017, 23:48
            DedBoroded, 
            То,  что изначально транслируется информация с биржи — это ясно.
            Меня интересует отображение в терминале. Как это будет реализовано — не важно( на стороне сервера мт5). Есть один серьезный плюс у мт- можно сразу привязать стоп при выставлении заявки. Но неттинг для более 1 позы все это убивает. В настольной версии квика это решается приводом. Для мобильной уже сложнее.
  • Max Xaser
    16 сентября 2017, 02:37
    ok. Как, к примеру, сделать символ корелляцию (Gold/Silver)?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн