Блог им. 3XTR

Самый быстрый интерфейс FORTS = Plaza2 + CGate

Итак. Немного скучновато самому раскуривать тему быстрого доступа к бирже. Готов поделится информацией, которой владею на данный момент, а также последующим опытом написания реального торгового робота на этой платформе. Но для этого мне нужны ваши палюсики и хотя бы какая то активность в комментариях. Я не сомневаюсь, что уже давно имеется много людей, которые разобрались в технологии и успешно торгуют, однако на Смартлабе по прежнему достаточно участников, которые спрашивают с чего стоит начать программировать роботов и просят предложить им «что то посерьезнее» чем готовые платные фреймворки, оснащенные всеми необходимыми средствами интеграции как в инфраструктуру биржи так и в инфраструктуру брокера.

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

Вот ряд вопросов, ответы на которые вам нужно будет знать перед тем как начинать разработку своей торговой системы.
1) В чем отличие программных продуктов по типу TSLAb, StockSharp, LiveTradeHFT и прочих от голого софта без оболочки
2) Каким образом биржа пускает к себе внешние приложения, какова должна быть архитектура подобного взаимодействия по мнению биржи
3) Какую клиентскую часть/API для Плаза2 выбрать, их есть две ClientGate и СGate. Не смотря на похожие названия это разные вещи.
4) Как завести учетную запись на бирже, зачем нужна тестовая запись и когда можно будет пускать робота через торговую запись
5) Какой язык программирования выбрать для навписания приложения и где брать тестовые примеры и документацию по АПИ

В комментариях пишите какие еще вопросы вас интересуют по теме HFT, буду пристально обращать внимание на эти вопросы, буду пробовать разбираться в них и объяснять тут простым языком.

