Модернизация бота для OKX спот-фьючерс арбитража

Андрей7 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
26.08.2025

Техническое задание: Модернизация бота для OKX спот-фьючерс арбитража

1. Название проекта: Разработка и модернизация асинхронного бота для мониторинга и исполнения кэрри-трейда (спот-фьючерс арбитража) на бирже OKX.

2. Исходные материалы:

* Предоставленный код (см. выше) является рабочей основой. Он реализует мониторинг спреда между спот- и фьючерсными ценами в реальном времени с помощью ccxt.pro и отображает информацию через интерфейс rich.

3. Цель задачи: Не просто исправить код, а значительно улучшить его, превратив из инструмента для тестирования идей в полноценного торгового бота с расширенной функциональностью, улучшенной надежностью и управлением рисками.

4. Основные задачи:

Задача 1: Рефакторинг и улучшение архитектуры (Обязательно)

* Разделить монолитный код на логические модули (например:

arbitrage_bot

│── main.py # точка входа

│── exchanges.py # работа с API биржи OKX

│── arbitrage.py # логика поиска арбитража

│── trader.py # открытие/закрытие сделок

│── utils.py # вспомогательные функции (цвета, форматирование и т.д.)

│── config.py # ключи, настройки

│── ui.py # красивый вывод интерфейса

* Вынести все константы OKX_FEE, ENTRY_SPREAD_THRESHOLD и т.д.) в отдельный файл конфигурации config.py).

* Добавить подробное логирование всех критических действий (подключение, отключение, ошибки, вход в сделку, выход из сделки) в файл и в консоль с разными уровнями DEBUG, INFO, ERROR).

Задача 2: Реализация механизма исполнения сделок (Обязательно)

* Текущий код только симулирует PnL. Необходимо интегрировать реальные вызовы API OKX для создания ордеров.

* Добавить модуль okx_trader.py с функциями:

* create_order(symbol, market, side, amount: Размещение рыночного ордерa.

* get_balance(currency): Получение актуального баланса по валюте.

* get_open_orders(symbol): Проверка активных ордеров.

* cancel_order(symbol, order_id): Отмена ордера.

* Логика входа в сделку: При достижении ENTRY_SPREAD_THRESHOLD бот должен выставлять пару ордеров:

1. Лимитный ордер на покупку спота BTC/USDT).

2. Лимитный ордер на продажу фьючерса BTC-USDT-SWAP).

* Логика выхода из сделки: При достижении EXIT_SPREAD_THRESHOLD бот должен выставить ордера на закрытие позиции (продать спот, купить фьючерс).

Задача 3: Внедрение системы управления рисками (Обязательно)

  • Реализовать механизм "проверки связи" (heartbeat) для WebSocket. При длительном отсутствии обновлений перезапускать подключение и перепроверять актуальность всех открытых позиций.

  • Проверка наличия ордеров на бирже при запуске, "подтягивание" уже существующих ордеров на бирже

  • При закрытии бота автоматическое закрытие всех ордеров / ожидание закрытия сделок и закрытие после этого

Задача 4: Улучшение пользовательского интерфейса и отчетности

* Реализовать вывод итоговой статистики за сессию: количество сделок, Win Rate, общий PnL, макс. просадка.

* Добавить интерактивные элементы управления (например, "Пауза", "Экстренная остановка и закрытие всех позиций" с помощью горячих клавиш, "Подождать закрытия сделок и после этого закрыть бота").

Задача 5: Дополнительные улучшения (Опционально, по согласованию)

* Бэктестинг: Создать скрипт для тестирования стратегии на исторических данных.

* Уведомления: Интеграция с Telegram Bot API для отправки оповещений о входе/выходе из сделок и критических ошибках.

* Динамическое управление размером позиции: Размер позиции должен вычисляться от текущего общего баланса, а не от начального.

* Мультибиржевой арбитраж: Добавить поддержку других бирж (например, Binance, Bybit) для межбиржевого арбитража.

5. Требования к технологии:

* Язык: Python 3.10+

* Библиотеки: ccxt.pro, rich, aiohttp, asyncio, pydantic (для валидации конфигурации).

* Стиль кода: Код должен соответствовать PEP8. Использовать аннотации типов (type hints). Настроить black и isort для автоматического форматирования.

6. Критерии приемки:

1. Работоспособность: Бот запускается без ошибок, успешно подключается к OKX и подписывается на тикеры, и выполнять описанный в ТЗ алгоритм.

2. Исполнение ордеров: Бот может размещать и отменять реальные ордера на тестовой сети OKX (Demo Trading), а также уметь переключаться на реальное API и работать "в боевом режиме" с реальными деньгами на реальной среде).

3. Управление рисками: Oбработка ошибок/задержек API.

4. Логирование: Все ключевые события записываются в файл лога.

5. Кодкачество: Код хорошо структурирован, прокомментирован и готов к дальнейшему развитию.

7. Что предоставить по завершению:

1. Исходный код в репозитории Git (GitHub/GitLab).

2. README.md с инструкцией по установке зависимостей, настройке и запуску.

3. requirements.txt или pyproject.toml со всеми зависимостями.

4. Пример файла конфигурации .env.example или config.example.toml).

5. Краткий отчет о проведенной работе и тестировании.

---

Примечание для фрилансера: Пожалуйста, ознакомьтесь с исходным кодом и предоставьте оценку по времени и стоимости выполнения как обязательных, так и опциональных задач. Ваше предложение по архитектурным решениям приветствуется.

Заявки фрилансеров