Многие трейдеры зачастую не задумываются над тем, как
быстро доходит их заявка до биржи, как долго она там исполняется и
когда торговый терминал трейдера узнает о результате.
В результате они не знают, что легко могут улучшить качество исполнения своих сделок за счет более быстрой реакции и скорости проведения транзакций.
12 сентября 2016 года были проведены три замера скорости на реальном счете БД "Открытие" на MetaTrader 5 build 1415 и Quik 7.2.23 в одно и то же время. Каждый тест был призван измерить конкретную скоростную характеристику, важную с точки зрения алгоритмического трейдинга:
Тестирование синхронных операций — серия из 10 синхронныхпоследовательных торговых операций Buyс подтверждением успешности выполнения каждой транзакции на бирже. Последующая операция не производится, пока не будет получено подтверждение от торгового сервера, что операция прошла/не прошла на бирже. Скорость выполнения зависит от всей цепочки терминал — торговый сервер — биржа — торговый сервер — терминал. Чем меньше будет среднее время торговой синхронной операции, тем лучше.
Тестирование асинхронных операций — серия из 10 асинхронныхторговых операций Buyбез подтверждения успешности выполнения транзакции. Это чистый тест на скорострельность, измеряющий скорость отправки заявок на биржу. Тут также лучшим будет тот терминал, у которого время выполнения 10-ти асинхронных покупок будет меньше.
Тестирование обновления стакана заявок — замер скорости изменений заявок в Стакане. Это простой подсчет количества тиков (обновлений) Стакана в единицу времени. Чем чаще приходят котировки с биржи в торговый терминал, тем быстрее будет обновляться Стакан. Следовательно, чем больше тиков за секунду поступает в программу автоматической торговли, тем быстрее она может среагировать на изменения в структуре спроса/предложения на рынке. Лучшим будет тот терминал, в котором скорость обновления Стакана выше.
Условия испытаний
Оба терминала установлены на арендованном сервере VPS в Москве, как и сами торговые серверы БД "Открытие". Торговля велась на одном и том же реальном счете в срочной секции Московской биржи инструментом Si-9.6.
Мы записали на видео все три теста одним роликом, чтобы было видно:
торговые операции проводились на одном и том же реальном счете;
и на одном и том же инструменте Si-9.16;
на одном и том же компьютере;
торговые операции проводились в одно и то же время;
в одних и тех же рыночных условиях;
скорости обновления стаканов замерялись на одном и том же инструменте и в одно и то же время;
сетевая задержка до серверов Открытия была 2 мс.
Результаты сравнения скорости торговых операций: MetaTrader 5 vs QUIK
Результаты всех трех тестов собраны в сводной таблице, детальные результаты по каждому тесту представлены ниже отдельными разделами этой статьи.
Тест
MetaTrader 5
QUIK
Выигрыш MT5
Среднее время синхронной операции
9.59 ms
277.80 ms
28.96 раз
Среднее время асинхронной операции
0.09 ms
0.30 ms
3.33 раза
Скорость обновления стакана заявок
42.7 раза за сек
8.4 раз за сек
5.08 раза
Как видно из таблицы, MetaTrader 5 опережает по всем трем тестам со значительным отрывом. Желающие
могут самостоятельно провести подобные испытания с помощью приложенных
исходных кодов. Само тестирование представлено на видео ниже.
Видео сравнения скорости торговых операций
Выводы: MetaTrader 5 быстрее QUIK в торговых операциях до 28 раз
Проведенные замеры показали, что язык MQL5 значительно опережает QLUA как в проведении торговых операций
на Московской бирже, так и просто в сканировании стакана заявок. Торговые роботы, написанные на языке MQL5, не только считают в 50-600 раз быстрее,
но и торгуют до 28 раз быстрее. И при этом вам
не нужно изобретать свои велосипеды — приводы, коннекторы и т.д. К вашим
услугам готовые торговые классы стандартной библиотеки и масса статей по автоматизации трейдинга.
Надежный
торговый робот просто обязан проверять результаты отправки торговых
операций — то есть, дожидаться ответа от торгового сервера. Тесты доказали, что MetaTrader 5 значительно быстрее в синхронных операциях. Если же вам нужны асинхронные операции — то и здесь скорость в 3 раза выше. Требуется анализировать поток заявок — и тут MetaTrader 5 даст вам преимущество за счет в 5 раз более быстрого потока котировок без снапшотов.
Проведенные испытания
показали, что для создания быстрых автоматических торговых систем язык
MQL5 подходит как нельзя лучше. Никакие коннекторы и библиотеки,
подключаемые к терминалу QUIK для ускорения расчетов, не спасут: узким местом будет являться само время проведения торговых операций.
Теперь рассмотрим скучные, но обязательные детали тестирования.
Детальные отчеты по сравнению терминалов
Программа на QLUA при замере времени обращается к системному таймеру операционной системы, который по умолчанию имеет погрешность измерения в пределах в 10…15.6 миллисекунда (чаще всего — 15.6 мс). Поэтому мы повысили точность замеров времени в QLUA простым повышением точности системного таймера до 1 ms. Сделано это с помощью скрипта на SpeedupSystemTimer.mq5, который вызывает функцию timeBeginPeriod системной библиотеки Winmm.dll
Этот скрипт мы запустили перед началом тестов в терминале MetaTrader 5 и разрешив вызов DLL, в результате чего обеспечили погрешность измерений операций в терминале QUIK не более 1 миллисекунды.
В языке MQL5 есть готовая функция GetMicrosecondCount(), поэтому замеры в терминале MetaTrader 5 делались с точностью 1 микросекунда (1 миллисекунда=1000 микросекунд).
#1 Тестирование скорости синхронных торговых операций
Тестирование заключалось в измерении скорости синхронных торговых операций — это значит, что каждая последующая торговая
операция совершалась только после получения от торгового сервера
подтверждения, что предыдущая транзакция была успешно проведена с полным подтверждением от биржи.
Сначала была проведена серия торговых операций через терминал MetaTrader 5, затем такая же серия была произведена через терминал QUIK.
Суть испытания заключается в измерении среднего времени 10 синхронных операций покупки по рынку 1 лотом:
SyncTradeTest.mq5
SyncTradeTest.lua
Измерение времени, затраченного на синхронную транзакцию, проводилось следующим образом:
В языке MQL5 есть синхронная функция OrderSend, а время легко замерить в начале и конце серии сделок.
В языке QLUA нет синхронной торговой функции и поэтому статус сделки приходится отлавливать отдельно. Время старта торговой операции замерялось непосредственно перед вызовом sendTransaction () с помощью функции os.closck(). Успешное выполнение транзакции отслеживалось во встроенном
обработчике OnOrder() на первом вызове
в момент, когда приходило событие о совершении сделки на бирже. Разница между
этими событиями и есть время, потраченное на выполнение торговой
операции.
Результаты замеров показывают, что в синхронных операциях MetaTrader 5 до 28 раз быстрее.
#2 Тестирование скорости асинхронных торговых операций
В этом тесте все значительно проще. Десять раз подряд на биржу отправляется приказ на покупкуодного контракта фьючерса Si-9.16. Это позволило нам измерить среднее время асинхронной передачи в QLUA с точностью 1 ms / 10 = 0.10 ms. В MetaTrader 5 погрешности нет, так как в нем используется микросекундный таймер.
Мы не ждем никакого результата наших операций, за каждой отправкой заявки торговому серверу сразу же делается отправка новой заявки:
AsyncTradeTest.mq5
AsyncTradeTest.lua
Как видно из результатов, в асинхронных операциях MetaTrader 5 в 3.33 раза быстрее.
#3 Тестирование обновления стакана заявок
Ряд торговых стратегий строится на анализе потока заявок в стакане. В языке MQL5 событие изменения стакана можно отлавливать в обработчике OnBookEvent(), а в QLUA через OnQuote().
Тесты скорости обновления стаканов проводились с помощью следующих программ, которые доступны в приложенном ZIP-архиве:
MarketUpdateTest.mq5
MarketUpdateTest.lua
В результате последовательного запуска этих программ на двух разных терминалах было зафиксировано, что стакан в MetaTrader 5 обновляется примерно в 5 раза чаще. Скорее всего QUIK просто лимитирует частоту обновлений стакана и не показывает все изменения.
Так как все исходные коды приложены тут же, любой желающий может самостоятельно воспроизвести эти тесты и убедиться лично в представленных результатах.
Почему такая разница?
Мы фанатично относимся к производительности и боремся за каждый десяток микросекунд, годами оптимизируя торговую платформу.
Именно
поэтому мы показываем потрясающую производительность встроенного
алгоритмического языка MQL5 и скорость торговых транзакций.
Вы сначала докажите свои слова своим кодом в противовес нашим доказательствам.
Чего словами разбрасываетесь на уровне банальной эрудиции и не зная, что из себя представляет LUA?
Есть два языка, которые сравнивались.
И один проигрывает другому в 50-600 раз по скорости, а в связке с торговой платформой на чистых торговых транзакциях, где минимум языковой обвязки в 28 раз.
Сам Квик не имеет глубокой интеграции с языком, который просто прилеплен сбоку. А MetaTrader 5 построен вокруг обеспечения нужд MQL5, когда все данные готовы именно под использование в MQL5. Причем язык LUA создавался именно как обвязка между высокоуровневыми вызовами, но никак не для расчетных операций.
Написать модули на С++, а потом их распространять? Кто рискнет ставить себе чужие EXE/DLL в торговое окружение?
А вот на MQL5 это безопасно, так как на MQL5 получаешь безопасный код и практически такую же скорость, как и в С++.
Тем, кто живет в Квике, неведомы понятия настоящих данных.
Вот когда сможете в LUA повторить следующий код, возвращайтесь обсуждать "огромные массивы":
Запуск холодный, за 2.6 секунды было выдано 17 миллионов реальных тиков RTS-9.17 и 60 278 минутных баров.
Внутри платформы используются неограниченные пределы для данных. Эти данные используются для построения индикаторов, анализа и тд.
Вот именно такими данными и оперируют MQL программы. И сам терминал оперирует именно такими данными при своей работе.
А вы про какие-то таблички говорите.
Вы просто не в курсе языка и его внутренностей. Поэтому для вас все языки одинаковы.
Вообще хотя бы понимаете, что общаетесь с человеком, который создает языки программирования и борется за эффективность и производительность ?
А вы понимаете с кем разговариваете вы?
Когда вас ещё в планах не было, человек, ваш собеседник спортировал компилятор ansi C vax на pdp-11.
Не могу удeржаться: баран.
Вам за написание всех этих тестов и развешивание соплей по ушам неискушенных пользователей платят деньги. Бесплатно я писать тексты и участвовать в этом шоу точно не стану. В 600 раз быстрее.. шире руки, ещё шире.
То что поддержка луп прилеплена к терминалу сбоку - это правильно. Так и должно быть (хотя нельзя сказать, что разработчики квика это планировали: у них не было другого пути). А путь, которым идёт ваша компания - все должно быть цветастой, моргалисто, и замкнуто в один клубок - сомнителен. И главное - понты, понты..
"Мы написали тестер, теперь амиброкер и велслаб вам не нужен." Тоже в 600 раз быстрее? Клоуны.
"Мы можем отправить в 28 раз больше транзакций чем Квик. Нахрена??? Для
Этого есть fix, он ещё в 28 раз быстрее.
Мы можем в 100 раз быстрее сложить 1+1. Даже если так (а это не так) нахрена? Пропускная способность инфраструктуры все равно определяюща. Вы на феррари быстрее доедете из Химок в Видное, чем на солярисе?
Все это пузыри и болтовня. Пиар для привлечения лошков. Впрочем это и есть ваша целевая аудитория.
Блин, да какая разница во сколько раз быстрее?!!!!
На ФОРТС, например, на один логин 30 тразакций в секунду!!!
У брокерских шлюзов лимиты больше.
Даже один клиент брокера может получить больше 30 транзакций в секунду через MetaTrader 5. Но понятно, что до какого-то момента будут терпеть.
К сожалению, российская биржа не может или не хочет кардинально обновиться и унифицировать свою систему. Отсюда и удручающая ситуация с трейдинговыми технологиями российского сектора на протяжении 20 лет - туда никто вкладываться не хочет.
Анализ торговой истории и построение HTML графиков распределения результатов торговли в зависимости от времени входа в позицию. Графики отображаются в трех разрезах – по часам, дням недели и месяцам.
В статье представлен процесс разработки и реализации класса-сигнальщика на основе скользящих каналов. За каждой из версий сигнала следует торговая стратегия с результатами тестирования. Используются классы Стандартной библиотеки для создания производных классов.
В этой статье представлена следующая версия библиотеки Easy And Fast (версия 3). Исправлены некоторые недоработки и добавлены новые возможности. Подробнее читайте далее в статье.
В Стандартной библиотеке MQL5 есть некоторые компоненты, которые могут оказаться полезными в версиях кроссплатформенных торговых экспертов для MQL4. В этой статье рассматривается метод создания некоторых компонентов Стандартной библиотеки MQL5, совместимых с компилятором MQL4.
Вы упускаете торговые возможности:
Бесплатные приложения для трейдинга
Форексный VPS бесплатно на 24 часа
8 000+ сигналов для копирования
Экономические новости для анализа финансовых рынков