Самый быстрый интерфейс FORTS = Plaza2 + CGate 
★25
47 комментариев
Если и правда готовы рассказать то вот )
Интересно было бы узнать стек торгового робота. К примеру
1. На чем написано ядро робота
2. клиентская часть (MVC/WPF)
3. какая СУБД используется Microsoft SQL ?
4. используете ли Microsoft CEP
5. что вы там HFT'шники находите в стакане, хоть один пример.
6. Хотелось бы подробнее про эту схему, актуальна ли она, и схему hft на Российском рынке )
avatar
Евгений, нужно понимать, что я не палю тему, а исследую, попутно освещаю подробности чтоб привлечь людей и посмотреть такие вот картиночки как ваша. Если бы у меня был готовый бизнес-цикл, врядли бы я стал его публиковать. Но все же я могу предложить свое мнение по вашим вопросам:
1) Ядро робота предпочтительно на С++, менее предпочтительно С# или Java. Мой выбор C# в угоду удобству.
2) Консольное приложение, внутренняя организация кода объектная.
3) Никакой СУБД в ядре, а так любая
4) Код должен быть кроссплатформенным, на Microsoft не ориентируюсь
5) В стакане ищутся крупные заявки, которые тормозят движение цены в одну из сторон. В какую сторону тормозят против того движения и засовываем свою заявку.
6) Схема очень общая, но как минимум не включает транспортную инфраструктуру, а это поважнее будет некоторых блочков.
avatar
Евгений, Это слишком сложно. CEP для HFT не годиться. Маркет-мейинг и арбитраж это сильно конкурентный бизнес. Движки написаны под конкретную задачу.
avatar
Здорово, что на смартлабике есть такие люди :>
ну и парочка вопросов от любопытного нуба
Прямое подключение, максимально оптимизированный алгоритм + сервер в локальной сети биржи это уже хфт, или хфт это нечто большее?
Как высока частота дискретизации времени, с которой биржа обрабатывает заявки, 1мс или гораздо глубже?
На сколько микро\миллисекунд я должен опаздывать, чтобы гарантированно не успевать за конкурентами?
avatar
v3Rtex, не могу ответить на эти вопросы, надежных данных пока не имею, по моему, не менее 10мс заявка обрабатывается только в ядре биржи, но не понятно возможно и на шлюзе. Кроме того, это при подключении через интернет. При колокейшене биржа обещает подключать к отдельной инфраструктуре, возможно там ситуация иная, но тогда это плохо, ведь если все игроки были бы в равных условиях, то вообще не имело бы значения какая задержка на стороне биржи. Кроме того, выставление заявок и получение рыночных данных это две разные истории.
avatar
v3Rtex, это хфт. Гарантированно опаздывать вы будете, даже если будете отставать на одну наносекунду, так что любая оптимизация имеет смысл, если ваша цель среагировать на событие раньше других. Раундтрип заявки на бирже сейчас около 11-и миллисекунд. Это время от посылки вами приказа, до получения вами идентификатора вашего ордера в стакане. Данные с биржи приходят каждые 3-мс. Тоесть участники узнают о вашей заявке через 3-мс после того как она встала в стакан. Еще, могу добавить к автору. Не существует на рынке коммерческих систем для тестирования hft стратегий, так что таковую вам придется писать самому, что весьма сложнее, чем реализация робота, т.к вам придется практически переписывать алгоритмы торговой системмы биржи, чтобы тестировать алгоритмы в условиях максимально приближенных к реальным. Так же, если в ваших алгоритмах будет много подстроек, то вам нужны будут прорвы вычислительных ресурсов для подстройки.
avatar
stitrace, не дешевле ли проводить тестирование на живой системе? Существуют процессы, которые нельзя смоделировать, например, та же турбуленция в авиации никак не учитывается конструкторами, просто берется самолет поднимается в воздух и там уже смотрят как он ведет себя на деле. До этого примерно понимают на глазок, что такой запас прочности должен быть достаточным, а еще проще просто берут параметры предыдущего самолета.
avatar
Cristopher Robin, иногда дешевле, иногда нет. Но в самой системе есть один весомый плюс, в процессе реализации, досконально разбираешься в системе биржи. Турбуленция, кстати, тестируется в аэродинамической трубе, насколько я знаю.
avatar
stitrace, ошибаетесь, в трубе нет турбуленции, там ламинарный набегающий поток.
avatar
Cristopher Robin, турбуленция это тоже самое, что и турбулентность? Тогда как раз её и тестируют в аэродинамической трубе, подкрашивая поток воздуха и изучая завихрения за различными элементами конструкции ЛА и изучая какое влияние они оказывают на динамические характеристики. Хотя я не специалист в аэродинамике, могу и ошибаться. Что касается темы. У вас имеется, алгоритм, скажем с парой тройкой различных параметров с известным диапазоном значений. Сколько уйдёт времени на оптимизации на реальных торгах?
avatar
stitrace, все верно, только вы имеете в виду турбуленцию которую создает сам самолет, а я говорю о зоне турбуленции в которую самолет попадает, когда его трясет в воздухе. Первый эффект можно минимизировать, подобрав более гладки формулы поверхностей и это вполне себе неплохо расчитывается, можно даже на компьютерных моделях без трубы придумать годную форму объекта. В вот на турбуленцию которая вызвана конвекцией среды тупо забивают, даже зная все дифуры и параметры среды, все равно считать бессмысленно — процесс не линейный и слишком быстро расходится.
avatar
хорошие сиськи
avatar
Шакиров Альберт, сорян не попал по плюсику…
avatar
Шакиров Альберт, Но и тема автора достойна внимания…
avatar
alt, достойна, если разбираешься в ней
avatar
Шакиров Альберт, тем кто разбирается моя тема бесполезна, имхо.
avatar
Интервал между приходом коммитов на колокейшене 3 мс, на удаленном — 15 мс. Реально раундтрип заявок у меня где- то 5 мс, и это без колокейшена
avatar
uralpro, вместе с задержкой транспорта сколько получается?
avatar
Cristopher Robin, а это и есть с транспортом. Пинг от хостинга до биржи около 1 мс, то есть 2 мс на транспорт. Но это, конечно, в идеальных условиях. Вообще, раундтрип сильно зависит от объемов торгов
avatar
uralpro, у меня на тестовом полигоне, где вообще нет нагрузки ни разу меньше 10мс не получалось, при этом среднее было около 17
avatar
Cristopher Robin, про тестовый полигон сказать ничего не могу, давно уже там не тестирую
avatar
uralpro, возьмем ваши данные как самые актуальные, а можно еще айпи адрес вашего промсервера узнать?
avatar
Cristopher Robin, лучше воздержусь от сообщения моего IP, но могу сказать, что это TEL hosting. Выбирал по меньшей задержке до биржи
avatar
uralpro, я спрашивал айпи промсервера биржи, а не айпи клиента.
avatar
Cristopher Robin, на тестовом полигоне совсем другие цифры задержек, конечно.
avatar
stitrace, больше или меньше?
avatar
Cristopher Robin, сильно больше. Я в начале неправильно написал, т.к. давно не смотрел сколько задержка на колокэшне. Раундтрип заявки действительно около 3-х миллисекунд, но в моменты активности бывает что подскакивает до 10-11, а в редких случаях бывает и >30.

На тестовом полигоне же, я никогда не видел задержки меньше 16 мс.

