В результате они не знают, что легко могут улучшить качество исполнения своих сделок за счет более быстрой реакции и скорости проведения транзакций.
12 сентября 2016 года были проведены три замера скорости на реальном счете БД «Открытие» на MetaTrader 5 build 1415 и Quik 7.2.23 в одно и то же время.Оба терминала установлены на арендованном сервере VPS в Москве, как и сами торговые серверы БД «Открытие». Торговля велась на одном и том же реальном счете в срочной секции Московской биржи инструментом Si-9.6.
Мы записали на видео все три теста одним роликом, чтобы было видно:
Результаты всех трех тестов собраны в сводной таблице, детальные результаты по каждому тесту представлены ниже отдельными разделами этой статьи.
Тест MetaTrader 5 QUIK Выигрыш MT5 Синхронные операции 9.59 ms 277.80 ms 28.96 раз Асинхронная 0.09 ms 0.30 ms 3.33 раза Обновлений стакана 42.7 в сек 8.40 5.08 раза
Как видно из таблицы, MetaTrader 5 опережает по всем трем тестам со значительным отрывом. Желающие могут самостоятельно провести подобные испытания с помощью приложенных исходных кодов. Само тестирование представлено на видео выше.
Проведенные замеры показали, что язык MQL5 значительно опережает QLUA как в проведении торговых операций на Московской бирже, так и просто в сканировании стакана заявок. Торговые роботы, написанные на языке MQL5, не только считают в 50-100 раз быстрее, но и торгуют до 28 раз быстрее. И при этом вам не нужно изобретать свои велосипеды — приводы, коннекторы и т.д. К вашим услугам готовые торговые классы стандартной библиотеки и масса статей по автоматизации трейдинга.
Надежный торговый робот просто обязан проверять результаты отправки торговых операций — то есть, дожидаться ответа от торгового сервера. Тесты доказали, что MetaTrader 5 значительно быстрее в синхронных операциях. Если же вам нужны асинхронные операции — то и здесь скорость в 3 раза выше. Требуется анализировать поток заявок — и тут MetaTrader 5 даст вам преимущество по сравнению с QUIK за счет в 5 раз более быстрого потока котировок без снапшотов.
Проведенные испытания показали, что для создания быстрых автоматических торговых систем язык MQL5 подходит как нельзя лучше. Никакие коннекторы и библиотеки, подключаемые к терминалу QUIK для ускорения расчетов, не спасут: узким местом будет являться само время проведения торговых операций.
Теперь рассмотрим скучные, но обязательные детали тестирования.
Программа на QLUA при замере времени обращается к системному таймеру операционной системы, который по умолчанию имеет погрешность измерения в пределах в 10…15.6 миллисекунда (чаще всего — 15.6 мс). Поэтому мы повысили точность замеров времени в QLUA простым повышением точности системного таймера до 1 ms.
Сделано это с помощью скрипта на SpeedupSystemTimer.mq5, который вызывает функцию timeBeginPeriod системной библиотеки Winmm.dll
#import "winmm.dll" int timeBeginPeriod(uint per); #import void OnInit() { timeBeginPeriod(1); } void OnTick() { }
Этот скрипт мы запустили перед началом тестов в терминале MetaTrader 5 и разрешив вызов DLL, в результате чего обеспечили погрешность измерений операций в терминале QUIK не более 1 миллисекунды.
В языке MQL5 есть готовая функция GetMicrosecondCount(), поэтому замеры в терминале MetaTrader 5 делались с точностью 1 микросекунда (1 миллисекунда=1000 микросекунд).
#1 Тестирование скорости синхронных торговых операций
Тестирование заключалось в измерении скорости синхронных торговых операций — это значит, что каждая последующая торговая операция совершалась только после получения от торгового сервера подтверждения, что предыдущая транзакция была успешно проведена с полным подтверждением от биржи.
Сначала была проведена серия торговых операций через терминал MetaTrader 5 build 1415, затем такая же серия была произведена через терминал QUIK версии 7.2.23.
Суть испытания заключается в измерении среднего времени 10 синхронных операций покупки по рынку 1 лотом:
Измерение времени, затраченного на синхронную транзакцию, проводилось следующим образом:
#2 Тестирование скорости асинхронных торговых операций
В этом тесте все значительно проще. Десять раз подряд на биржу отправляется приказ на покупкуодного контракта фьючерса Si-9.16. Это позволило нам измерить среднее время асинхронной передачи в QLUA с точностью 1 ms / 10 = 0.10 ms. В MetaTrader 5 погрешности нет, так как в нем используется микросекундный таймер.
Мы не ждем никакого результата наших операций, за каждой отправкой заявки торговому серверу сразу же делается отправка новой заявки:
#3 Тестирование обновления стакана заявок
Ряд торговых стратегий строится на анализе потока заявок в стакане. В языке MQL5 событие изменения стакана можно отлавливать в обработчике OnBookEvent(), а в QLUA через OnQuote().
Тесты скорости обновления стаканов проводились с помощью следующих программ, которые доступны в приложенном ZIP-архиве:
В результате последовательного запуска этих программ на двух разных терминалах было зафиксировано, что стакан в MetaTrader 5 обновляется примерно в 5 раза чаще, чем в QUIK. Скорее всего QUIK просто лимитирует частоту обновлений стакана и не показывает все изменения.
Так как все исходные коды приложены тут же, любой желающий может самостоятельно воспроизвести эти тесты и убедиться лично в представленных результатах.
Мы фанатично относимся к производительности и боремся за каждый десяток микросекунд, годами оптимизируя торговую платформу.
Именно поэтому мы показываем потрясающую производительность встроенного алгоритмического языка MQL5 и скорость торговых транзакций.
www.metatrader5.com/ru/releasenotes
Все последние бета-билды сначала доступны на нашем MetaQuotes-Demo сервере. 1415 сейчас там лежит, анонс тут: https://www.mql5.com/ru/forum/23/page19#comment_2797039
Такое ощущение, что некоторые не читают текст, а сразу идут в комменты.
МТ5 в 28 раз быстрее на синхронных операциях, в 5 раз чаще стакан обновляется и есть возможность в 5 раз быстрее среагировать на новую цену.
Большинство трейдеров ведь даже не понимали, какое качество обслуживания им дают.
1) «брокерам не интересны клиенты, дрочащие ...»
2) «деньги идут от игроков… для них скорость не решает ничего»
Самое главное, что в бизнесе торговых платформ не брокеры решают, а трейдеры. То, что выберут трейдеры, то и покупают брокеры. Это было проверено раз 500 на практике.
Поэтому сейчас у трейдеров есть отличное решение, а брокеры быстро подтянутся, как начнут терять клиентура на Квике.
-начнут терять клиентура на Квике.
Не будут терять клиента на квике, потому что вы не предоставляете ничего потенциально нового.
Клиентов больше будет, скорость ниже будет.
Причин много: полное отсутствие инвестиций в сферу платформ, брокеры практически никогда не рекламировались (их рекламные бюджеты просто смешные), общее нежелание работать с российскими биржами.
Вы видимо не в курсе, что у большинства (больше сотни) российских брокеров не более 50-100 клиентских счетов. При такой клиентуре вообще не может быть и речи об развитии и инвестициях.
Фактически весь ритейл держат первые 5 брокеров.
По изучайте рынок.
-российских брокеров не более 50-100 клиентских счетов.
С таким кол-вом счетов никакого бизнеса не будет. Они тем более не потянут mt.
Странно конечно говорить о сравнении функционала.
Реальность такова, что миграция трейдеров российской биржи на МТ5 идет давно и постоянно.
Люди потрясающе иррациональны, но все равно решения с функциональными преимуществами на порядки занимают рынок.
Не путайте инерцию с рациональным поведением, кстати. Людям нравится думать, что они обоснованно до мелочей принимают решения.
Вот вам показали пропасть, но у вас обоснованные мелочи…
MetaQuotes Software, лично я вручную не торгую, но большинство из моих знакомых да, торгуют вручную. Их по этой причине на мт вообще никогда не перетащить будет и квика достаточно.
Мелочами вы считаете брокерский договор в открытии? вы его сами то читали? под такой договор подпишутся только начинающие. Про БКС ничего не знаю, но им не доверил бы ни копейки.
Единый счёт… ну да соглашусь что это вообщем то мелочи, не стало бы важным критерием отказа от платформы.
Опционы — их нет, значит нет смысла вообще говорить о мт5 как о достойной платформе.
Окна-… да тоже по большому счёту пофигу
Ваша история с кухнями и виртуальным дилером — из-за этого я никогда не перейду на ваш софт крупными деньгами, хотя терминал реально лучше квика, я с этим не спорю и тестирую все стратегии я сначала у вас, так как быстрее пишется и есть тестер, а после уже загоняю всё на луа.
Опционы сделаем, но они никак не лимитирующий фактор на MOEX. Это ведь только повод что-то сказать против МТ5, а никак не рабочий инструмент масс (и не масс).
Про кухни вспоминаете тоже в качестве повода против, хотя 100% знаете, что каждая рыночная и лимит сделка попадает на биржу и получает свой тикет. Причем попадает на биржу во много раз быстрее вашего текущего варианта.
В противовес стоит язык в 50-600 раз быстрее, скорость сделок в десятки раз быстрее и настоящий рилтайм режим обновления данных. Не знаю, что меня бы удержало.
Со стаканом согласен, в арке сами говорят мы стакан медленный создали, с задержкой в 20 миллисекунд.
-МТ5 в 28 раз быстрее на синхронных операциях
Это зависит от загруженности сервера.
Вы уверены, что загруженность сервера метатрейдера и квика одинаковы?
Мы не зря создали 5 поколений торговых платформ, каждый раз с нуля проектируя новые и работая с постоянно увеличивающимися нагрузками.
Скорость отработки торговых заявок от загруженности нашего торгового сервера практически не зависит и не должна зависеть. Это прямая труба на биржу.
Труба означает, что все заявки прямиком летят в биржевой шлюз и затраты на стороне сервера лишь в поверхностной проверке достаточности ГО. А это не требует практически никаких ресурсов и на это никак не влияет загруженность сервера.
Чтобы труба заполнилась, надо всех российских брокеров посадить на один торговый сервер с коннектом на биржу и даже в этом случае нагрузить не получится. Банально денег у трейдеров столько нет, чтобы создать поток заявок.
Кроме того, у нас кластерная система с линейным увеличением мощности путем добавления дополнительных трейд и аксес серверов. Под нашу масштабируемость мы не найдем даже потенциальной возможности нагрузиться.
Потому что знаете, что платформа тут не при делах. Просто пытаетесь раз за разом в каждой нашей теме вбрасывать свою ложь.
Вы так рьяно выступали про тормоза, игнорировали мои требования предоставить доказательства, а теперь оказывается, что это все «с форумов».
Я в общем-то не сомневался.
У вас походу тоже получаются задержки и вы тоже не выдаете все изменения в стакане? или выдаете все изменения в стакане?
Даже для акций/облигаций?!
Если есть шлюзы со внешним исполнением, то торговый сервер является лишь быстрой тупой трубой, у которой главная задача — быстро передать данные.
Ответ не понял, спрошу иначе: риски для акций/облигаций — где, когда и кто считает?
Чтобы сравнить, кто быстрее, есть уже отработанная методика. В данном случае, с двух терминалов просто посылается заявка. И по номеру заявки смотрится кто быстрее. Если нужно уточнить и время, то смотрится ордерлог на плазе/фасте.
Андрей К, все абсолютно корректно.
Там не мало ли, а просто настолько плохая реализация. В соседней статье мы показали, что сам язык в 50-600 раз медленнее чем MQL5.
Тестировать надо именно реакцию на терминале. То есть, полный цикл туда-обратно.
В тестах показано три проигрыша:
1) в частоте реакции на приход тиков (да, в Квике о 80% тиков алготредер не в курсе)
2) в скорости синхронных операций (в большинстве случаев так и работают трейдеры)
3) в асинхронных операциях (тут преимущество небольшое, но все равно тормоза синхронных операций показываю, что канальный процессинг у Квика в десятки раз медленнее)
Кроме того, вот есть простое видео трех платформ MetaTrader 5/Quik/SmartX, где просто визуально видно заведомое преимущество MT5 в скорости обновления информации:
Но все равно. К моему опыту стоить прислушаться. Если сравнивать, то лучше при одновременной посылке заявок.
А так доля правды есть. Особенно, что квик очень много тиков не показывает. Скорее всего агрегирует их.
И как обновления стакане в mt5 отличаются от Plaza2?
Мы всегда посылаем все 100% котировок на все терминалы. А приведенный тест доказывает, что Квик не показывает трейдерам 80% апдейтов котировок в QLUA.
Понимаете, что именно вы защищаете?
Очень стараетесь и вам плевать на любые доводы.
Спасибо, что признались в том, что никогда тормозов не видели в МТ5. Осталось признаться, что не использовали МТ5 на реальных счетах MOEX.
-при абсолютном техническом незнании
То что вы несете про lua на quik - это самое настоящие не знание того, как устроен lua и его возможности и архитектура квика. В общем-то я по-мере своих знаний пытаюсь донести свою точку зрения.
-Очень стараетесь и вам плевать на любые доводы.
Вы ошибаетесь. Если ваши доводы корректны, то я с ними соглашаюсь. Например, про стакан — я им не доволен в квике, но скорости хватает. Но то, что вы говорите про луа и его возможности - это полное не желание видеть мощь и силу lua + native язык программирования.
Не лезьте тогда обсуждать и обвинять МТ5, раз не использовали его.
Посмотрите видео внимательно, пожалуйста.
Именно раундтрип и показан у синхронных сделок:
И вот он в 28 раз меньше. То есть, за то же самое время в МТ5 вы сможете сделать 28 синхронных операций.
Видео было специально приложено, чтобы не было обвинений в подтасовке.
Как видите, еще никто не смог опровергнуть результаты. И это сложно будет, так как мы провели тесты чисто.
Тут сравниваются не брокеры, а технические решения. Российские брокеры вообще очень далеки от необходимости достигать каких-то технических вершин.
Мы показали, как Открытие, запустив MetaTrader 5, резко улучшило качество исполнения торговых транзакций и дало трейдерам быстрые рилтаймовые рыночные данные без всяких снепшотов.
Мы будем дальше работать над оптимизацией всех маршрутов и для нас полученные 10 мс — это слишком много.
1. Окна у Квика как-то удобнее настраиваются. В МТ5 широкие рамки. Настроек меньше. Короче, дизайн МТ5 не понравился. Но это не главное.
2. Чтобы торговать фъючами и акциям нужно ставить ДВА MT5. Из одного торговать нельзя.
3. «Единый» счет для MT5 не работает (БКС). Нужно держать два депозита: один для фъючей, другой для акций.
Это очень не удобно. Из-за этого не стал рассматривать MT5.
Над единым счетом работаем. Тут не все от нас зависело.
Как вы смотрите на то, что вам сейчас показывают лишь часть котировок, чарты обновляются не в рилтайме, а сделки вы совершаете в десятки раз медленнее возможного?
Не является ли это более важным для трейдинга?
Т.е. как это? вы может не в курсе — но это деньги. Не виртуальные в БД, а реальные. И разносить их по разным корзинкам — дорогая роскошь.
И вот когда вы сумеете всё в один счет запихать — вот тогда и будет смысл сравнивать раундтрипы. Пока же вы показываете ускорение на системе с существенно порезанным функционалом как раз там, где всё не просто в смысле скорости.
MetaQuotes Software> Тут не все от нас зависело.
Можно ли где-то почитать про это поподробнее?
Сделаем мы единый счет. Но это никакого отношения к скорости проведения транзакций не имеет. Тестирование именно торгового латенси.
Это вы вместо простого ответа на технический вопрос пытаетесь замаскировать словоблудием и обвинением задавшего вопрос, указывая, что вопрос — неправильный с вашей точки зрения. И это уже удивительно.
MetaQuotes Software> Сделаем мы единый счет.
Славно. Тогда и продолжим разговор.
После единого счета разговаривать уже будет не о чем, вообще то.
Конечно крайне странно, чтобы с одной машины (вы ведь на одной машине тестируете?) была такая жуткая разница, но возможно вы в самом деле что-то круто оптимизировали в части сетевой кухни между терминалом и вашим сервером.
Но вот какая штука получается. Для ручной торговли — это пофик. Там важнее, чтобы графики не лагали на проливах. Для скоростных роботов — а кого обгонять собираемся, за кем неэффективность подбирать будем? маркет-мейкера? соседнего робота, использующего выделенный интерфейс на биржу? очевидно, их мы никогда не обгоним по определению. Но тогда что нам даст такой прирост?
Безусловно, такой разрыв — прекрасен сам по себе. Но что он даёт, кроме цифр с тесте? Вот бы какие рассуждения участников любопытно было почитать.
Вы его не смотрели?
Для ручной торговли пофиг? Ну да, ты видишь в разы меньше обновлений в стакане (из алгосистемы тоже), чарты у тебя живут своей жизнью и обновляются не в рилтайме, все тебя обгоняют в биржевой очереди. Конечно пофиг.
Тут несколько ярых защитников собралось, которые принципиально не желают видеть ни тормоза языка в сотни раз, ни тормозов исполнения/регистрации сделок в десятки раз, ни слайдшоу в стакане.
Причем когда мы показали и доказали тормоза QLUA языка от 50 до 600 раз, нам заявляли, что «это фигня, покажите скорость исполнения сделок».
Вот показали скорость сделок и их предпочли не заметить и попытались разыграть карту «чарты не нравятся и вообще что-то где-то слышали про тормоза».
так что с количеством клиентов на сервере? ответ будет?
Если вы считаете, что от количества счетов это зависит, то сильно наивны.
Вот простой пример только что сделал на нашем MetaQuotes-Demo:
— 3 118 финансовых инструментов
— 245 228 активных счетов
— 3 150 терминалов в онлайне
— 142 730 открытых позиций
— 71 582 активных лимит ордеров
С помощью того же робота SyncTradeTest.mq5 с VPS совершил 1000 синхронных сделок:
— SyncTradesTest (GBPUSD,H1)
— Total time: 1387.791 ms, average: 1.388 ms in 1000 trades
За 1.3 секунды было совершено 1000 синхронных сделок со средним латенси 1.388 мс. Конечно на сервере нет биржевого шлюза. Зато есть 245к счетов и тонна другой нагрузки.
Это демонстрация для iQuik, который уперся в мысль, что все должны писать софт, зависимый от количества счетов/сделок.
Показывается, что при наличии хорошо нагруженного сервера время исполнения и маленькое и стабильное. В режиме шлюза к общему времени исполнения добавилось бы чистое время шлюза.
Чак Норис задумчиво курит в уголке. )
Там же точнейший мультивалютный(моделируются множество символов) тестер с миллисекундной точностью!
Вы даже визуализацию включить можете.
могли бы вы уточнить: почему в коде QLua время получения ответа биржи вы берёте по событию OnOrder, а не по OnTransReply?
И еще, у вас в коде комментарий ошибочный попался; ошибки для тестов нет, просто на будущее:
— вызывается при получении новой стоп-заявки или при изменении параметров существующей стоп-заявки
function OnTrade(order)
а так у вас продукты хорошие, и интернет сообщество сильное (это уже серьезно) спасибо
Юрий Ч., в тестах получал повышение быстродействия своих алгоритмов на 5 порядков, правда, одновременно и алгоритмы переработал (быстродействие в ущерб памяти). Выжал почти все, есть еще потенциальный резерв в замене плавающей арифметики на целочисленную (не оценивал).
Там компилятор просто зверь. И никакого геморроя с длл.
Ответьте, пожалуйста, на мой второй вопрос (выше Вы их не заметили) — при такой скорострельности MT5, не планируете ли ввести секундные таймфреймы (типа 1, 2, 5, 10, 15, 30)?
Если трейдер хочет, он сам может нарезать себе любые таймфреймы для анализа. Но «рыбы там нет».
А по поводу DLL из QLUA. Вы заметили, о чем статья?
В ней ведь четко доказано, то уведомления о тиках вам будут передаваться в 5 раз реже, чем в МТ5. То есть, ваш алгоритм не будет знать о подавляющем большинстве изменений на рынке.
Ну и торговые операции из QLUA экстремально медленные. Ваши заявки будут попадать в конец очереди исполнения очень запоздавшими.
Что дает МТ5 для трейдеров на MOEX?
Кардинальное сокращение разрыва в скорости между HFT и обычными трейдерами. Вас меньше будут обгонять на пути в стакан всякие умельцы, которые апплодируют наличию медленных терминалов на рынке.
Если я буду делать все сам, то мне и терминал не понадобится, даже такой замечательный, как MT5. А где «водится рыба» — мне знать лучще. Поверьте, для своих алгоритмов и конкретных условий торговли, о которых Вы ничего не знаете, я выберу оптимальный вариант, без излишеств.
Когда мой брокер даст мне доступ к площадкам MOEX, я проверю MT5 в моих реальных условиях.
Спасибо за ответы на мои вопросы.
Пишу в mql5 свои функции, потом из этих функций как из блоков пишу большие функции и использую из в своих экспертах.
Есть мнение что такой способ написания кода будет медленнее чем если бы я в своиз больших функциях не использовал самописные маленькие функции, а фактически разворачивал бы их и писал все внутри большой функции.
Надеюсь вы поняли, что я имел в виду )
Очень просто: https://www.mql5.com/ru/vps?server=Open-Broker
прямо в броузере можно увидеть лучшие варианты размещения на хостинге своих терминалов:
В пару кликов из терминала MetaTrader 5 выбираете ближайший сервер с пингом 1-2 мс и мигрируете свое рабочее окружение терминала вместе с роботами (без исходников) в облако. Потом можно контролировать работу роботов через панель управления.
Еще уточнение: показываемый нашим сервисом пинг — это не сетевой ICMP пинг (который заведомо ниже нашего), а реальный пинг в ядро торгового сервера по сетевым протоколам платформы.
При пинге в 2 миллисекунды до торгового сервера МТ5 реальное полное время исполнения сделок на бирже можно получить в пределах 10 мс. Что и было продемонстрировано в статье.
странно, почему на реальных торгах у меня в среднем 150 мс уходит на заявку и на сделку? Пинг 17 мс, сервер Московский.
быстрее в 4 раза, конечно, чем QUIK, но не 10 мс, какие 10 мс...
может настраивать надо?
я просто скачал и ничего не настраивал