Краткое содержание
Компания тратит время на ручной анализ рынка, управление таблицами и отправку заявок.
Решение стало торговым ПО на Python, объединяющим рыночные данные, логику стратегий, таблицы и брокерские счета.
ПО призвано сократить объем ручной работы, повторяющуюся обработку данных и предотвратимые действия, связанные с исполнением заявок.
История клиента
Клиент - компания из Польши, занимающаяся алгоритмической торговлей. Она использует стратегии в реальном времени, протестированные и высокочастотные стратегии через брокерские API, а также торгует акциями и опционами.
Команда управляет данными по свечам, торговыми входными данными и заявками на покупку и продажу в разных брокерских счетах. Трейдерам и торговым компаниям нужны системы, заменяющие ручной анализ рынка, управление торговыми данными и отправку заявок автоматизированными решениями.
Цель была простой: автоматизировать торговый процесс на Python, при необходимости подключить Interactive Brokers или Shoonya Broker Account и проверять стратегии с помощью бэктестинга. Компании также требовалась возможность загружать данные Excel в процесс и получать их обратно после исполнения в виде обновленных торговых данных.
Решение спроектировано как набор взаимосвязанных экранов для настройки интервалов, анализа свечей, мониторинга в реальном времени, управления данными Excel и бэктестинга. Поля стратегий, типы заявок, статус брокера и торговые журналы оставлены видимыми, чтобы компания могла управлять процессом по собственным правилам.
Клиент хотел
- Проверять стратегии с помощью бэктестинга и получать необходимое руководство или документацию.
- Создать автоматизацию торговли на Python, при необходимости используя Java или C++ в качестве альтернатив.
- При необходимости подключить Interactive Brokers или Shoonya Broker Account.
- Считывать торговые данные из Excel и обновлять их после исполнения.
Почему готовое решение не подошло
Готовые брокерские платформы поддерживают покупку, продажу и управление финансовыми активами, однако, судя по их описаниям, они не объединяют табличные входные данные компании, настраиваемую логику стратегий, бэктестинг и исполнение через брокера в едином индивидуальном процессе. Решение создано для объединения этих компонентов и согласования с правилами компании, обеспечивая самостоятельную работу с помощью документации и обучения.
Обзор проекта
Решение построено вокруг торгового приложения на Python, объединяющего рыночные данные, логику стратегий, данные из таблиц и брокерские счета. Все ключевые этапы собраны в одном месте: подготовка данных, анализ свечей, проверка стратегии, исполнение заявок и отслеживание позиций.
Для управления торговыми данными было создано рабочее пространство Excel. Оно считывает табличные данные, отображает данные по свечам и отмечает обновленные торговые данные, созданные после исполнения заявок.
Торговый экран объединяет выбираемые интервалы, параметры стратегий и критерии покупки и продажи. Статус подключения к брокеру, а также типы рыночных, лимитных и стоп-заявок доступны на одном экране.
Приложение отправляет заявки через поддерживаемые брокерские подключения и сохраняет данные об исполнении для отслеживания.
Особое внимание уделено проверке стратегий. Экран бэктестинга использует исторические данные по свечам, параметры стратегий и таблицы результатов, чтобы компания могла сравнивать стратегии до их применения в реальном времени.
Система спроектирована модульно, с возможностью добавления документации, инструкций по настройке, поддержки после запуска и дальнейших расширений, таких как локальная обработка или сглаживание рыночных данных в реальном времени.
Реализованные ключевые функции
- Автоматизированная торговля через брокерские счета
- Рыночные, лимитные и стоп-заявки
- Получение данных по свечам с выбираемыми интервалами
- Настраиваемые стратегии и критерии покупки и продажи
- Импорт и обновление торговых данных Excel
- Бэктестинг стратегий на исторических данных по свечам
- Мониторинг заявок, позиций и уведомлений в реальном времени
- Статус подключения брокерского счета
- Автоматизация торговли на Python