Онлайн-трейдинг: Как стать разработчиком систем для торговли на бирже
Фондовый рынок — высокотехнологичная отрасль. Для того, чтобы инвестор мог не вставая с дивана купить акции той или иной компании, задействуются различные протоколы передачи финансовых данных (например, FIX, FAST, Plaza II), терминалы, брокерские и биржевые торговые системы, а для обеспечения работы всей этой экосистемы используется передовое «железо».
При этом, для того, чтобы поучаствовать в интересных проектах инженеру вовсе не обязательно ехать за границу — новые технологии активно внедряются и на российском фондовом рынке. Мы решили подробнее рассказать о двух таких проектах — торговом терминале SmartX и брокерской системе Matrix, и пригласить заинтересованных хабраюзеров принять участие в их разработке.
Терминал для торговли на бирже
Онлайн-трейдинг в России развивается уже много лет. И наш первый торговый терминал SmartTrade появился еще в начале двухтысячных годов. Однако, софт, как и все в этом мире, устаревает, и иногда нужно просто двигаться дальше.
Поэтому было принято решение о создании нового флагманского терминала, который бы вобрал в себя все лучшие качества наших предыдущих продуктов, но был более современным, как в плане интерфейса, так и функциональности, и, при этом, более гибким, чем его предшественники.
Во многом поэтому мы решили разрабатывать торговый терминал SmartX не полностью с нуля, а лицензировать технологии американской компании Modulus FE, в частности, торговую платформу M4, которая поставлялась вместе со всем исходным кодом и могла быть модифицирована так, чтобы удовлетворить нужды наших клиентов.
Быстро стало ясно, что технологии Modulus в полной мере не удовлетворяют нашим нуждам и реалиям рынка. Поэтому потребовались значительные доработки, в частности, в области быстродействия терминала. Например, мы отказались от стандартных графиков и выбрали новое графическое ядро — open-source проект Gordago, — которое затем было сильно «допилено» в соответствии с нашими нуждами в плане производительности.
Также решения Modulus FE строятся на платформе .NET, поэтому изначально все элементы управления были стандартными «дотнетовскими», но, все по тем же соображениям производительности, было решено от них также отказаться. Неплохой заменой, после некоторой доработки, стал еще один открытый проект SourceGrid. Скорость обновления таблиц на больших объемах данных в конечном счете удалось увеличить почти на 2 порядка. На этом мы не остановились и провели еще целый ряд работ, направленных на оптимизацию быстродействия — подробнее об этом в нашем материале.
Как это часто бывает, начав что-то менять, остановиться трудно, и уже после старта разработки нового терминала, были начаты и работы по созданию совершенно новой брокерской торговой системы. Основная часть этих работ была завершена осенью 2013 года, получившаяся система получила название MatriX. Поговорим подробнее о ней.
Торговая система брокера
В брокерской системе предыдущего поколения клиенты получали все биржевые данные (заявки, сделки, состояние счета и т.п.), подключаясь к единому серверу доступа, то в проекте Matrix было решено разделить эти потоки данных на два основных «банка»: сервера по приему заявок (Order Mamagemegent Servers — OMS), и сервера, поставляющие клиентам рыночные данные и информацию о счете.
В аппаратном обеспечении комплекса используются блейд-серверы PowerEdge и системы хранения данных PowerVault от компании Dell.
Помимо архитектуры, качество работы брокерской торговой системы зависит от качества софта, реализующего основные функции, а также и от надежности железа, на которых он работает. Для того, чтобы быть уверенными в том, что наш продукт действительно соответствует мировым нормам, были проведены тендеры среди поставщиков как железных решений, так и разработчиков программного обеспечения.
В результате, железную часть новой системы обеспечила компания Dell, а программные средства (и некоторые аппаратные) – нам поставила IBM.
Под каждым из таких серверов-балансировщиков находится еще несколько серверов, решающих локальные задачи. Подключения клиентов распределяются между ними так, чтобы каждый сервер получал одинаковую нагрузку.
Между собой и с биржевой торговой системой наши сервера связаны с помощью специальной высокоскоростной шины, построенной на серверахIBM Data Power X75 и программном обеспечении MQ Low Latency Messaging.
За этой шиной уже находятся сервера биржевых шлюзов. Через какой из них отправить конкретную заявку, или с какого из них взять данные, шина решает самостоятельно. В принципе – этого достаточно для нормального функционированя всей системы, но мы также добавили в нее и сервер управления рисками, который, в отличие от прошлой системы, теперь не является центральным звеном, и какие-либо проблемы с ним не вызывают остановки всей системы.
Еще одно нововведения, это так называемые FIX-сервера, которые позволяют подключать к ТС MatriX приложения, написанные под протокол FIX. Об этом решении мы подробнее расскажем в отдельном топике.
Конечная архитектура системы выглядит так:
Такой «матричный» подход к построению системы позволил снизить ущерб от вероятных сбоев (отказ конкретного звена не приводит к необратимым последствиям), а также позволяет легко масштабировать систему в будущем. Что самое важное – драматически повысилась скорость работы. Теперь скорость обработки заявки в системе составляет от 500 микросекунд до 2 — это очень хороший результат. Общее время прохождения заявки от момента попадания в «Матрицу» до вывода ее в биржевые системы составляет от 2 до 5 миллисекунд (без учета потерь на каналах связи до системы) – это примерно в 40/50 раз быстрее, чем в системе предыдущего поколения.
К чему это все
Мы постоянно дорабатываем свои продукты, SmartX и Matrix — далеко не единственные в их ряду. Для того, чтобы сделать их еще более надежными и быстрыми, нам нужны высококлассные инженеры, которых привлекают биржевые технологии. Если вы из их числа, то ниже информация для вас. Итак, кого мы ищем:Разработчик C# (работа над терминалом SmartX)
- Отличное знание ООП;
- Знание стандартных алгоритмов;
- C# GUI WINFORMS 2+ года;
- Win32 2+ года;
- Опыт разработки многопоточных приложений;
- Умение работать в команде с аутсорсерами;
- Умение пользоваться системой контроля версий (неважно какой);
- COM/dcom будет плюсом.
Серверный разработчик C++ (торговая система Matrix)
- Отличное знание ООП;
- Знание стандартных алгоритмов;
- Опыт программирование на С++ не менее 3 лет;
- Опыт разработки под Linux;
- Опыт разработки многопоточных приложений;
- Умение работать в команде с аутсорсерами;
- Умение пользоваться системой контроля версий (неважно какой);
- COM/dcom будет плюсом.
Наша техническая команда все еще относительно небольшая, а значит, каждый ее член сможет принимать ключевые решения, непосредственно влияющие на проект. Помимо прочего, работа в ITinvest — это:
- Оформление согласно ТК РФ;
- Медицинское страхование (по окончании испытательного срока);
- Лояльное руководство и гибкий рабочий график;
- Офис в Москве в 15 минутах пешком от метро Павелецкая или Серпуховская;
- Отсутствие дресс-кода и уважение к ценностям каждого сотрудника.
Рассказ о себе и проектах, в которых удалось поучаствовать, присылайте в текстовом формате в теле письма на адрес электронной почты ivan.igoshev@itinvest.ru.