Unified Crypto Exchange API
Project description
Unified Crypto Exchange API
unicex — асинхронная библиотека для работы с криптовалютными биржами, реализующая унифицированный интерфейс поверх «сырых» REST и WebSocket API разных бирж.
✅ Статус реализации
| Exchange | Client | Auth | WS Manager | User WS | Uni Client | Uni WS Manager | ExchangeInfo |
|---|---|---|---|---|---|---|---|
| Binance | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Bitget | ✓ | ✓ | ✓ | ✓ | |||
| Bybit | ✓ | ✓ | ✓ | ||||
| Gateio | ✓ | ✓ | ✓ | ||||
| Hyperliquid | ✓ | ✓ | ✓ | ||||
| Mexc | ✓ | ✓ | ✓ | ||||
| Okx | ✓ | ✓ | ✓ | ✓ |
📖 Описание колонок
- Client – Обертки над HTTP методами следующих разделов: market, order, position, account.
- Auth – Поддержка авторизации и приватных эндпоинтов.
- WS Manager – Обертки над вебсокетами биржи.
- User WS – Поддержка пользовательских вебсокетов.
- UniClient –Унифированный клиент.
- UniWebsocketManager – Унифированный менеджер вебсокетов.
- ExchangeInfo - Информация о бирже для округления цен и объемов
🚀 Быстрый старт
- Установка:
pip install unicexили из исходников:pip install -e . - Библиотека полностью асинхронная. Примеры импорта:
- Сырые клиенты:
from unicex.binance import Client - Унифицированные клиенты:
from unicex.binance import UniClient - Вебсокет менеджеры:
from unicex.binance import WebsocketManager, UniWebsocketManager
- Сырые клиенты:
Пример: Получение рыночных данных через API
import asyncio
from unicex import Exchange, Timeframe, get_uni_client
# Выбираем биржу, с которой хотим работать.
# Поддерживаются: Binance, Bybit, Bitget, Mexc, Gateio, Hyperliquid и другие.
exchange = Exchange.BYBIT
async def main() -> None:
"""Пример простого использования унифицированного клиента unicex."""
# 1️⃣ Создаём клиент для выбранной биржи
client = await get_uni_client(exchange).create()
# 2️⃣ Получаем открытый интерес по всем контрактам
open_interest = await client.open_interest()
print(open_interest)
# Пример вывода:
# {
# "BTCUSDT": {"t": 1759669833728, "v": 61099320.0},
# "ETHUSDT": {"t": 1759669833728, "v": 16302340.0},
# "SOLUSDT": {"t": 1759669833728, "v": 3427780.0},
# ...
# }
# 3️⃣ Можно точно так же получать другие данные в едином формате:
await client.tickers() # список всех тикеров
await client.futures_tickers() # тикеры фьючерсов
await client.ticker_24hr() # статистика за 24 часа (spot)
await client.futures_ticker_24hr() # статистика за 24 часа (futures)
await client.klines("BTCUSDT", Timeframe.MIN_5) # свечи спота
await client.futures_klines("BTCUSDT", Timeframe.HOUR_1) # свечи фьючерсов
await client.funding_rate() # ставка финансирования
if __name__ == "__main__":
asyncio.run(main())
Пример: Получение данных в реальном времени через Websocket API
import asyncio
from unicex import Exchange, TradeDict, get_uni_websocket_manager
from unicex.enums import Timeframe
# Выбираем биржу, с которой хотим работать.
# Поддерживаются: Binance, Bybit, Bitget, Mexc, Gateio, Hyperliquid и другие.
exchange = Exchange.BITGET
async def main() -> None:
"""Пример простого использования унифицированного менеджера Websocket от UniCEX."""
# 1️⃣ Создаём WebSocket-менеджер для выбранной биржи
ws_manager = get_uni_websocket_manager(exchange)()
# 2️⃣ Подключаемся к потоку сделок (aggTrades)
aggtrades_ws = ws_manager.aggtrades(
callback=callback,
symbols=["BTCUSDT", "ETHUSDT"],
)
# Запускаем получение данных
await aggtrades_ws.start()
# 3️⃣ Примеры других типов потоков:
futures_aggtrades_ws = ws_manager.futures_aggtrades(
callback=callback,
symbols=["BTCUSDT", "ETHUSDT"],
)
klines_ws = ws_manager.klines(
callback=callback,
symbols=["BTCUSDT", "ETHUSDT"],
timeframe=Timeframe.MIN_5,
)
futures_klines_ws = ws_manager.futures_klines(
callback=callback,
symbols=["BTCUSDT", "ETHUSDT"],
timeframe=Timeframe.MIN_1,
)
# 💡 Также у каждой биржи есть свой WebsocketManager:
# unicex.<exchange>.websocket_manager.WebsocketManager
# В нём реализованы остальные методы для работы с WS API.
async def callback(trade: TradeDict) -> None:
"""Обработка входящих данных из Websocket."""
print(trade)
# Пример вывода:
# {'t': 1759670527594, 's': 'BTCUSDT', 'S': 'BUY', 'p': 123238.87, 'v': 0.05}
# {'t': 1759670527594, 's': 'BTCUSDT', 'S': 'BUY', 'p': 123238.87, 'v': 0.04}
# {'t': 1759670346828, 's': 'ETHUSDT', 'S': 'SELL', 'p': 4535.0, 'v': 0.0044}
# {'t': 1759670347087, 's': 'ETHUSDT', 'S': 'BUY', 'p': 4534.91, 'v': 0.2712}
if __name__ == "__main__":
asyncio.run(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
unicex-0.8.0.tar.gz
(124.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
unicex-0.8.0-py3-none-any.whl
(149.8 kB
view details)
File details
Details for the file unicex-0.8.0.tar.gz.
File metadata
- Download URL: unicex-0.8.0.tar.gz
- Upload date:
- Size: 124.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1d03b5199604bae79de87d5618b3df12bbfae28387e0566c4e221aaaed6e4f8
|
|
| MD5 |
085225d4c9843301f985dd78c00ded43
|
|
| BLAKE2b-256 |
38be1ba1854338e7d4828c6d185275d66f3d8e2fa8b9d1f3fa44f820cffb282d
|
File details
Details for the file unicex-0.8.0-py3-none-any.whl.
File metadata
- Download URL: unicex-0.8.0-py3-none-any.whl
- Upload date:
- Size: 149.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ec0746f15bb24a2daf96167a59f10587760ff21e058bfc54ae078560f9fa7b1
|
|
| MD5 |
db0418670a13c904bb8b68823d177d6f
|
|
| BLAKE2b-256 |
a7b1d7de4d043ff02a3567ea35544e082a126b67eab0991b299929b6208e01f8
|