Приветствую.
В прошлой статье я решил немного рассказать о своем опыте с прямыми коннекторами для биржи и мне очень сильно понравился отклик. Спасибо. Поэтому я начинаю серию статей, которые будут постепенно раскрывать тему прямого подключения к московской бирже (moex) с организационной части и с технической.
1. На текущий момент
Twime является одним из самых быстрых, современных коннекторов к бирже, но есть некоторые нюансы. Московская биржа это не только срочный рынок, но также и фондовый и валютный рынок.
И вот тут выходят нюансы :)
Срочный рынок стоит в месяц
4 000 р./месяц, а если вы захотите торговать на фондовом или валютном, то вам придется уже платить 30 000 р. в месяц. Также отдельно стоит сказать, что Twime — это только работа с ордерами. То есть никакие маркет данные отсюда вы также не сможете получать, а это означает, что вам также понадобиться еще и Fast подключение для маркет данных (об этом чуть позже).
Я думаю, что большинство читающих здесь людей не профессиональные HFT трейдеры, а скажем так «любители», которые хотят поиграться в арбитраж к примеру и платить по 30к в месяц довольного много, поэтому такими подключениями в основном пользуются серьезные «компании/конторы», которые занимаются арбитражем на российском рынке.
Twime (самый быстрый, удобный в плане использования), но довольно дорогой и соответственно из-за этого не универсальный.
2. Далее у нас идет коннекторы типа
Fix/Fast. Fix — это протокол для работы с ордерами. Fast — это поставщик маркет данных.
FIX — это
международный универсальный протокол для обмена сообщениями для торговых систем. Используется не только московской биржей, но и рядом других бирж. Слово «универсальный» внушает надежду на неполучение кривых реализаций от биржи, но к сожалению совершенно не помогает скажем так для быстрого развертывания коннектора на том же языке C#. То есть просто указать какой тип биржи использовать и «включить его» не получиться. О технических реализациях я буду расписывать чуть позже. И соответственн
о FAST — это протокол созданный на основе протокола FIX, чтобы отправлять большее количество данных. Нам к сожалению от этого ни горячо ни холодно, а скорее грустно потому FAST — это еще один коннектор, который придется отдельно создавать и описывать.
FIX довольно универсален и подходит и для срочного и валютного и фондового рынка. Fast — это маркет данные и здесь то же самое, подходит для всех типов рынка. Стоимость 4 000 р в месяц для Fix и столько же за Fast. Ну только если вы не хотите к примеру для маркет данных использовать Quik бесплатно :) (шутка)
Для подключения к FAST нужен будет специально настроенный VPN и ваш статический IP должен быть добавлен биржей в «белый лист подключения». Но для подключения к самим данным для Fast не нужен ни логин, ни пароль. Для подключения к FIX нужен будет логин и пароль, но VPN и т.д. уже не нужны. Все эти этапы в инструкциях у биржи описаны крайне криво, часто документация не обновляется и на процессе «подключиться через VPN» можно застрять просто на недели… К сожалению это правда.
3. Дальше у нас идет динозавр USSR разработки и мастодонт — это
Plaza2. Можно назвать это «кибер панк» разработка. Подходит для рынка ФОРТС. Оба предыдущих коннектора в примитивном плане просто подключаются через интернет соединение. В случае с плазой вы ставите себе «консольное приложение роутер», которое само подключается к серверу биржи.
Вы устанавливаете себе «роутер приложение» на пк — это такое консольное приложение, которое кстати не отображает никакой информации :) Просто висит открытым и все, а логи все пишет в папку. Правда, если оно сразу вылетает при включении, то вы поймете, что с ним что — то не так и вы не подключились.
Вы устанавливаете этот роутер себе на компьютер, прописываете ему все настройки и вот этот роутер уже подключается к серверу биржи. А вы, собственно говоря, подключаетесь к этому роутеру у себя на пк. В этом плане Plaza2 хорошенько уступает своим предшественникам в плане количества лишних звеньев. Чем больше звеньев, тем больше вероятность того, что где — то что-то, то отвалиться и не будет работать.
Что дальше делать со всей этой информацией?
Хотелось бы начать писать бота и взять какой-то готовый код.
Я распишу свой ход мышления и распишу, какие есть варианты решения.
Тут вот и начинается история, что нормальных и открытых решений в духе «взял библиотеку, прописал настройки и подключился» практически нет. У самой биржи есть примеры, но они очень плохо собраны. К примеру под FIX валютный рынок будет лежать пример на языке python, причем с очень низкоуровневыми моментами, где вам придется самостоятельно расписывать весь протокол и познавать все его нюансы, чего я бы сам не стал делать. Для FIX срочного рынка может лежать пример на C++. У меня такое ощущение, что это сами трейдеры присылали им примеры и биржа их просто кидала на FTP. Потому что для Plaza2 к примеру есть пример на языке C#, но это не собранный готовый проект, а просто куски кода в разных CS, которые вам самому придется собирать :) Также видел формат кода без референсов для Fast на языке C# в txt файле КАРЛ! С любовью от Moex :)
На текущий момент готовые решения предлагает S#, но тут есть важные нюансы. Вы можете просто купить подписку на закрытый коннектор и использовать его. Но, по моим тестам скорость использования такого коннектора абсолютно непредсказуема, так как сам по себе S# тянет огромный шлейф архитектуры внутри. То есть «да, вы может и пришли поиграться», но на выходе можете получить непонятно что по скорости. По крайней мере у меня было так, если будет найдены какие-то ошибки или недоработки — это может исправляться вечно. Берете вы twime oт S# а по скорости получается Transaq, зато HFT доступ! Очень много дополнительно функционала, который не нужен, в итоге перестает работать то, что нужно всегда. В общем полагаться на это к сожалению нельзя.
Пользоваться готовыми коннекторами можно только у доверенной компании, которая не выкатывает обновления и фиксы каждые 5 минут.
Нужны исходные коды. Но опять же исходные коды у S# я не стал покупать, потому что было предположение, что там вас будет тоже ждать ад и кошмар, который придется переписывать. То есть рентабельность от такой покупки под огромным вопросом. Если вы сам не программист, то придется опять нанимать программиста, чтобы переписывать это все. Конечно готовый код скорее всего поможет вам хоть как — то поднять какое-то простое подключение, но на этом все.
Просто так на открытом пространстве найти готовые проекты на гитхабе под коннекторы — так же не получиться. Количество пользователей очень маленькое. Либо код будет устаревшим, либо его все равно придется полностью переписывать и поднимать. Вот и получается, что каждый пишет сам у себя где-то в кулуарах, ну и в промышленное или другое использование это никак не выдает.
На текущий момент после первой статьи я нашел, что у Alex Wang (o-s-a.net) есть коннектор к Plaza2 в открытом состоянии. Вы можете скачать проект и оттуда взять коннектор и это гуд. Коннектор не самый свежий:), да и как я и говорил, разработка довольно редкая, поэтому довольно сложно это поддерживать постоянно в самом свежем виде. И в целом это гуд, если у вас есть опыт чуть больше любителя, то я думаю, что сможете все поднять и запустить.
Каждый боевой коннектор должен иметь свой сертификат и этот сертификат периодически нужно обновлять. Каждый «разработчик коннектора» должен предоставлять свою ключ сертификации и без него у вас не получиться торговать на боевых аккаунтах. Под плаза 2 это ключ сертификации, под Fix/Fast вы получите имя своего сертифицированного ВПТС и он потом используется при открытии боевого аккаунта у брокера. Каждый коннектор должен быть сертифицирован биржей, чтобы его можно было использовать на боевых логинах.
Я пошел по пути сборки коннекторов с нуля, мне помогали различные трейдеры программистами и делились своими наработками, так или иначе все равно пришлось изучать, как это работает с нуля и многое переписывать, дорабатывать. Об этом я буду рассказывать в следующих статьях. Этот путь довольный трудный и тяжелый, но зато на выходе вы получаете то, что вам нужно и вы можете быть уверены, что «очередное объявление» не убьет всю систему.
В этой статье, я также не рассказал еще про ASTSBridge. Посчитал не важным его описывать, так как он не представляет и никогда не представлял интереса для HFT трейдеров.
В следующей статье я распишу как самостоятельно развернуть свой коннектор к FIX/Fast, потому что считаю его максимально универсальным и не сильно проигрывающим по скорости для любителей.
P.S. Есть идеи выпустить свои «упакованные коннекторы» в массы на популярном C#, сделать коннекторы удобными для использования для новичков, любителей программистов.
Это жестко, конечно, то в выходные, то в пятницу вечером..
Плюсую и читаю.
немного не корректно. Это это же типа аналог плазы, только для валютного и фондового. И если отвязаться от всех терминалов, то лимиты (грубо говоря свободные свои средства) надо же от куда получать и другие плюшки для торговли, получается, чтобы полноценно торговать на валютке и фонде без терминала, то нужен Bridge. Если полноценно торговать на срочке без терминала, то нужна Plaza
А так для полноценной полной автоматизации к сожалению в купе с Fix/Fast нужно будет еще использовать ASTSBridge, но для самой отправки заявок его не используют. Вот такой бутерброд
Спасибо огромное за статью!
Ни разу не HFT трейдер, но очень любопытно узнать, как это всё устроено)
Они работали, а вот проект, который лежит на ftp биржи — нет )
https://github.com/objectcomputing/mFAST
https://github.com/epam/fix-antenna-net-core
QuikFix или QuickFix?
QuikFix это вроде не прямой коннектор.
QUICK FIX
На фикс\фаст один логин — один робот или надо добавлять в коннектор функции шлюза для нескольких роботов. Твайм — то же самое. Поэтому фикс/фаст и твайм не получили массовый интерес.
Учитывая то, что брокерские апи тоже улучшаются и сейчас имеют роундтрипы по заявкам от 20мс, дают доступ сразу на все рынки и бесплатны, а биржа повышает цены на биржевые апи — доля потребителей биржевых шлюзов ещё больше сократилась. Я 10 лет пользовал плазу и отключил в декабре прошлого года перед повышением цен.
Смартком — сразу на сишарпе и очень удобный. Атентис от Алора — на сишарпе и тоже все работает из коробки. Опенапи от Алора — на любом языке, простой, примеры рабочие.
От 8мс у меня без плазы на срочке, от 30мс на фонде.
это уже совсем другой уровень. Трудозатраты при моем трейдинге не окупятся никогда.
Я тут у Открытия долго выяснял где именно у них стоят сервера МТ5. Выяснил, поставил в тот же датацентр. В итоге до Открытия пинг 1.9 мс, а до Финама 0.9 мс. Занавес…
судя по пингу у Финама как раз в этом ДЦ, а у Открытия нет. Или у Открытия какая-то кривая маршрутизация по сравнению с Финамом.
скажи как проверить, я проверю.
Я пробил трасером через протокол icmp, udp, tcp сервер квика, но сигнал теряется. Понятно только, что он через билайн заходит в macomnet и пропадает. Рувдс хорошо в таких задачах пробивается.
А юзать просто. По windows запустить
tracert 87.118.239.80
тебе начнут принтоваться узлы, через которые проходит пакет. Потом эти ip можно вбить в whois сервисе и глянуть кто такие. Но опять же, у открывашки теряется сигнал.
Опционов нет, но мне они и не нужны.
Дмитрий Овчинников, эти цифры для какого типа подключения?
Вы конечно тонко подметили про ограничение транзакций под твайм 30шт в сек. Но ведь это дело правильной архитектуры платформы. Коннекты должны же как то масштабироваться. То есть слой коннектов в ПО — это вообще отдельный слой, который алго совсем не видят. А там уже хоть 100 коннектов твайм, хоть + плаза и + фикс, это не должно влиять никак на алго. Ну мне так кажется.
По поводу API броков и безограничения. Здесь есть маленькая хитрость. Броки искусственно ограничивают ваши транзакции, точнее их частоту, но вы через API этого не знаете.
И я еще раз хочу заметить, что я отвечал именно на вашу мысль, что 1 робот ---> 1 твайм. Зачастую, вы наверное знаете, что у многих, 1 робот ---> гора тваймов, из за их тонкостей работы, когда один твайм может легко обгонять другого. Так что это все к правильности построения архитектуры.
Вы правильно пишите — коннекторы, отдельный слой, масштабироваться, синхронизировать тваймы. Но это не нужно в большинстве случаев для частных трейдеров. Чтобы качественно сделать коннектор на твайм или фикс\фаст — по аналогии с роутером плаза, чтобы подключать в коннектор разные стратегии и не ронять свой коннектор на каком-нибудь эксепшн — это надо скилл программиста конкретно прокачивать. Поэтому роутер плаза был для меня идеален. Я специально пытался его уронить через робота и не смог ) И многие не хотят тратить полгода-год на такой коннектор-шлюз, и не все вообще это смогут написать. Сама биржа могла бы сделать такой роутер на фикс\фаст и твайм, но не хочет. Примеры на питоне для быстрых шлюзов — смехотворны. И сравните с брокерскими апи — бесплатно, при минимальных знаниях 30-50 строк кода по примерам — и прямо сейчас, а не через месяц-полгода, уже подключаешься, отправляешь заявки. Уронить торговый сервер брокера через кривого робота — ни разу не слышал об этом.
Лично я не хочу быть программистом, мне интереснее заниматься улучшением алгоритмов и анализом, чем разбираться в синтаксисе. Спасибо создателям чатгпт — реально помогает.
Я бы очень хотел, чтобы биржа, по аналогии с брокерскими апи, сделала один упрощенный протокол, со всеми рынками, не быстрый — с роундтрипами 20-30мс, с возможностью работы через всех бркоеров, с разумной ценой, с едп и с возможностью использования любого ЯП — и вот тогда было бы идеально. И сделать такое им реально несложно. Но биржа обязательно хочет сделать по-взрослому и объединить все рынки в торговом ядре и никогда этого не сделает )