Найти тему
Fake programmer

Торговый бот для криптобиржи. Закладываем основу и подключаемся к API ByBit.

Пришло время начать разработку нашего бота. Для подключения я выбрал биржу ByBit (здесь должна быть реферальная ссылка, но я таким не особо увлекаюсь 🙃).

У меня было несколько причин для этого выбора: во-первых, у меня уже был аккаунт на этой бирже; во-вторых, я довольно быстро нашёл nuget-пакет с необходимым функционалом для подключения к API (ссылка на GitHub). Этот пакет позволит нам сэкономить время на формировании HTTP-запросов, предоставляя готовый функционал.

Первым делом создаем пустой проект для приложения на платформе .NET Core.

-2

Далее задаем имя проекта и решения, выбираем фреймворк (я выбрал .NET 8.0, так как ранее не работал с этим фреймворком, и рассматриваю свои пет-проекты как возможность для самообразования).

-3

После этого в Solution Explorer добавляем еще один проект типа Class Library и называем его SharedData. В этом проекте мы будем описывать модели данных, чтобы разные части нашего бота могли совместно их использовать, избегая дублирования кода.

-4

В итоге у нас должно получиться что-то вроде этого.

-5

Теперь нам нужно ознакомиться с менеджером пакетов и установить Bybit.Net, о котором я упоминал ранее. В IDE, которую я использую (Visual Studio 2022), это делается следующим образом:

-6

В открывшемся окне менеджера пакетов на вкладке Browse находим нужный нам пакет, выбираем проекты, в которые его необходимо импортировать, и нажимаем Install.

-7

(Сейчас мы добавили пакет только в проект бота, но в дальнейшем, возможно, он понадобится и в других проектах решения.) В проекте бота создаем файлы BotCore — основной сервис нашего бота и точку входа в его логику, а также BybitApiSettings — класс, в который мы будем считывать из файла настроек данные для подключения к бирже.

-8

BybitApiSettings

-9

BotCore (наследуем от BackgroundService)

-10

Теперь нам нужно добавить в Program.cs логику для запуска наших сервисов.

-11

Этот код представляет собой простое веб-приложение на платформе ASP.NET Core. Вначале импортируются необходимые зависимости: Services и Settings, которые содержат пользовательские сервисы и настройки приложения. Затем создается и настраивается веб-приложение с помощью WebApplication.CreateBuilder(args), где инициализируются коллекции сервисов и объект конфигурации для дальнейшего использования.

Далее настраиваются сервисы. Настройки BybitApiSettings конфигурируются на основе секции, указанной в конфигурационном файле, и добавляется фоновая служба BotCore, которая будет выполняться при старте приложения. Также добавляется поддержка контроллеров MVC и механизма проверки состояния здоровья приложения.

После этого создается объект приложения с помощью builder.Build(), и если приложение не находится в режиме разработки, подключается страница исключений для отображения детальной информации об ошибках.

Затем настраивается маршрутизация и определяются конечные точки приложения. По корневому пути / создается HTTP GET-запрос, который возвращает простую HTML-страницу с ссылками на /Status и /health, а проверка состояния здоровья маппится на маршрут /health.

В заключение, приложение запускается с помощью вызова app.Run(), что инициирует работу веб-сервера и всех настроенных сервисов.

В файл конфигурации приложения appsettings.json нужно добавить блок, откуда будут считываться доступы к API биржи.

-12

(Сами доступы можно без особого труда получить в личном кабинете своего аккаунта на бирже.)

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

-13

В методе ExecuteAsync, который запускается при старте нашего сервиса, создадим экземпляр клиента для отправки запросов.

-14

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

-15

(В данном случае мы запрашиваем котировку цены ETH и наш баланс.) Если все сделано правильно, в консоли должны появиться ответы от биржи.

-16

Подключение к API можно считать успешным. В следующей статье мы начнем разработку системы торговых стратегий и попробуем выставить наши первые заявки на бирже.

До встречи, ботоводы 🙃