{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Как сделать торгового робота для 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

Для создания торгового робота обычно придерживаются некоторой структуры кода, можно сказать шаблона, по которому код работает с торговой стратегией и с данными с рынка по тикеру/тикерам и после отработки выводится некоторый результат.

импорт необходимых_библиотек класс Индикаторов класс Стратегии/Торговой системы # --- основной раздел --- подключение по API к бирже задание параметров запуска стратегии запуск стратегии получение данных по тикеру/тикерам по API обработка этих данных стратегией выставление заявок на покупку/продажу возврат результатов из стратегии вывод результатов

В примерах вы найдете несколько вариантов запуска стратегий, а вот примерно стандартная структура кода для торгового робота, файл "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. Код библиотеки частично написан сообществом, существенное изменение которое я внёс - это возможность торговать портфелем тикеров - не просто одним, а множеством тикеров. Исправил некие ошибки, многократно протестировал и добавил много хороших примеров для создания своих полноценных собственных стратегий. Конечно, еще есть моменты, над чем можно будет поработать.

Всем хорошего дня! Спасибо за уделенное время!

0
Комментарии
-3 комментариев
Раскрывать всегда