Фондовый рынок — высокотехнологичная отрасль. Для того, чтобы инвестор мог не вставая с дивана купить акции той или иной компании, задействуются различные протоколы передачи финансовых данных (например, 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.

Комментарии (29)


  1. achekalin
    29.09.2015 11:12
    +9

    Заголовок «Как стать», текст «Кого мы ищем».

    Объявления о работе вроде на другом ресурсе публикуются, не?


    1. itinvest
      29.09.2015 11:36
      -6

      Если вы повнимательнее прочитаете текст, то поймете, что раздел с поиском сотрудников в нем составляет дай бог треть, а две трети посвящены нашим проектам, о которых мы имеем полное право рассказать в своем блоге. Не так ли?


      1. achekalin
        29.09.2015 11:42
        +5

        Ну… В корпоративных блогах по хабратрадиции люди по факту пишут о чем угодно, хоть о своих котиках, так что пишите-пишите. Но, право, по заголовку судя, статья не о ваших вакансиях. Была бы в конце ссылка («кстати, мы ищем спецов») ведущая на раздел «we_hire» на вашем сайте — и задачу бы вы выполнили, и не так бы в глаза бросалось (в отрицательном смысле).


        1. itinvest
          29.09.2015 11:57
          -3

          В отрицательном смысле ничего в глаза не бросается. Прочите еще раз введение материала. Во втором же абзаце сразу сказано о том, что мы расскажем о своих проектах и предлагаем поучаствовать в их разработке. То, что конкретно вам не интересна работа над подобными проектами (как показалось), еще не значит, что мы делаем что-то не так (нашему блогу уже почти два года, подписчиков почти 1,5 тысячи, думается мы знаем как вести блог на Хабре).

          Давайте лучше по теме что-то обсудим, например, если у вас есть какие-то вопросы по проектам, то готовы ответить. И если есть знакомые разработчики C# и C++, то мы будем очень признательны, если вы сможете скинуть им ссылку на пост :).


  1. atd
    29.09.2015 12:09
    -5

    > Общее время прохождения заявки от момента попадания в «Матрицу» до вывода ее в биржевые системы составляет от 2 до 5 миллисекунд

    Ну жесть же. Даже на фортсе ничего не успеть с такими лагами.


    1. itinvest
      29.09.2015 14:39
      +1

      Почему вы так думаете?


      1. atd
        29.09.2015 14:40

        по опыту


        1. SADKO
          29.09.2015 22:19

          По опыту, это смотря в какие игры играть, а точнее против кого…
          … супротив фпга на колокейшн не попрёшь, а это ребята брокеры для мяса ИМХО за глаза и не только для мяса, я даже прям думаю, попробовать что-ли чрез них родное болото торговать…


          1. webmascon
            30.09.2015 01:01

            вас слишком сильно напугали этим FPGA. по большому счету затраты на программирование FPGA н еокупают результатов.


            1. mezastel
              30.09.2015 01:43

              Кхм… вообще-то окупают. Доказательство: если бы не окупало, никто бы не мучался с ним.

              Что на кодинг FPGA уходит в 10-100 раз больше времени, это я согласен, хотя MATLAB и прочие очень сильно помогают в достижении результата. Я вот все жду что, с покупкой Intel Altera у нас появится какой-нть on-chip FPGA прямо на плате.


              1. SADKO
                30.09.2015 10:43

                Сложно только по началу, но рынок любит велосипедостроителей.
                ИМХО в этой задаче FPGA на борту камня погоды не сделает, ибо основной гешефт даёт разбор данных по мере их поступления и тут же вся хренова туча свёрток за один такт рубится, в итоге пока PC распарсит протокол\ы, вы уже имеете решение.


              1. webmascon
                03.10.2015 04:31

                Кхм. Вообще то не окупают. В интернете есть whiepaper компании Celoxica

                www.thetradingmesh.com/pg/bookmarks/redline/read/564726/thinking-of-fpgas-for-trading-think-again

                Читайте на здоровье


            1. SADKO
              30.09.2015 10:16

              Смотря кто Вы и в какую игру играете, хотя от приоритетного доступа к торговой площадке ещё никому плохо не было!
              А то, что сами по себе разработчики стоят дорого, и есть некоторые не очевидные особенности в их работе, это правда, так что просто написав тз студенту королём стакана вам не стать определённо, это правда и очень обидно наверное :-)
              FPGA да и вообще разработку надо любить, и тогда она отплатит взаимностью.
              Тем более что задачи-то у нас не такие уж и сложные, хотя это опять-же дело привычки.


        1. atd
          30.09.2015 12:56
          +1

          ответ всем, кто выше ^

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

          В 2000-5000мкс самый стыд даже не лаг, а огромное variance, просто позорное. Даже на c#/java можно писать лучше.


          1. SADKO
            30.09.2015 15:56
            +1

            Прохождение где? На торговой то площадке да, но тут каг-бэ розничный брокер, они разве бывают быстрее миллисекунд?


            1. atd
              30.09.2015 16:26

              Да и для брокера это стыд, тот же метак если правильно поставить будет 1-2мс съедать. А тут похвалиться пытаются, было б чем…


              1. SADKO
                01.10.2015 11:56

                Угу без нагрузки с B-book и без прокси, таки он вообще ничего съедать не будет :-)
                Не стоит сравнивать B-book «forex» с системой где клиенты таки попадают в стакан. Если я не прав, подскажите пожалуйста, где нищеброда пропустят хотя-бы в родное болото быстрее чем за 5мс. Метаквоты уже лет несколько как штурмуют фортс, но до сих пор брокеры огребают лишь костыли да грабли.

                Как железячник я согласен с тем что миллисекунда — дофига, и зная позиции своих клиентов можно эффективно против них играть, рыночными методами, типа сделав полностью аппаратное решение и создавая клиентам искусственные задержки по мере необходимости, те в стакан попадает всё, а вот порядок попадания можно оптимизировать :-) только вот стоит ли овчинка выделки, одним брокерам известно…


                1. atd
                  01.10.2015 12:23

                  Я давно уже не развлекался с терминалами, но говорят что открывашка подключила мт5 к нашей бирже, и лаги там вполне приличные (сообщали об 1-3мс, если с сетью всё в порядке). Возможно так было только в первое время, когда было мало клиентов.

                  Но стремиться есть к чему.

                  Кстати, на какой-то презентации тот же итинвест хвалился, что у них есть субмиллисекундный прескрининг (или не итинвест и я что-то путаю?)

                  > Как железячник…

                  Простите, а вы железячник связанный с алготрейдингом? И если да, то имеет ли смысл в «родном болоте» заниматься с FPGA? Мне казалось, что пока MOEX не дорос ещё до этого.


                  1. webmascon
                    03.10.2015 04:33

                    Не имеет


                  1. SADKO
                    05.10.2015 20:24

                    Да, у MOEX сейчас есть некоторые особенности, так-что в те-же игры можно играть и без FPGA особенно даже и не напрягаясь, но это ровно до того момента как появятся FPGA :-) Были\есть некоторые моменты объёма межсекционной не эффективности, и это вполне конкретные объёмы которые вы можете забрать, без какого-либо риска если успеете, иначе их может отработать кто-то до вас… По этому есть резоны, быть ближе к площадке, и быстрее рядом стоящих.

                    PS.Но в мой случай, особенный, я был уже готовый разработчик в железо не вкладывался.


          1. webmascon
            03.10.2015 04:33

            Что такое время прохождения? Прохождение чего?


  1. Mnemonik
    29.09.2015 13:07
    +1

    У меня только два вопроса к любым писателям торговых терминалов:
    1. Когда уже что-то кроме винды? Полмира работает в MacOSX, все что можно под нее найти — какой-то куцый терминал упакованый в один архив с эмулятором типа parallels. Фантастические возможности!
    2. Когда хоть в одном терминале появится нормальный язык программирования, да сойдет любой API к которому можно цепляться, получить данные, отправить действия? К чему все эти порождения мутного разума в которых можно посчитать косинусы, тангенсы, арктангенсы одной функцией, но нельзя практически ничего кроме простейших действий? постоянное исполнение скрипта, а не по-тиковое это запредельный уровень программирования на этих поделках, что уж говорить о желании запустить второй поток, этож наверное только космонавтам доступно…

    Короче все это хомячиная возня, а не инструмент.


    1. itinvest
      29.09.2015 14:40
      +3

      Про Mac вы правы, конечно. Но это вопрос ресурсов, мы думаем о терминале под эту ОС, но тут должно сойтись несколько звезд


      1. mat300
        29.09.2015 22:47

        На кой там звезды?? :)

        Просто берете кроссплатформенный фреймворк типа QT и пишете терминал на нем. Мы еще в 2006 сделали такой и продавали в Штаты одному из местных брокеров для их клиентов. Работал и работает молниеносно хоть на винде, хоть в линуксе, хоть на макоси, хоть на андроиде.
        В Штатах, кстати, есть сейчас пара компаний выустивших подобное.

        Странно, что кто-то еще в России из компаний чисто интернет-брокеров не в состоянии делать производительный кросслатформенный софт. В самом деле чтоль все толковые девелоперы уже разбежались?


        1. itinvest
          29.09.2015 23:33

          >> Про берете кроссплатформенный фреймворк типа QT...

          Спасибо, конечно, за совет, такие мысли у нас тоже были, но в итоге все несколько сложнее. Продукт должен быть полностью законченным, чтобы его качественно сделать нужны ресурсы, которые пока пущены на другие проекты. Например на торговую систему MatriX.

          Разработчики на месте, как раз и нужны дополнительные :)


    1. webmascon
      30.09.2015 01:01
      +1

      > Полмира работает в MacOSX,

      вранье! вся Галактика!


  1. mezastel
    30.09.2015 01:40
    +2

    Заголовок неверный. Правильный заголовок: как стать разработчиком клиентского ПО для торговли на бирже.

    Это совсем не то же самое, что написание торговых систем. Я бы сказал что клиенты пописывать — это тривиальщина, в то время как торговые системы которые зарабатывают на бирже требуют десятилетий кропотливого труда, а также отточенных знаний финансовой математики, механизмов работы рынков, и еще тысячи вещей — и да, навык программирования тоже нужен, но по сравнению с затратами на мат часть, затраты на обучение непосредственно программированию равны где-то нулю.

    Еще раз хочу попросить вас переcтать постить муть и пиар на хабре. Хотите поговорить про торговлю на бирже? Напишите про использование исчисления Маллиавэна что ли. Ну или что-нибудь еще умное. А весь этот популизм оставьте при себе.


    1. itinvest
      30.09.2015 10:19
      +1

      Торговая система брокера — это отнюдь не тривиальщина ни с точки зрения софта, ни с точки зрения используемого железа. В свою очередь, хотелось бы попросить вас оставить при себе советы по поводу того, что и как нам публиковать (особенно в корпоративном блоге). Понятно, что вы лучше 1500 пользователей хабра, что на нас подписаны, разбираетесь в качественном контенте, но все же не стоит этим знанием так явно козырять


    1. webmascon
      03.10.2015 04:34
      +1

      > системы которые зарабатывают на бирже требуют десятилетий кропотливого труда

      Вранье. Миллионы лет труда требуются. И еще волшебный порошок