11 марта 2023 smart-lab.ru
В прошлой статье я решил немного рассказать о своем опыте с прямыми коннекторами для биржи и мне очень сильно понравился отклик. Спасибо. Поэтому я начинаю серию статей, которые будут постепенно раскрывать тему прямого подключения к московской бирже (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#, сделать коннекторы удобными для использования для новичков, любителей программистов.
/ (C) Источник
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку: выделить и нажать Ctrl+Enter | Публикация рекламной статьи
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#, сделать коннекторы удобными для использования для новичков, любителей программистов.
/ (C) Источник
Не является индивидуальной инвестиционной рекомендацией | При копировании ссылка обязательна | Нашли ошибку: выделить и нажать Ctrl+Enter | Публикация рекламной статьи