Hyperliquid REST vs WebSocket: когда что использовать
-
hyperliquid rest websocket
-
hyperliquid api types
-
Hyperliquid REST API
-
Hyperliquid WebSocket
Многие разработчики, которые подключают Hyperliquid API, быстро упираются в один и тот же вопрос: стратегии нужен REST или WebSocket? Технически это два разных подхода, и они подходят для разных задач. Ошибка в выборе может просто тратить лишний трафик, а может ударить по скорости реакции стратегии и привести к заметному проскальзыванию при отправке ордеров.
Ниже разберём, как работают REST и WebSocket в Hyperliquid, где их лучше применять, какие есть особенности по задержкам и на какие типичные ошибки стоит обратить внимание.
REST API: модель «запрос — ответ»
REST, или Representational State Transfer, — классический HTTP-подход: клиент отправляет запрос, сервер возвращает ответ, после чего взаимодействие по этому запросу завершается. В документации Hyperliquid REST-интерфейсы обычно делятся на две группы эндпоинтов.
Info endpoint (/info) отвечает за read-only запросы: рыночные метаданные, историю сделок, снимок позиций аккаунта и другие данные, которые не меняют состояние. Такие запросы не требуют подписи и могут вызываться любым клиентом.
Exchange endpoint (/exchange) используется для write-операций: выставление ордеров, отмена ордеров, изменение плеча, управление маржей. Такие запросы должны содержать структурированную подпись EIP-712. Сервер проверяет, что подпись соответствует адресу аккаунта, и только после этого выполняет действие.
Когда использовать REST
REST лучше всего подходит для разовых запросов данных. Например, при запуске стратегии можно получить текущие позиции, периодически проверять баланс аккаунта или по необходимости запрашивать историю funding rate по конкретному контракту. Для таких задач не нужна постоянная потоковая передача данных: отправил запрос — получил ответ.
Ордера и отмены ордеров также отправляются через REST. Даже если стратегия получает рыночные данные в реальном времени через WebSocket, сами торговые команды всё равно нужно отправлять в Exchange endpoint через REST. Это базовое требование архитектуры Hyperliquid.
REST также удобен для загрузки исторических данных пачками. Например, если ты делаешь бэктест и тебе нужны исторические сделки или свечи, можно циклически запрашивать данные через Info endpoint с пагинацией. Для такой задачи это нормальный и понятный вариант.
Ограничения REST
Главное ограничение REST — это модель «pull»: клиент сам забирает данные. Ты не знаешь, когда рынок изменится, поэтому приходится опрашивать сервер с заданным интервалом.
Если опрашивать стакан каждые 100 мс, можно быстро упереться в rate limits. Если снизить частоту до одного раза в секунду, на быстром рынке стратегия уже может реагировать слишком поздно. Для сценариев, где важно мгновенно видеть изменение рынка, частый polling через REST не только неэффективен, но и менее надёжен.
WebSocket: постоянное соединение и realtime-обновления
WebSocket — это двусторонний протокол с постоянным соединением. После установления соединения сервер может сам отправлять данные клиенту, без повторных HTTP-запросов со стороны клиента. WebSocket endpoint Hyperliquid: wss://api.hyperliquid.xyz/ws.
После подключения клиент отправляет сообщение подписки и указывает, какие данные ему нужны. Затем сервер непрерывно присылает обновления по выбранному каналу, пока соединение не разорвётся или клиент не отменит подписку.
Когда использовать WebSocket
Самый типичный сценарий — realtime-мониторинг стакана. После подписки на канал l2Book стратегия получает обновления при изменении книги заявок и может реагировать на изменения ликвидности с задержкой на уровне миллисекунд.
Поток сделок (trades) полезен для отслеживания рыночного импульса, агрессивных покупок и продаж, а также текущего темпа исполнения. Это практичный сигнал для оценки краткосрочного настроения рынка.
Подписка на события аккаунта (userEvents) позволяет в реальном времени получать отчёты об исполнении, уведомления о ликвидации и другие важные события на уровне пользователя. Это избавляет от постоянного polling аккаунта через REST.
Отслеживание funding rate в реальном времени особенно важно для арбитражных стратегий. WebSocket позволяет узнать об изменении сразу, а не ждать следующего цикла опроса.
На что обратить внимание при работе с WebSocket
Главный вызов WebSocket — стабильность соединения. Сетевые сбои, перезапуск сервера или долгий простой могут привести к разрыву. В продакшене обязательно нужны heartbeat-механизм, ping/pong, автоматическое переподключение и повторная подписка на все каналы после reconnect.
Также нужно учитывать данные, которые могли быть потеряны во время разрыва. После переподключения обычно стоит заново получить актуальное состояние через REST и использовать его как новый базовый снимок.
Ещё один важный момент — нагрузка на обработчик сообщений. Если ты подписан на высокочастотный источник данных, например L2-стакан популярного контракта, поток сообщений может быть очень плотным. Парсинг и обработка должны быть достаточно быстрыми, иначе очередь начнёт расти, данные будут устаревать, и смысл realtime-подписки пропадёт.
Краткое сравнение REST и WebSocket
Примеры кода
REST-запрос снимка стакана на Python:
import requests
response = requests.post(
"https://api.hyperliquid.xyz/info",
json={"type": "l2Book", "coin": "ETH"}
)
book = response.json()
# Получили снимок стакана на текущий момент.
# Дальше он сам не обновляется.
WebSocket-подписка на realtime-обновления стакана на Python:
import asyncio
import websockets
import json
async def stream_orderbook():
uri = "wss://api.hyperliquid.xyz/ws"
async with websockets.connect(uri) as ws:
await ws.send(json.dumps({
"method": "subscribe",
"subscription": {"type": "l2Book", "coin": "ETH"}
}))
# Постоянно получаем push-сообщения.
# Новое сообщение приходит при изменении стакана.
async for message in ws:
data = json.loads(message)
print(data)
asyncio.run(stream_orderbook())
Разница простая: REST один раз забирает снимок и завершает запрос; WebSocket держит соединение открытым и продолжает получать обновления, пока соединение активно.
Подписи ордеров и интеграция с OneKey
Независимо от того, используешь ли ты REST для отправки ордеров или WebSocket для мониторинга событий аккаунта, любые write-операции требуют EIP-712 подписи. Безопасность ключа напрямую определяет границу безопасности всего аккаунта.
Кошелёк OneKey даёт аппаратную изоляцию подписи: приватный ключ хранится в защищённом чипе, а подпись выполняется внутри устройства. Код на компьютере не получает исходный приватный ключ. Для квант-трейдера это важно: даже если в стратегии или окружении есть уязвимость, злоумышленнику сложнее украсть сам ключ через инъекцию в код.
Практический workflow выглядит так: стратегия формирует тело торгового запроса, отправляет запрос на подпись в OneKey через WalletConnect, пользователь подтверждает действие на экране устройства, затем подписанный результат возвращается в стратегию и отправляется в Hyperliquid Exchange endpoint.
Такой подход добавляет ручное подтверждение, поэтому лучше подходит для низко- и среднечастотных стратегий. Для полностью автоматизированных HFT-сценариев нужно отдельно оценивать модель рисков: например, изолировать отдельный горячий кошелёк от основного аккаунта и ограничивать размер средств под автоматическую торговлю.
Если ты не хочешь самостоятельно собирать всю торговую связку, практичный вариант — попробовать OneKey Perps. Он даёт доступ к торговле бессрочниками с опорой на Hyperliquid-ликвидность в более удобном интерфейсе OneKey. Скачай OneKey для десктопа или мобильного устройства, проверь настройки безопасности и используй OneKey Perps без лишней спешки и без завышенных ожиданий по доходности.
Гибридная архитектура: лучший практический подход
В реальной продакшен-системе REST и WebSocket чаще дополняют друг друга, а не конкурируют. Типовая архитектура стратегии может выглядеть так:
- WebSocket держит постоянные подписки на рыночные данные: L2-стакан, поток сделок, события аккаунта.
- REST отправляет торговые команды: ордера, отмены, изменения параметров.
- При запуске стратегия через REST получает начальный снимок состояния аккаунта и текущих позиций.
- Периодически, например раз в час, стратегия через REST полностью сверяет состояние аккаунта, чтобы исправить возможные расхождения после WebSocket-разрывов.
Такой гибридный подход использует сильные стороны обоих интерфейсов и в целом соответствует логике, которую предполагает архитектура Hyperliquid API.
FAQ
Q1: Если у меня простая стратегия с ордерами по расписанию, нужен ли WebSocket?
Нет. Для стратегии, которая просто срабатывает по таймеру, обычно достаточно REST. В момент срабатывания можно запросить текущую цену и состояние аккаунта, сформировать ордер и отправить его в Exchange endpoint. WebSocket в таком случае может быть лишней сложностью.
Q2: Как понять, какие данные я пропустил после разрыва WebSocket?
Это классическая проблема WebSocket-разработки. Типовой подход: после reconnect сразу получить актуальное полное состояние через REST, например снимок стакана и позиции аккаунта, и использовать его как новую базу. Для потока сделок можно дополнительно запросить исторические сделки за период разрыва и закрыть пробел.
Q3: Какая задержка между REST-отправкой ордера и отчётом об исполнении?
REST-ответ обычно подтверждает, что ордер принят, но фактическое исполнение лучше отслеживать через WebSocket-канал userEvents или повторную проверку состояния аккаунта. Итоговая задержка зависит от сети и работы Hyperliquid. В обычных условиях она, по сообщениям пользователей, часто очень короткая, но на экстремальном рынке возможны задержки.
Q4: Сколько WebSocket-соединений стоит открывать одновременно?
Лучше держать подписки одного аккаунта на небольшом количестве соединений и не плодить параллельные подключения без необходимости. Конкретные лимиты нужно сверять с актуальной официальной документацией Hyperliquid. Если у тебя несколько внутренних стратегий, можно раздавать данные через собственную message bus, используя одно внешнее WebSocket-соединение.
Q5: Есть ли нюансы при отладке WebSocket в Jupyter Notebook?
Да. У Jupyter есть собственный event loop, и прямой вызов asyncio.run() может вызвать ошибку совместимости. Один вариант — установить nest_asyncio и вызвать nest_asyncio.apply() в начале notebook. Другой — вынести WebSocket-код в отдельный Python-скрипт и запускать его вне Jupyter.
Итоги
REST и WebSocket — не соперники, а инструменты для разных задач. Коротко: если нужны данные «на сейчас», используй REST; если нужны данные «в реальном времени», используй WebSocket. Write-операции, включая выставление и отмену ордеров, проходят через REST.
Понимание этого разделения помогает правильно строить архитектуру вокруг Hyperliquid API. А OneKey может выступать безопасным слоем подписи и удобной точкой входа в перпетуалы через OneKey Perps. Если хочешь попробовать без лишней самодельной инфраструктуры, скачай OneKey, настрой кошелёк и протестируй OneKey Perps небольшими суммами, учитывая риски плеча и волатильности.
Дисклеймер
Материал предназначен только для технического ознакомления и не является инвестиционной рекомендацией, юридической или финансовой консультацией. Автоматизированные торговые стратегии несут технические риски: ошибки в коде, сбои сети, задержки, неверная обработка данных и другие проблемы могут привести к убыткам. Торговля бессрочными контрактами с плечом связана с высоким риском, включая риск ликвидации. Участвуй только после самостоятельной оценки своих навыков, капитала и допустимого уровня риска.



