Биржевой софт: история создания торгового терминала
Фондовый рынок – крайне высокотехнологичная отрасль, в которой задействована масса интересных технологий и крайне сложная инфраструктура. Сегодня мы хотим рассказать о том, как в финансовой сфере ведется работа над IT-проектами. В частности, осветить аспект разработки софта на примере создания торгового терминала SmartX.
Предыстория
Мы в ITinvest, в отличие от большинства других брокеров, всегда уделяли внимание разработке собственного программного обеспечения. В частности, в 2000-х большой популярностью на рынке пользовался созданный нами терминал SmartTrade, который, в принципе, и по сей день отвечает основным требованиям трейдеров.
Однако, софт, как и все в этом мире, устаревает, и иногда нужно просто двигаться дальше. Поэтому было принято решение о создании нового флагманского терминала, который бы вобрал в себя все лучшие качества наших предыдущих продуктов, но был бы более современным, как в плане интерфейса, так и функционала, и, при этом, более гибким, чем его предшественники.
Во многом поэтому мы решили разрабатывать торговый терминал не полностью с нуля, а лицензировать технологии американской компании Modulus FE, в частности, торговую платформу M4, которая поставлялась вместе со всем исходным кодом и могла быть модифицирована так, чтобы удовлеторить нужды наших клиентов.
Этапы разработки
Сразу после приобретения технологии и ее первоначальной адаптации к нашим системам, терминал получивший название SmartX умел соединяться с сервером, загружать графики, стаканы, и на этом его возможности заканчивались. Так что работы предстояло очень много.
Кроме того, практически сразу же стало очевидно, что технологии Modulus FE не удовлетворяют требованиям производительности, предъявляемым к торговым приложениям на российском фондовом рынке. Проще говоря, уже при не особенно большой нагрузке терминал начинал крайне сильно тормозить, что в ситуациях, когда доля секунды может привести либо к значительной прибыли, либо к большим убыткам, просто недопустимо.
Графики
Одной из основных причин низкой производительности были встроенные в платформу M4 графики на платформе COM+.При открытии 5-минуных или 15-минутных графиков скорость работы еще была приемлемой, но тиковый график намертво “подвешивал” терминал.
Помимо этого, «дефолтные» графики обладали серьезными изъянами в плане юзабилити – например, чтобы нарисовать на графике линию (совершенно стандартная для любого терминала функция) пользователю нужно было нажатием специальной кнопки остановить обновление графика, нарисовать линию, а затем снова включить загрузку.
После выпуска первого релиза продукта SmartX 1.0 было принято окончательно решение отказаться от графиков M4 и найти какое-то другое решение. В результате было выбрано новое графическое ядро – open-source проект Gordago, — которое затем было сильно «допилено» в соответствии с нашими нуждами в плане производительности.
На сегодняшний момент мы гордимся тем, что наш терминал имеет одни из самых шустрых графиков, полностью реализованных на .Net.
Контролы
Решения Modulus FE строятся на платформе .NET, поэтому изначально все элементы управления были стандартными «дотнетовскими», но, все по тем же соображениям производительности, было решено от них также отказаться. Неплохой заменой, после некоторой доработки, стал еще один открытый проект SourceGrid. Скорость обновления таблиц на больших объемах данных в конечном счете удалось увеличить почти на 2 порядка.
Data Manager
Как это часто бывает, начав что-то менять, остановиться трудно, и уже после старта разработки нового терминала, были начаты и работы по созданию совершенно новой брокерской торговой системы. Основная часть этих работ была завершена осенью 2013 года, получившаяся система получила название MatriX™ (более подробно о ней будет отдельный топик).Одной из главных ее «фич» стала единая денежная позиция.
При использовании предыдущей версии нашей торговой системы, которая называлась it-trade/SmartTrade, клиенту предоставлялся отдельный лицевой счет для каждой торговой площадки. Например, Фондовый рынок Московской биржи — это счет MS; Срочный рынок Московской биржи — счет RF; Валютный рынок Московской биржи — счет FX (беспоставочный) или счет CD (поставочный) и другие. При подобном разделении, ценные бумаги и денежные средства, расположенные на одной торговой площадке не могут служить в качестве обеспечения для совершения операций на другой.
При использовании единой денежной позиции клиенту предоставляется единый счет с идентификатором MO, который включает в себя сразу несколько торговых площадок:
- Фондовый рынок Московской биржи (все инструменты, торгуемые в режиме Т+2).
- Срочный рынок Московской биржи (фьючерсы, опционы).
- Валютный рынок Московской биржи (беспоставочный режим).
- London Stock Exchange секция IOB (АДР российских эмитентов).
Этот счет становится единым для всех торговых площадок, а активы (деньги, бумаги), расположенные на одной торговой площадке рынка могут быть использованы в качестве обеспечения на других рынках, входящих в единую денежную позицию.
Соответственно, новый торговый терминал должен был соответсвовать этим нововведениям и уметь работать с единой денежной позицией. Это, в свою очередь, повлекло необходимость переделки существующего ранее модуля Data Manager, который достался SmartX от предшественника – терминала SmartTrade.
Модуль Data Manager отвечает за взаимодействие терминала с брокерской торговой системой. Старый модуль был однопоточным и у него было не все хорошо с производительностью, что в ситуации, когда через терминал в день могут «прокачиваться» гигабайты биржевых данных, было неприемлемо. Новый Data Manager стал многопоточным и асинхронным, благодаря чему, теперь терминал может без всяких проблем отобразить 2 миллиона клиентских заявок – при торговле роботом, иногда трейдеры контролируют ситуацию по счету с помощью торгового терминала, так что это довольно ценная возможность.
Расширение функционала: Плагины
После того, как SmartX получил необходимый базовый набор функций (графики, ленты сделок, таблицы котировок, биржевые стаканы, состояние счета, информация по заявкам и позициями), мы задумались о расширении его возможностей. При этом сильно усложнять сам терминал и делать его негибким не хотелось, поэтому был придуман и реализован механизм расширений/плагинов, которые позволяют тем пользователям SmartX, которым не хватает базового функционала терминала, расширить его возможности. В число доступных на данный момент плагинов входят:
- Пакет опционных плагинов.
- Конструктор роботов TradeScript™ (подробнее в этом топике).
- Торговля облигациями.
- Легкая торговля.
- Время жизни заявки.
- Дополнительные окна котировок.
- Автоследование EasyMANi – первый плагин от сторонних разработчиков.
- Знаменитая игра «Змейка».
Изначально плагины подключались к терминалу вручную – пользователю нужно было скопровать соответствующую .dll-библиотеку в нужную папку, а сейчас терминал умеет самостоятельно скачивать расширения с сайта.
Интерфейс и юзабилити
Цветовое оформление терминала осталось в нем от платформы M4, которая обладала неплохим дизайном и интересной возможностью включать разные схемы оформления, а не только какую-то одну стандартную. По факту, все, что на данный момент есть общего у SmartX и M4 – это как раз визуальное оформление.
Что касается типографики, то было решено использовать в терминале стандартные шрифты Windows, поэтому, если пользователь изменит свой шрифт по-умолчанию, то и в терминале он поменяется.
В целом же, работы по юзабилити не прекращались никогда и ведутся по сей день. Общую схему работы над добавлением новых функций в терминал можно разбить на два этапа:
- Перенос в новый терминал функционала предшественника (SmartTrade).
- По завершению этого этапа, добавление новых функций по просьбам клиентов и по инициативе внутри компании.
После внедрения любых нововведений начинается сбор обратной связи от пользователей, с учетом которой в следующей версии терминала происходят очередные изменения (в том числе и с точки зрения интерфейса) – это непрерывный процесс, который позволяет постоянно двигаться вперед.
Кроме того, одним из главных отличиев SmartX от предыдущих продуктов, является тот факт, что он оптимизирован для работы с несколькими мониторами. Это выражается в том, что все элементы его рабочего пространства – таблица, окна котировок и т.п. – могут быть вынесены за пределы самого терминала. Затем это рабочее пространство можно сохранить и загрузить, к примеру, на другом компьютере.
Еще одно важное с точки зрения юзабилити нововведеие – в новом терминале, клиент может видеть все свои счета и заявки по ним одновременно, в то время как при работе с предыдущими терминалами, при переключении с одного счета на другой, терялась возможность в режиме реал-тайм видеть ситуацию по остальным и осуществлять по ним операции.
Также, впервые для продуктов ITinvest, в SmartX появилась функция автоматического обновления. Теперь пользователи в два клика могут получить новую версию терминала.
Риск-менеджмент
Для того, чтобы помочь клиентам обезопасить себя и свои деньги при торговле на бирже в терминале был реализован модуль риск-менеджмента. Он работает на стороне клиента и позволяет пользователю задавать ограничения, при нарушении которых запрещается отправка новых заявок и открытие новых позиций, а также настраивать автоматическое выставление защищающих позицию приказов (стоп-лосс, тейк-профит и т.п.).
Планы
Несмотря на то, что проект SmartX длится уже несколько лет, постоянное развитие и улучшение терминала никогда не останавливается. В частности, среди ближайших планов, внедрение в него функционала, который доступен пользователям через веб-интерфейс торговой системы, в том числе – подпись отчетных документов, переводы между счетами, подписка на сервисы.
В полном соответствии с правилами, изложенными в этом топике, мы уделяем очень много внимания безопаности, но стараемся сделать так, чтобы это не усложняло пользователям работу с программой. Поэтому совершать все действия со счетами можно будет с помощью новой системы цифровой подписи аналогичной многим интернет-банкам. По нажатию кнопки пользователю будет приходить SMS-код, после ввода которого, к примеру, документ будет считаться подписанным.
На сегодня все. Будем рады ответить на вопросы в комментариях. Спасибо за внимание!
Автор: itinvest