opexbot
v0.8.3
Published
Trading bot.
Downloads
321
Readme
OpexBot
appname: pskucherov.tinkofftradingbot
Требования
node >= 17
В node v17 есть предустановки MSVC и node-gyp, что сильно упростит использовании GPU для машинного обучения. Это пока в планах, но чтобы в будущем не тратить время на обновления и обратную совместимость, сразу зафиксировал минимальную версию ноды.
Установка и запуск
Из npm
mkdir robot
cd robot
npm i opexbot
npx opexbot
Из репозитория
git clone https://github.com/pskucherov/OpexBot
cd OpexBot
npm i
npm start
Порты
По умолчанию используются 3056 и 8056 порты. Для их изменения используйте PORT и SERVERPORT соответственно.
PORT=3006 SERVERPORT=8006 npx opexbot
UI
После старта откройте http://localhost:3056/settings
Вся дальнейшая настройка и взаимодействие с роботом через UI.
Подробности в репозитории терминала: https://github.com/pskucherov/OpexViewer/
Модули
- SDK (forked from mtvkand/invest-nodejs-grpc-sdk)
В основной репозиторий добавил appname, обновил proto и список ошибок, добавил возможность проброса метода для логирования (раз, два). В форке привёл экспорт к нужному мне виду и вынес в npm.
Библиотека, связывающая терминал, sdk и робота. Ведёт журнал логов по дням, кеширует данные от брокера и сохраняет настройки из терминала.
Пользовательский инетрфейс для бектестирования и дневной торговли.
- Непосредственно сам робот
Состоит из основного класса обработки данных Common, наследуемого от него Backtest для обработки данных в режиме бектестирования и класса робота, в котором реализуется торговая стратегия. Настройки робота сохраняются для каждого инструмента отдельно.
Пример создания робота
- Копируем папку Example, кладём рядом и переименовываем в название робота.
После этого этапа робот автоматически подключится в OpexViewer и будет доступен в селекте роботов.
- Пишем бизнес логику в заготовленных блоках. В примере уже описаны основные команды, это решения про сделку и обработка самих сделок. Эти методы обходятся с заданным интервалом и выполняются в зависимости от условий. Полный список переменных и методов, которыми оперирует робот и доступны для использования, можно посмотреть на дебаг странице. Дебаг страница доступна только для запущенного робота, т.к. выводится его содержимое в реальном времени.
И получается лаконичный робот, в котором нет ничего лишнего. Пример робота, который торгует от уровня поддержки и закрывает сделки по takeProfit.
Оригинальное использование
Пошаговое бектестирование и отладка робота.
Кеширование стакана для анализа торгов, бектестирования и создания новых роботов.
Когда робот запущен, то все заявки, сделки и стакан сохраняются в файл. При выборе робота для бектестирования в эту дату для заданного инструмента все данные восстанавливаются и можно проанализировать поведение робота. А так же отладить его на сохранённом стакане.
Примеры
- закешированные заявки и трейды
- закешированный и сжатый стаканы. Полный кеш стакана можно использовать для машинного обучения. Сжатый схлопнут до минут и используется для отрисовки на графике.
Всё вместе это выглядит так:
- Создание и подключение робота в два шага. Не нужно трогать окружение, робот сам в него встраивается. Все переменные и методы доступны из коробки.