Написать python модуль для подключения к binance

Цена договорная
25 октября 2024, 02:00 • 13 откликов • 107 просмотров
Привет!
Я devops-инженер и в моих личных целях потребовалось написание серверного приложения на python. К сожалению, моих навыков не хватило, чтобы довести его до ума. Поэтому прошу помощи

Описание приложения.
1. Приложение запускается на сервере и первым делом по rest http api получает список тикеров на различных криптовалютных биржах (binance, bitget, bybit, coinbase, gateio, huobi, kraken, kucoin, mexc, okx, upbit). Получает он список пар к USDT для спота и для фьючерса
На разных биржах один и тот же тикер может называться по разному(напр. бинанс фьючерс 1000CATUSDT = фьючерсу CATUSDT на okx ), поэтому их названия нужно отфильтровать и сматчить между друг другом
2. Среди всего списка тикеров находятся те, у которых есть фьючерс на одной из трёх бирж-гигантов (binance,bybit,okx) и которые существуют на второстепенных биржах.
Вся вышеописанная логика реализована! Пример списка тикеров приложен в файле tickers.txt
3. Далее для всего списка тикеров необходимо постоянно начать получать ордербук со второстепенных бирж в реальном времени. И где-то хранить этот самые ордербук - либо в рантайме, либо в любой предложенной бд. Глубина ордербука должна быть конфигурируемой. Это та часть кода, в которой я уперся в стену в своих знаниях. Ордербук не получается по какому-то определенному эндпоинту, нужно реализовать определенный механизм, пример для биржи бинанс описан тут. Нужно грамотно реализовать эту логику. К тому же у биржи (напр. Binance) есть определенный лимит запросов, после чего начинается бан на определенное время по 418 http коду по IP. Нужно превентивно защититься от этих ошибок и даже в случае их возникновения уметь приостановить выполнение кода. К тому же, возможно приложение будет упираться в сетевые лимиты.
4. Следующий модуль кода должен искать по определенному конфигурируемому фильтру крупные лимитные заявки в искомых ордербуках и посылать сообщение в телеграм канал, если на протяжении X времени существует заявка > Y долларов.

Дополнительные требования:
1. Хочется, чтобы был опыт и хотя бы начальное понимание того, что такое ордербук, как им управлять и какие трудности могут быть с подключением к биржам. (не обязательно, могу это сам рассказать в созвоне)
2. Я не хочу использовать sdk для бирж, нужно обрабатывать сырые данные из http и ws, но это обсуждаемо. Почему? Потому что sdk для бирж может быть разным, зависит от версионирования, а также я боюсь ситуации, когда нужно будет добавить еще одну биржу и для неё не будет SDK. Обсуждаемо.
3. Хотелось бы рассмотреть возможность распределения нагрузки между несколькими нодами. Возможно через kafka, где будут в топик приходить сообщения с информацией о тикере, который нужно отслеживать, а скрипт уже будет распределять нагрузку между нодами в кластере. Возможно нужно будет вообще разделить приложение на несколько микросервисов

Первоначальная задача:
1. Для начала мы созвонимся/спишемся и обсудим варианты реализации, предложенные вами. От вас ожидается первичное понимание задачи и определенный диапазон цены/времени за реализацию функционала. Также цена за правки функционала, которого нет в ТЗ
2. Нужно отревьювить мой код (напомню, что у меня реализованы пункты приложения 1,2) и отредактировать его согласно best-practice. Отправлю в лс репо.
3. Затем нужно реализовать третий пункт для 1-2 бирж, напр. binance и gateio. Получить реальные данные с реальной биржи и продемонстрировать их.

Когда эти пункты будут выполнены:
1. Обсудим написание модулей для остальных бирж
2. Обсудим написание 4-го пункта
3. Обсудим дальнейшее сотрудничество по расширению функционала

Требования:
1. Адекватное соблюдение дедлайнов.
2. Примеры схожих работ.
3. Готовое приложение должно быть гибким к настройке и должно соблюдать best-practice
4. Не хочу, чтобы вас оттолкнуло данное требование, но необходимо, чтобы после реализации вы объяснили мне то, как работает код, какие были ошибки в моём коде и как вы их исправили.

С меня:
1. Адекватное обсуждение проблем и дедлайнов, понимание, как коллеги по цеху.
2. При необходимости предоставлю тестовое окружение
3. Своевременная оплата труда

Очень надеюсь, что моё ТЗ ясно. Прошу не стесняться обратиться с вопросами.
Файлы