Какие задачи стоят перед алготрейдером?

Для успешной алгоритмической торговли на Бирже необходимо сформировать инфраструктуру для решения задач возникающих перед алготрейдером.

Задачи:

  • Формализовать алгоритм Торговой стратегии в программный код.
  • Найти актуальные исторические данные для тестирования и оптимизации.
  • Протестировать и оптимизировать Торговую стратегию в условиях, максимально приближенных к рыночным.
  • Реализовать доступ к Бирже для подключения и работы Торговых стратегий.

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

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

После оценки всех преимуществ и недостатков существующих платформ для алготорговли было принято решение пойти по самому сложному пути и разработать с нуля собственный полностью автономный и независимый от сторонних продуктов комплекс Программного обеспечения класса «end-to-end» для единого и простого решения всех задач возникающих перед алготрейдером.

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

Рис. 1. Архитектура Программного обеспечения «SoftAlgoTrade». Создание алгоритма Торговой стратегии.

Рис. 1. Архитектура Программного обеспечения «SoftAlgoTrade». Создание алгоритма Торговой стратегии.

Для создания алгоритмов Торговых стратегий используется оригинальное API SoftAlgoTrade, единое для всего Программного обеспечения. Тем самым удалось добиться органичности системы и избавиться от проблем переноса стратегий из систем теханализа в системы реальной торговли.

Все стратегии пишутся на полноценном языке программирования С# без каких бы то ни было ограничений.

Стратегии компилируются в любом удобном компиляторе или редакторе. Например, Visual Studio. Таким образом, в итоге мы получаем готовую библиотеку-торговую стратегию (.dll), которую сможем свободно использовать в любой Программе комплекса.

Преимущества:

  • Высокая скорость работы.
  • Высокая гибкость Торговых алгоритмов, ограниченная исключительно возможностями языка C#. То есть можно с уверенностью сказать, что возможно создавать стратегии практически любой сложности с сохранением высочайшей скорости работы.
  • Универсальность Торговой стратегии. Из-за единой архитектуры и логики работы стратегии не требуют никаких доработок при переносе из системы тестирования в системы реальной торговли.
  • Полная независимость и автономность работы, не требующая сторонних лицензий и программных продуктов и т.д.

Создается торговая стратегия на базе API SoftAlgoTrade (см. 1 рис.1.) В Программах потребуется лишь указать путь к месту расположения библиотеки стратегии. Готовые стратегии могут свободно использоваться другими Программами (см. 9, 2, 7 рис. 1.) Ее можно протестировать; рассчитать статистику и визуально проанализировать графики, индикаторы, сделки; подобрать оптимальные параметры и также просто отправить в реальную торговлю на Бирже.

Исторические данные

Исторические данные – это различная биржевая информация, включающая данные и сведения о ходе и итогах торгов (сделки, заявки и т.д.)

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

Для этого был разработан автозагрузчик исторических данных «Loader». Он загружает данные с серверов исторических данных в Интернете, например, РТС или Финам (см. 5 рис.1.), и сохраняет данные в Хранилище исторических данных (см. 4 рис.1.)

Хранилище – это специально систематизированная SQL база данных. Данная база не требует дополнительного развертывания или специфической настройки. С этой базой работают другие Программы комплекса, с ней можно свободно работать непосредственно из кода Торговых стратегий (см. 10, 3, 6 рис.1.).

Преимущества:

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

Тестирование и оптимизация 

Тестирование

Для эффективного и удобного анализа Торговой стратегии требуется ее визуализация, а именно: нужно строить тиковые и свечные графики, индикаторы, выводить на графики сделки и заявки, совершенные стратегией, изучить статистические параметры и т.д. Для тестирования, визуализации и технического анализа был разработан тестировщик «Analyzer». Он подгружает Торговую стратегию (см. 2 рис.1.), исторические данные из Хранилища (см. 3 рис.1.) и по указанным настройкам тестирует Торговую стратегию.

 Преимущества:

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

Оптимизация

Задачей оптимизации является поиск параметров, при которых Торговая стратегия будет максимально прибыльной, эффективной и стабильной. Для этого был разработан оптимизатор «Discoverer» с уникальной системой оптимизации, сочетающей в себе все преимущества генетических алгоритмов и методов Монте-Карло, тем самым позволяя эффективно и качественно исследовать все пространство многообразий стратегии.

Подробнее про нюансы оптимизации можно почитать в разделе «Тестирование. Ключевые моменты.»

Так как оптимизация является очень ресурсоемкой операцией, то и для ее решения используются специальное многопоточное тестирование с максимальной оптимизацией имеющих ресурсов компьютера. В отличие от тестировщика «Analyzer» оптимизатор не визуализирует торговые стратегии, а только тестирует и рассчитывает статистические параметры. Таким образом удается достигнуть высокой скорости оптимизации.

Преимущества:

  • Уникальная, высокоэффективная система оптимизации.
  • Высокая скорость тестирования и оптимизации.
  • Всестороннее исследование пространства стратегий.
  • Проверка на переоптимизацию по методу Walk Foward и т.д.

Оптимизатор аналогично тестировщику «Analyzer» подгружает Торговую стратегию (см. 7 рис.1.) и исторические данные из Хранилища (см. 6 рис.1.), при этом он может обмениваться результатами оптимизации с тестировщиком «Analyzer» для визуализации и детального изучения Торговой стратегии (см. 8 рис.1.)

Торговля на Бирже 

После того как мы написали Торговую стратегию, протестировали ее и оптимизировали параметры, то нам нужно ее торговать на Бирже. Для этого был создан протоговщик стратегий «Trader». В зависимости от типа подключения к Бирже, торгового терминала и брокера модификации проторговщик «Trader» могут различаться. Но принцип работы для всех случаев один. Нужно лишь указать путь к нашей стратегии (см. 9 рис.1.) и настроить ее параметры для торговли. При необходимости проторговщик «Trader» может использовать исторические данные из Хранилища (см. 10 рис.1.).

Проторговщик в реальном времени транслирует в Торговые стратегии данные с Биржи и исполняет заявки, формируемые Торговыми стратегиями (см. 11 рис.1.)

Преимущества:

  • Полностью автоматизированная торговля на Бирже.
  • Высокая скорость работы с тиками, свечками и стаканами.
  • Логирование терминала и всех торговых процессов.
  • Повышенная надежность и «живучесть» системы и т. д.