Разработка торговых роботов: история проекта StockSharp

В нашем блоге мы много пишем о технологиях, связанных с фондовым рынком (например, соответствующих протоколах передачи данных — раз, два, три). Существует огромное количество биржевого софта, процесс создания которого довольно интересен. Ранее мы рассказывали о разработке торгового терминала SmartX, а сегодня представляем вам историю разработчиков проекта по созданию торговых роботов StockSharp.

362209d64fda4041a3e8b9313bedf125.png

В этой статье мы расскажем о нашем продукте StockSharp, который создаем уже долгие годы. Зачем мы это делаем, кому он нужен, какие преимущества и какие перспективы. Статья разбита на отдельные разделы, но читать лучше по порядку.

Предпосылки и причины


Старт проекта приходится на конец 2009 года. В тот момент было уже достаточно много различных программ как для трейдинга, так и для алготрейдинга. Но отличительной особенностью доминирующего количества создаваемых продуктов было и есть практические полное игнорирование возможности полноценной автоматизации. Следующие пункты или отсутствуют у большинства программ, или сделаны на низком уровне:

  1. Сохранение истории торгов.
  2. Сохранение собственных торговых операций.
  3. Подключение 2-ух и более источников маркет-данных.
  4. Подключение к нескольким счетам/брокерам однрвременно.
  5. Создание своих типов графиков и интерфейса.
  6. Система логов и оповещения об ошибках.
  7. Расширение возможности стандартного бэктестера (система исполнения заявок не унифицирована, и зависит как от электронных площадок, так и от брокеров).
  8. Отсуствие инструментов для работы 2-ух и более человек над совместным проектом.
  9. Нормальный редактор кода (а не на уровне Windows 3.1 и с соответствующими возможностями).


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

Вариантов исправления ситуации два:

  1. Или покупать ориентированные на алготрейдинг и командную работу продукты. А это десятки тысяч долларов в месяц (без преувеличения). При текущем курсе выглядит совсем уж заоблачно для начинающих алготрейдеров.
  2. Или делать свое с нуля. Писать коннекторы в биржам, писать свой бэктестер (например, на Python). А это влечет за собой написание и своих графиков, систем оповещения и многое другое.


Выбор между дорого и долго выглядит как между плохим и очень плохим.

Именно для того, чтобы заполнить гэп между терминалом с базовой автоматизацией и профессиональной платформой для алготрейдинга, а так же сделать ее доступной для потребителей (что может быть более доступно, чем Open Source продукт, скачиваемый с GitHub?) мы и создали нашу платформу —StockSharp.

Архитектура


StockSharp построен по классической модели развития сложного программного обеспечения. В начале создается некая основа (в нашем случае это S#.API), и уже с помощью нее создаются надстройки высокого уровня. Сегодня картина выглядят следующим образом:

d0cbc2374ceb446fa2e6dee29a3baf1b.png

Мы уже сделали ряд продуктов, которые были созданы исключительно только на S#.API. Например, наша графическая среда S#.Studio (в бета стадии на данный момент) или S#.Data / Hydra.

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

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

Фактически, за один день можно сделать полнофункциональный модуль для подключения к торгам, вывода графически информации, и тестирования создаваемой стратегии на истории:

93e5fd4b8877465aa5162e6174110370.png

Это делается блоками на WPF. Все графические компоненты на экране — это все готовое из S#.XAML.

А как же бизнес?


Конечно же, делать бизнес с помощью лишь Open Source — это приятно. Но еще приятнее, делать бизнес с Open Source и правильной бизнес-моделью (»Добрым словом и пистолетом вы можете добиться гораздо большего, чем одним только добрым словом.» © А.К.).

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

В дополнение ко всему мы предлагаем наши курсы, где обучаем как делать торговых роботов тех, кто их никогда не делал.

Все эти сервисы вместе взятые дают нам возможность и далее развивать платформу StockSharp, сохраняя ее доступной для частных трейдеров, но с возможностями как у профессиональных решений.

Вместо заключения


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

Задача Номер 1 — это окончательно доделать локализацию. Уже сейчас количество англоязычных пользователей на ГитХаб у нашего проекта сопоставимо с русскоязычной аудиторией. И это при том, что до сих пор в коде все комментарии на русском языке.

Хочется уже вырваться из региональных тисков и посмотреть —, а как же там, и чем мы лучше/хуже. Золотая мечта — компании с Wall Street вместо Блумерг начинают использовать StockSharp.

© Habrahabr.ru