Коды причин отклонения перп-ордеров
Когда форма ордера сообщает, что ордер «будет отклонён», она приводит код причины. Тот же код возвращает и проверка в реальном времени перед подписью (предпросмотр), и фактическая отправка, поэтому форма показывает ровно то, что сделает сервер.
Как форма использует коды:
- Блокирующие коды заменяют текст кнопки отправки на причину (например,
Not enough margin), пока вы не измените ордер. - Коды обновления (
stale_position_snapshot,venue_risk_unavailable) перепроверяются автоматически и никогда не блокируют кнопку. - Коды повтора с блокировкой (
price_unavailable,account_health_unavailable) тоже перепроверяются автоматически, но блокируют кнопку, пока проверка не пройдёт. - Неудачный предпросмотр никогда вас не блокирует. Если предпросмотр недоступен, форма не показывает цифры, но отправить ордер всё равно можно. Реальная проверка в любом случае выполняется при отправке.
invalid_order,engine_rejectedи любой неизвестный код блокируют кнопку и показывают сообщение сервера без изменений, поскольку в нём указано поле или правило, не прошедшее проверку.
Пользователи API получают то же значение в поле reasonCode в ответах POST /v1/tee-perp/preview, а также при отправке ордеров, пакетов ордеров и изменений кредитного плеча. Человекочитаемый текст (reason в предпросмотре, message в ответах на отправку) носит диагностический характер; ветвление логики стройте по коду.
Маржа и позиция
| Код | Что означает | Что делать |
|---|---|---|
insufficient_margin | После исполнения этого ордера (и всех открытых перп-ордеров) средств на счёте не хватит для покрытия маржинальных требований. Требование определяется как худшее из портфельной маржи Hypercall и маржи Hyperliquid. | Воспользуйтесь карточкой, которую показывает форма: Use max (максимальный размер, проходящий проверку), Raise to N× (минимальное кредитное плечо, проходящее проверку) или Deposit (пополнить недостающую сумму). Отмена активных ордеров также высвобождает маржу. |
reduce_only_exceeds_position | Ордер reduce-only увеличит или перевернёт позицию вместо её сокращения. | Установите размер не больше открытой позиции (форма предлагает Use position) или отключите Reduce only. |
mode_change_with_position | Вы попытались переключиться между кросс- и изолированной маржой на рынке, где у вас открыта позиция. Hyperliquid этого тоже не допускает. | Оставьте текущий режим или закройте позицию и затем переключитесь. |
leverage_requires_flat_account | Изменение кредитного плеча отклонено, так как на счёте есть открытые перп-позиции или ожидающие перп-ордера. Это происходит только там, где Hypercall не учитывает риск ликвидации на Hyperliquid в марже; в продакшене он учитывается, поэтому там этот код не возвращается. | Закройте позиции и отмените перп-ордера, затем измените кредитное плечо. |
liquidation_pending | Счёт находится в стадии предварительной ликвидации, и вот-вот начнётся полная ликвидация. Hypercall отклоняет новые перп-ордера по этому счёту. | Дождитесь завершения ликвидации. См. Ликвидация. |
Настройка счёта
| Код | Что означает | Что делать |
|---|---|---|
account_not_pm | Для перп-ордеров нужен счёт с портфельной маржой. | Включите портфельную маржу на странице счёта и повторите попытку. |
unified_mode_required | Для ордеров, увеличивающих риск, на торговом счёте должен быть включён режим unified account Hyperliquid. | Нажмите Enable unified mode в форме. |
builder_not_approved | Hyperliquid отклонил ордер, поскольку счёт не одобрил builder-адрес Hypercall. Этот код приходит от Hyperliquid при отправке, а не при предпросмотре, и пользователи API видят его в поле errorCode ответа на отправку, а не в reasonCode. | Один раз нажмите Enable trading. См. Перпы на Hypercall. |
account_health_unavailable | Hypercall сейчас не может получить данные о маржинальном состоянии счёта, поэтому отклоняет всё, что увеличивает риск. | Форма перепроверяет автоматически. Чтобы тем временем сократить риск, отправьте ордер с включённым Reduce only. |
Рынок и данные
| Код | Что означает | Что делать |
|---|---|---|
market_not_supported | Hypercall не может оценивать риск по этому рынку. Для этого нужны ценовой фид, сетка маржинальных сценариев и маржинальная шкала Hyperliquid в USDC для вашего счёта. | Выберите поддерживаемый рынок. |
trading_halted | Торговля приостановлена: глобально или по этому рынку. | Подождите. Форма держит кнопку неактивной, пока торговля не возобновится. |
price_unavailable | Цена, по которой Hypercall оценивает рынок, отсутствует или устарела. | Форма перепроверяет автоматически. Hypercall не подставляет цену наугад, поэтому отклоняет ордера, пока не поступит свежая. |
stale_position_snapshot | Последние данные о вашей позиции или капитале на Hyperliquid отсутствуют или слишком устарели. | Ничего. Форма сама перепроверит один раз. Если ошибка сохраняется, обновите страницу. |
venue_risk_unavailable | Данные о риске на Hyperliquid (кредитное плечо, цены ликвидации, обеспечение по позициям) отсутствуют или не совпадают с последними данными о вашей позиции. | Ничего. Форма сама перепроверит один раз. |
Условия ордера
| Код | Что означает | Что делать |
|---|---|---|
invalid_order | Недопустимые условия ордера: точность цены или размера, некорректная связка TP/SL или неверный клиентский идентификатор ордера. | Исправьте шаг цены или шаг размера и отправьте заново. |
action_not_supported | Политика подписывающего анклава не разрешает такое действие. Если это происходит с типом ордера, который предлагает форма, она помечает этот тип как недоступный. | Используйте поддерживаемый тип ордера. |
engine_rejected | Любой другой отказ. Точная причина указана в тексте reason. | Прочитайте сообщение. Если оно непонятно, обратитесь в поддержку и приложите текст. |