Задержку я считаю, от момента исполнения POST в приложении до получения ответа в коллбэк своего робота.
avatar
stitrace, очень интересно. Вы через интернет подключены?
avatar
Cristopher Robin, бывает через инет тестирую, это добавляет максимум пару ms к раундтрипу. Но сути не меняет.
avatar
uralpro, 5 мс по плазе2, так?
вопрос, если у меня из дома до брокера пинг порядка 5мс,
есть ли шанс что из дома до биржи будет пинг пошустрее?
я пробовал пинговать 91.208.232.246 (нашел где-то в интернетах) — он не возвращает ответ.
до ближайшего к нему xxx.MACcomnet.net порядка 3 мсек.
как достичь пинга 1мс без колокейшена? у меня до роутера домашнего 1 мс…
avatar
ПBМ, ну если вы в Москве, то есть шанс что напрямую к бирже будет пошустрее. Пинга в 1 мс без колокейшна достичь нельзя. У меня от хостинга до биржи в одну сторону 2 мс. К роутеру вы через вай фай подключены? тогда может быть, там еще шифрование, коррекция ошибок и т.п.
avatar
Правильно ли я понимаю разницу между CGate и ClientGate?
Это две разные библиотеки об одном и том же.
CGate больше подходит для любителей всяких Си и линуксов, а ClientGate для Дельфи/C# и виндовса?
И разницы в скорости, логике потоков и таблиц у них нет?
avatar
Алексей_a72, разница в скорости есть, об этом говорит сама биржа. ClientGate более старая и медленная, ее поддержка скоро прекратится, а CGate новая и быстрая. Насколько я понимаю, преимущество CGate в отказе от СОМ и промежуточных преобразований данных.
avatar
как оцениваете прирост производительности, с появлением возможности компилировать код C# в машинный?
avatar
moonwalker, не оценивал, ориентируюсь на мнение других людей в этой области. Скажу только что в примерах CGate присутствуют даже исходники на ASM.
avatar
на asm это уже хардкор, хотя можно в fpga зашиться, но надо ли это частнику.
avatar
Кстати к вопросу о том, что для hft софт должен быть только самописный. Есть уже много компаний, который предлагают готовые решения, включая бэктест и оптимизацию, в том числе и с fgpa. К примеру deltix, за который просят 90к в год. А маркетсетера вообще бесплатная и обеспечивает хороший латенси.
avatar
moonwalker, что такое маркетсетера?
avatar
Cristopher Robin, marketcetera.org
avatar
moonwalker, вряд ли они предложат решение для РТС за вменяемые деньги.
avatar
stitrace, по фикс протоколу спокойно подключается
avatar
moonwalker, FIX/FAST это, как говрят, обвязка вокруг Plaza 2. Тоесть подключившись в FIX/FAST вы будете гарантированно медленнее других, т.к. получаете оверхед на приведение данных к FAST/FIX формату.
avatar
Как зарабатывает htf, скальпинг?
avatar
Anton, так же как и обычный скальпинг. За счет большого количества сделок достигается большая прибыльность.
avatar
тут еще один момент — плаза2 она небесплатная, стоит например 4700 в ITInvest+10% от биржевого сбора+сам биржевой сбор. Т.е. имеет смысл заниматься этим если стратегия, которую надо реализовывать на плаза2 приносит хотя бы 10тр в месяц (ну 5тр расходы, 5тр останется) — да и то это смешно. Если бы 100тр в месяц приносит, тогда да. Но, предположим, 100тр в месяц. В месяц допустим 2% (т.е. 24% годовых — неплохо). Т.о. депо должно быть 5млн рублей или около того. Просто хотел сказать, если у кого нет 5млн рублей, то плаза2 особого смысла не имеет, проще автоматизировать через терминал брокера.
Счастливый Конец, HFTшники не меряют прибыль в процентах, т.к. от размера депозита величина прибыли мало зависит.
Это потому, что тема почти не масштабируется. Если HFT робот даёт надёжную прибыль при выставлении заявок в 1 лот, это не гарантирует прибыль при заявках в 100 лотов и даже при 10.
Если имеешь хороший грааль (а они есть, см. ЛЧИ) то можно хорошо рубить и при 100к и 200к депозита. Хорошо это от 10к в день.
А вообще отгонять народ от плазы это для правильных людей гуд! Денег вначале надо не мало.
4000р за логин, +4000р если нужен ордер лог и ещё раз и то и то за подключение единовременно. + НДС + ещё брокер своё накручивает + за хостнг, если хош нормальный пинг. moex.com/s324#gateway
А если хочешь в сетку биржи свой комп, то просто за место для него там 10000р/мес + интернет там 2000р/мес(1мbit, 10м->15к). + 1000р за ip-адрес. moex.com/a1374.
Но это всё копейки. Потому, как комп того форм-фактора, что они требуют(1U) стоит от 80000. www.wit.ru/equipment/server/server-Intel-1cpu-e3-1u-hotswap.asp
И биржа ещё не малые бабки возьмёт за установку и конфигурирование всего этого, даже если всё и так настроено.
Так шо, если нет рабочего, проверенного алгоритма, лучше не соваться. Вариант, «щас не пашет потому что скорость мала. а на плазе пойдёт» не прокатит!
avatar

теги блога Cristopher Robin

....все тэги



UPDONW
Новый дизайн