Торговый робот разработан в рамках конкурса Tinkoff Invest Robot Contest и предназначен для ведения автоматической торговли на бирже Tinkoff Invest, используя APIv2 на основе gRPC протокола.
ВНИМАНИЕ! Разработчик и автор проекта не несет никакой ответственности за любые финансовые потери или другой ущерб, которые могут произойти при использовании данного торгового робота. Использование данного продукта осуществляется на страх и риск самого пользователя (лица осуществляющего запуск программы).
Основные преимущества данного проекта:
- ✨ Возможность пробовать различные настраиваемые стратегии. Любой алгоритм и его правила могут быть добавлены и выбраны в интерфейсе для использования.
- ✨ Интерфейс для отслеживания активности бота с визуализацией графиков и просмотров логов системы
- ✨ Все написано на быстром языке GoLang и упаковано в контейнер для удобства использования
Склонируйте к себе репозиторий для локального использования:
git clone [email protected]:Pruanik/tinkoff-trading-bot.git && cd ./tinkoff-trading-bot
Скопируйте файл .env и заполните необходимые поля:
cp .env.example .env
Укажите в .env файле режим торговли и Ваш токен авторизации в полях:
TRADING_MOD
PRODUCTION_TOKEN
SANDBOX_TOKEN
Запустите сборку контейнеров необходимых для работы приложения:
make build-all
Поднимаем пока что только контейнер с базой, для того чтобы накатить миграции до того как начнет работать приложение:
make up-postgresql
Запускаем миграции для создания структуры базы приложения:
make migration-up
После сборки, поднимем приложение командой (в дальнейшем достаточно запускать только последнюю команду для использования готового приложения):
make up
Веб интерфейс откроется на порту, который указан в .env файле в параметре WEB_APPLICATION_HOST_PORT
Приложение состоит из нескольких страниц:
- Dashboard с возможностью отслеживания и настройки процессов работы
- Profile с отображением актуальной информации об аккаунтах пользователя
- Logs с информацией из таблицы logs в которой фиксируются ключевые факторы работы системы
Расшифровка всех ошибок находится на сайте документации
Проект поделен на несколько контейнеров:
- WebApplication - все что связано с UI частью: веб сервер, frontend логика, api.
- TradingStrategy - запуск анализа накопленных данных для создания "Условий" к покупке или продаже позиций. Может периодически запускать разные стратегии с разными параметрами на разные инструменты для работы с накопленными данными.
- TinkoffInvestConnection - все что связано с взаимодействием с Tinkoff Invest API: подгрузка данных в локальную базу, выставление ордеров и их отмена, отслеживание выполнения условий созданных модулем TradingStrategy.
Основное преимущество данного проекта, возможность добавлять и управлять алгоритмами в любом их виде. Это может быть дополнительный контейнер с программным кодом написанным на любом языке или добавление новой логики в текущий контейнер TradingStrategy. Условиями для корректной работы является:
- Добавить новый алгоритм в таблицу trading_strategies
- Описать все необходимые условия для работы этого алгоритма, которое в следствии будут заполняться пользователем в UI интерфейсе и сохранятся в json.
- Сохранять результат работы алгоритма в качестве "Условия" в таблицу conditions для последующей обработки этих значений в контейнере TinkoffInvestConnection при получении значений через Bidirectional-stream.
Команда для сборки всех контейнеров приложения
make build-all
Команда для сборки контейнера webapplication
make build-webapp
Команда для сборки контейнера migrator
make build-migrator
Команда для сборки контейнера frontend
make build-frontend
Команда для запуска всех базовых контейнеров приложения
make up
Команда для создания миграции "create_candles_table"
make migration-create create_candles_table
Команда для накатывания всех недостающих миграций
make migration-up
Команда для отката миграций
make migration-down
Команда для инициализации Frontend часть проекта
make frontend-install
Команда для сборки Frontend часть проекта
make frontend-build
Команда для отслеживания в реальном времени всех изменений в папке /web/src для пересборки Frontend часть проекта
make frontend-watch
Команда для запуска GoLang приложения на локальной машине
make run-webapp
Команда для запуска GoLang приложения на локальной машине
make run-tinkoffconnection
К сожалению, на данный момент, не весь функционал реализован в полной мере. Пока написан этот комментарий, не полностью реализована система Bidirectional-stream, есть проблема с графиками в интерфейсе система формирования и отслеживания "Условий". Также планируется добавить вывод информации об состоянии аккаунтов в каждом из режимов торговли, возможность управлением аккаунтами в sandbox режиме и отображения списка сделок по покупкам с подсчетом прибыльности запущенных алгоритмов.