Как сделать торгового робота для Binance
Пару слов обо мне
Программирование для меня это хобби и любимое дело. А так я сертифицированный системный архитектор. Поэтому прошу не особо ругать за код: -)
В настоящее время я увлекаюсь написанием торговых роботов. Постепенно изучаю нейросети для их применения к анализу цен/объемов акций/фьючерсов.
Обычно я писал торговых роботов для работы с Брокерами и делал авто-торговлю Акциями или Фьючерсами, но вдруг возникла мысль.
- А что, если уже готовый код можно применять и на других активах? Например на крипто активах для Биткоина или Эфира или других?
Уже изучив много библиотек и примеров за долгое время написания своих торговых роботов, решил сделать небольшую библиотеку backtrader_binance для интеграции API Binance и библиотеки тестирования торговых стратегий Backtrader.
Вот с помощью backtrader_binance, сейчас и создадим алго-робота для торговли BTC и ETH.
Подготовка окружения
- Устанавливаем последнюю версию Python 3.11
- Устанавливаем среду разработки PyCharm Community 2023.1
- Запускаем PyCharm Community
- В нём создаем новый проект, давайте его назовём algo_trade_robot и укажем что создаем виртуальное окружение Virtualenv, с Python 3.11 => нажимаем «Create».
После того, как проект создался и в нём создалось виртуальное окружение, мы стали готовы к установке необходимых библиотек))) Кликаем внизу слева на «Terminal» для открытия терминала, в котором как раз и будем вводить команды установки библиотек.
Устанавливаем необходимые библиотеки
Для установки библиотеки осуществляющей интеграцию Binance API с Backtrader вводим команду
pip install backtrader_binance
Теперь необходимо установить библиотеку тестирования торговых стратегий Backtrader
pip install git+https://github.com/wiseplat/backtrader.git
P. S. Пожалуйста, используйте Backtrader из моего репозитория (так как вы можете размещать в нем свои коммиты) .
И наконец у нас есть некоторые зависимости, которые вам нужно так же установить
pip install python-binance pandas matplotlib
Теперь нужно сделать копию всего репозитория в корень проекта, чтобы из него взять примеры кода торговых стратегий, делается это одной командой, так же через терминал.
git clone https://github.com/wiseplat/backtrader_binance
И теперь наш проект выглядит вот так
Создание конфигурации для торговой стратегии
Чтобы было легче разобраться как всё работает, я сделал для вас множество примеров в папках DataExamplesBinance_ru и StrategyExamplesBinance_ru.
Перед запуском примера, необходимо получить свой API ключ и Secret ключ, и прописать их в файле ConfigBinance\Config. py:
# content of ConfigBinance\Config. py
classConfig:
BINANCE_API_KEY = «YOUR_API_KEY»
BINANCE_API_SECRET = «YOUR_SECRET_KEY»
Как получить токен Binance API
- Зарегистрируйте свой аккаунт на Binance
- Перейдите в раздел «Управление API»
- Затем нажмите кнопку «Создать API" и выберите "Сгенерированный системой».
- В разделе «Ограничения API" включите "Включить спотовую и маржинальную торговлю».
- Скопируйте и вставьте в файл ConfigBinance\Config.py полученные «Ключ API" и "Секретный ключ»
Теперь можно запускать примеры из папок DataExamplesBinance_ru и StrategyExamplesBinance_ru.
Создание торгового робота для Binance
Для создания торгового робота обычно придерживаются некоторой структуры кода, можно сказать шаблона, по которому код работает с торговой стратегией и с данными с рынка по тикеру/тикерам и после отработки выводится некоторый результат.
В примерах вы найдете несколько вариантов запуска стратегий, а вот примерно стандартная структура кода для торгового робота, файл "07 — Offline Backtest Indicators.py":
Посмотрев на код выше, можно легко увидеть, что
- импорт необходимых библиотек осуществляется строками 1..4
класс Индикатора 11..17 строки, обычно выносят в отдельный файл
класс Стратегии/Торговой системы 21..138, обычно выносят в отдельный файл
- --- основной раздел --- строка 141
- подключение по API к бирже - строки 151..155
- задание параметров запуска стратегии 172..180
- запуск стратегии - строка 182
- получение данных по тикеру/тикерам по API строки 172..175
- обработка этих данных стратегией - строки 61..115
- выставление заявок на покупку/продажу - строки 105 - покупка и 114 - продажа
- возврат результатов из стратегии - строки 183, 187, 188
- вывод результатов - строки 183, 187, 188
Класс торговой системы имеет несколько основных методов:
- init - итак понятно - здесь инициализируем вспомогательные переменные и индикаторы для потоков данных
- next - вызывается каждый раз при приходе нового бара по тикеру
- notify_order - вызывается, когда происходит покупка или продажа
- notify_trade - вызывается когда меняется статус позиции
Вы можете по желанию расширять/добавлять новые методы/функционал.
Иногда лучше один раз увидеть, чем сто раз прочитать
Поэтому я записал специально для вас видео по созданию этой стратегии по шагам:
Если возникают какие мысли по созданию, пишите посмотрим.
Результат работы торговой стратегии по BTC и ETH
Параметры стратегии не были оптимизированы, поэтому она может дать более лучший результат.
Т.е. 2000 USDT превратилось в 5515 USDT => прирост 175%
Как мне видится, получилось довольно интересно :-) И жду ваших коммитов / фиксов / идей!
P.S. Код библиотеки частично написан сообществом, существенное изменение которое я внёс - это возможность торговать портфелем тикеров - не просто одним, а множеством тикеров. Исправил некие ошибки, многократно протестировал и добавил много хороших примеров для создания своих полноценных собственных стратегий. Конечно, еще есть моменты, над чем можно будет поработать.
Всем хорошего дня! Спасибо за уделенное время!