Прежде чем писать код, важно прояснить: по состоянию на июль 2026 года у WEEX нет официального отдельного пакета под названием "weex-python-sdk". У вас есть два рабочих пути: вызывать REST-эндпоинты напрямую с помощью библиотеки requests, соблюдая правила подписи WEEX, или использовать open-source библиотеку ccxt, которая уже поддерживает WEEX. В этом руководстве мы пройдем оба пути и уделим особое внимание двум критическим моментам, где чаще всего возникают ошибки: подпись запроса и безопасное хранение ключей.
Это техническая заметка для внедрения в проект, а не справочник эндпоинтов. API спота и контрактов WEEX сейчас работают на версии V3 (BETA), для контрактов также доступна V2; в коде ниже используется спот V3.
Строго говоря, это не официальный пакет — это общее название для "клиента на Python, который взаимодействует с эндпоинтами WEEX". WEEX предоставляет REST и WebSocket интерфейсы для спота, контрактов, копитрейдинга и брокерских продуктов. Любой язык, способный отправить HTTP-запрос и вычислить HMAC-подпись, может выполнить интеграцию.

На практике "Python SDK" принимает три формы:
requests плюс hmac, несколько десятков строк кода, минимум зависимостей, максимум контроля.pip install ccxt, работайте с WEEX как с одной из 100+ бирж, поддерживаемых ccxt, с унифицированными именами методов.websocket-client для подписки на рыночные данные в реальном времени или приватные каналы.В введении в API разработчикам рекомендуется ориентироваться на задокументированные схемы и поддерживать версионные клиенты — иными словами, вы собираете SDK сами; не ждите официального релиза.
Перед любым вызовом создайте API-ключ в своем аккаунте. Согласно документации по подготовке к интеграции, аккаунт может содержать до 10 групп ключей. Каждый ключ дает три учетных данных, все они обязательны:
| Учетные данные | Роль | Важно |
|---|---|---|
| APIKey | Идентификация | Идет в заголовок ACCESS-KEY |
| SecretKey | Ключ подписи | Используется только локально; никогда не передается |
| Passphrase | Фраза-пароль | Не восстанавливается; идет в ACCESS-PASSPHRASE |
Права доступа имеют значение: новый ключ по умолчанию имеет статус Read Only — вам нужно вручную включить спотовую торговлю для размещения ордеров. При создании обязательно привяжите IP-адрес; документация прямо указывает, что ключи без привязки IP — это риск безопасности.
Правило подписи WEEX, согласно документации, объединяет timestamp + method (uppercase) + request path (with query) + body, выполняет HMAC SHA256 с вашим SecretKey и кодирует результат в Base64. Timestamp указывается в миллисекундах, и любой запрос, отклоняющийся от времени сервера более чем на 30 секунд, будет отклонен.
Этот код работает "как есть" (используя эндпоинт глубины рынка из документации):
import time, hmac, hashlib, base64, requests
API_KEY = "your-APIKey"
SECRET_KEY = "your-SecretKey"
PASSPHRASE = "your-Passphrase"
BASE = "https://api-spot.weex.com" # confirm host against the official StandardSpecifications doc
def sign(ts, method, path, body=""):
prehash = f"{ts}{method.upper()}{path}{body}"
mac = hmac.new(SECRET_KEY.encode(), prehash.encode(), hashlib.sha256)
return base64.b64encode(mac.digest()).decode()
def request(method, path, body=""):
ts = str(int(time.time() * 1000))
headers = {
"ACCESS-KEY": API_KEY,
"ACCESS-SIGN": sign(ts, method, path, body),
"ACCESS-TIMESTAMP": ts,
"ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json",
}
url = BASE + path
if method == "GET":
return requests.get(url, headers=headers).json()
return requests.post(url, headers=headers, data=body).json()
# Public market data needs no signature; this shows the signed-header pattern
print(request("GET", "/api/v3/market/depth?symbol=BTCUSDT&limit=20"))
Ловушка: параметры GET идут в запрос внутри path, POST использует тело JSON, и тело, которое вы подписываете, должно быть байт-в-байт идентично телу, которое вы отправляете. Другой порядок ключей или лишний пробел ломают подпись — это самая частая причина ошибок 401 в самописных клиентах.
Если вы не хотите писать подпись вручную, ccxt уже поддерживает спот, контракты (свопы) и WebSocket WEEX через 80+ методов. Несколько строк кода — и у вас есть тикеры и ордера:
import ccxt # pip install ccxt
ex = ccxt.weex({
"apiKey": "your-APIKey",
"secret": "your-SecretKey",
"password": "your-Passphrase", # WEEX passphrase maps to ccxt's "password"
})
print(ex.fetch_ticker("BTC/USDT")) # market data
# print(ex.fetch_balance()) # needs trade permission
# ex.create_order("BTC/USDT", "limit", "buy", 0.001, 30000)
Выгода: тот же код, который вызывает WEEX сегодня, завтра вызовет другую биржу с заменой одной строки класса. Цена этого — ccxt является абстракцией, поддерживаемой сообществом; покрытие новых эндпоинтов WEEX может отставать, поэтому проверяйте поля по официальной документации при использовании новых функций.
Поллинг REST быстро упрется в лимиты по частоте запросов. Для данных в реальном времени используйте WebSocket — публичный канал: wss://ws-spot.weex.com/v3/ws/public, приватный: .../private (авторизуется теми же четырьмя полями ACCESS-KEY / ACCESS-SIGN / ACCESS-TIMESTAMP / ACCESS-PASSPHRASE, строка подписи: timestamp + /v3/ws/private).
import json, websocket # pip install websocket-client
ws = websocket.create_connection("wss://ws-spot.weex.com/v3/ws/public")
ws.send(json.dumps({"method": "SUBSCRIBE", "params": ["BTCUSDT@ticker"], "id": 1}))
print(ws.recv())
Сервер отправляет периодические сообщения ping; клиент должен ответить {"method":"PONG","id":1}, иначе соединение разорвется. Детали полей — в документации WebSocket.
Торговля через API безопасна ровно настолько, насколько безопасно ваше управление ключами. Почти каждая потеря средств связана с небрежным обращением с ключами, а не со взломом интерфейса. Практический чек-лист:
Проектируйте с учетом лимитов: публичные эндпоинты позволяют около 20 запросов в 2 секунды, превышение ведет к HTTP 429; приватные следуют правилам конкретного ключа. Внедрение повторных попыток (retry) и задержек (backoff) в клиент спасет от проблем в будущем.
| Параметр | Значение (на июль 2026) |
|---|---|
| Типы интерфейса | REST + WebSocket |
| Текущая версия | Спот/контракты V3 (BETA); контракты также V2 |
| Заголовки авторизации | ACCESS-KEY / ACCESS-SIGN / ACCESS-TIMESTAMP / ACCESS-PASSPHRASE |
| Подпись | HMAC SHA256 + Base64 |
| Timestamp | Миллисекунды; отклоняется, если > 30с от сервера |
| Лимит публичных запросов | ~20 зап. / 2с, 429 при превышении |
| Права по умолчанию | Read Only (торговля требует включения) |
| Выбор Python | Самописная обертка requests или ccxt |
Официального отдельного Python SDK для API WEEX не существует, и это не проблема: логика подписи проста (HMAC SHA256 + Base64), а ccxt дает готовую точку входа. Успех зависит от управления правами и ключами — по умолчанию "только чтение", привязка IP, секреты вне репозитория — и при соблюдении этих правил интеграция с API WEEX будет быстрой и стабильной. Когда будете готовы, создайте свой первый ключ в документации по интеграции.
Дополнительно: покрытие WEEX в ccxt задокументировано в их официальной вики.
1. Есть ли у WEEX официальный Python SDK?
По состоянию на июль 2026 года — нет. WEEX предоставляет REST и WebSocket интерфейсы; на стороне Python вы либо пишете обертку для requests, либо используете ccxt, которая уже поддерживает WEEX.
2. Мои вызовы возвращают ошибку подписи (401) — как отладить?
Обычно одна из трех причин: timestamp не в миллисекундах или отличается от времени сервера более чем на 30с; порядок строки подписи неверный (должен быть timestamp + method + path + body); или подписанное тело отличается от отправленного в POST. Проверьте каждый пункт.
3. Куда в ccxt вставлять passphrase от WEEX?
В поле password. ccxt использует apiKey, secret и password для маппинга на APIKey, SecretKey и Passphrase от WEEX.
4. Нужна ли подпись для публичных эндпоинтов?
Публичные эндпоинты (рыночные данные) обычно не требуют подписи; только приватные, затрагивающие ваш аккаунт или ордера, требуют полный набор из четырех заголовков. Публичные эндпоинты все равно имеют лимиты по частоте.
5. Почему мой новый API-ключ не может размещать ордера?
Потому что новый ключ по умолчанию имеет статус Read Only. Вручную включите право на спотовую торговлю при создании или редактировании ключа и одновременно привяжите IP-адрес.
Цифровые активы крайне волатильны, автоматизированная торговля может привести к потере части или всего капитала из-за ошибок стратегии, рыночных колебаний или сбоев системы. Торговля через API добавляет специфические риски: украденный ключ без привязки IP позволяет злоумышленнику действовать от вашего имени; высокое кредитное плечо усиливает убытки; лимиты (429) или разрывы сети могут привести к неисполнению ордеров или ошибкам отмены. Используйте минимальные права, привязывайте IP, защищайте SecretKey и Passphrase, тщательно тестируйте на малых объемах перед запуском в продакшн. Эта статья — техническое руководство по интеграции, а не инвестиционный совет.
Этот контент предоставляется исключительно в общих информационных целях и не является финансовым, инвестиционным, юридическим или налоговым советом. Любые мероприятия, вознаграждения, онлайн-акции или связанная с ними информация, упомянутые в настоящем документе, не должны рассматриваться как рекомендация, приглашение к покупке, продаже, торговле или иной сделке с какими-либо криптоактивами. Криптоактивы очень волатильны и могут привести к убыткам. Доступность услуг, продуктов WEEX и связанных с ними событий может варьироваться в зависимости от региона. Вы несете ответственность за обеспечение того, чтобы ваше участие соответствовало применимым местным законам и нормативным актам.





























