Crypto trading robot
Trading strategy backtesting utility and trading robot implementation for Binance and ByBit cryptocurrency exchanges.
Setup on windows
Download code
git clone https://github.com/esemi/backtester.git
cd backtester
pip install -r requirements.txt
Create env file to override default config
cp .env.example .env
Run rates loader tool
python -m app.sampler --symbol SOLUSDT --interval 1h --from-date=2023-01-01
python -m app.sampler --symbol SOLUSDT --interval 1h --from-date=2023-01-01 --end-date=2023-01-15
python -m app.sampler --symbol SOLUSDT --interval 1h --from-date=2023-01-01 --end-date=2023-01-15 --exchange=bybit
Run backtesting tool
python -m app.backtester
Run trading tool
python -m app.trader
How to
Как поменять настройки бота
- идём в файл настроек нашего бота
- изменяем любые настройки (пример можно посмотреть тут)
- сохраняем изменения
- в ближайшую минуту новые настройки попадут на сервер, остановят запущенного бота и запустят нового с указанными настройками.
Как включить реальную торговлю
- идём в файл настроек нашего бота
- меняем или добавляем строчку
dry_run=false
- сохраняем изменения
- в ближайшую минуту новые настройки попадут на сервер и перезапустят бота для реальных торгов
Как выключить бота
- идём в файл настроек нашего бота
- меняем или добавляем строчку
ticks_amount_limit=0
- сохраняем изменения
- в ближайшую минуту новые настройки попадут на сервер и остановят работающего бота
Как переключиться на стратегию с плавающей ставкой
- идём в файл настроек нашего бота
- меняем или добавляем строчку
strategy_type=floating
- сохраняем изменения
- в ближайшую минуту новые настройки попадут на сервер
Как ограничить количество открытых позиций
- идём в файл настроек нашего бота
- меняем или добавляем строчку
hold_position_limit=100
(накапливать на руках не больше 100 позиций) - сохраняем изменения
- в ближайшую минуту новые настройки попадут на сервер
Где посмотреть логи и результаты работы
- заходим на сервер по ssh
cd /var/log/trader/
- находим нужный лог или файл с результатами (соответствует имени нашего бота в настройках, например
trader-1-log.txt
)
Как переключить трейдера на ByBit биржу
- идём в файл настроек нашего бота
- устанавливаем тикер
exchange="bybit"
- сохраняем изменения
Как добавить нового бота на сервер
- заходим на сервер по ssh из под пользователя root и заводим нового пользователя
adduser trader100500
usermod -a -G supervisor trader100500
usermod -a -G www-data trader100500
- запоминаем пароль нового пользователя (можно взять стандартный пароль для всех ботов, если не слишком беспокоимся за безопасность)
- добавляем автозапуск бота на сервере (просто копируем секцию и меняем порядковый номер в имени бота, секция будет называться примерно
[program:trader100500]
) vi /etc/supervisor/conf.d/traders.conf
- переключаемся на работу с git репозиторием (в соседнем терминале или прямо на github.com)
git checkout master
git checkout -b trader100500
git push -u origin trader100500
- меняем настройки бота в новой ветке
- настраиваем деплой нового бота на сервер - заменяем
USER_NAME
наtrader100500
- оставляем только те ключи и секреты, которые нужны этому инстансу бота (смотри строчки
*_api_key
и*_api_secret
) - создаём PR для новой ветки
- ждём пока код бота зальётся на сервер
- возвращаемся на сервер и перезапускаем supervisor
service supervisor restart
- проверяем, что все боты стартовали корректно
supervisorctl status
Как добавить новую пару апи ключей
- добавляем новые доступы в секреты github с новыми именами
- прописываем использование созданных переменных в деплой соответствующего бота (например)