esemi / backtester

Trading strategy backtesting utility and trading robot implementation for Binance and ByBit cryptocurrency exchanges

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 с новыми именами
  • прописываем использование созданных переменных в деплой соответствующего бота (например)

About

Trading strategy backtesting utility and trading robot implementation for Binance and ByBit cryptocurrency exchanges

License:GNU General Public License v3.0


Languages

Language:Python 100.0%