パーペチュアル注文の理由コード
注文フォームに注文が「拒否されます」と表示される場合、その内容は理由コードに基づいています。署名前のライブチェック(プレビュー)と実際の送信の両方で同じコードが返されるため、フォームに表示される内容はサーバーが実際に行う処理と一致します。
フォームでの理由コードの扱い:
- ブロックコードは、注文を変更するまで送信ボタンを理由の表示(例:
Not enough margin)に切り替えます。 - リフレッシュコード(
stale_position_snapshot、venue_risk_unavailable)は自動的に再チェックされ、ボタンをブロックすることはありません。 - リトライ・ブロックコード(
price_unavailable、account_health_unavailable)も自動的に再チェックされますが、チェックに通るまでボタンをブロックします。 - プレビューの失敗によって操作がブロックされることはありません。 プレビューに到達できない場合、フォームには数値が表示されませんが、送信は可能です。送信時には実際のチェックが引き続き実行されます。
invalid_order、engine_rejectedおよび未知のコードは、ボタンをブロックし、サーバーのメッセージをそのまま表示します。メッセージには失敗したフィールドやルールが示されているためです。
API ユーザーは、POST /v1/tee-perp/preview および注文・バッチ・レバレッジ送信のレスポンスに含まれる reasonCode で同じ値を受け取ります。人が読める形式のテキスト(プレビューでは reason、送信レスポンスでは message)は診断用です。処理の分岐にはコードを使用してください。
証拠金とポジション
| コード | 意味 | 対処法 |
|---|---|---|
insufficient_margin | この注文(およびすべての未約定のパーペチュアル注文)が約定した後、アカウントが証拠金要件を満たせなくなります。証拠金要件は、Hypercall のポートフォリオ証拠金と Hyperliquid の証拠金のうち、より厳しい方となります。 | フォームに表示されるカードを使用してください: Use max(チェックに通る最大サイズ)、Raise to N×(チェックに通る最小レバレッジ)、または不足分を Deposit します。待機中の注文をキャンセルすることでも証拠金を解放できます。 |
reduce_only_exceeds_position | リデュースオンリー注文が、ポジションを縮小するのではなく、拡大または反転させてしまいます。 | サイズを保有ポジション以下に設定する(フォームで Use position を選択できます)か、Reduce only をオフにしてください。 |
mode_change_with_position | ポジションを保有しているマーケットで、クロスとアイソレートを切り替えようとしました。Hyperliquid でもこの操作は許可されていません。 | 現在のモードを維持するか、ポジションを決済してから切り替えてください。 |
leverage_requires_flat_account | アカウントに未決済のパーペチュアルポジションまたは待機中のパーペチュアル注文があるため、レバレッジ変更が拒否されました。これは Hypercall が Hyperliquid の清算リスクを証拠金に反映していない環境でのみ発生します。本番環境では反映しているため、本番環境でこのコードが返されることはありません。 | ポジションを決済し、パーペチュアル注文をキャンセルしてから、レバレッジを変更してください。 |
liquidation_pending | アカウントがプレ清算状態にあり、完全清算が開始されようとしています。Hypercall はこのアカウントでの新規パーペチュアル注文を拒否します。 | 清算が完了するまでお待ちください。清算を参照してください。 |
アカウント設定
| コード | 意味 | 対処法 |
|---|---|---|
account_not_pm | パーペチュアル注文にはポートフォリオ証拠金アカウントが必要です。 | アカウントページでポートフォリオ証拠金を有効にしてから、再試行してください。 |
unified_mode_required | リスクを増やす注文には、取引アカウントで Hyperliquid のユニファイドアカウントモードが必要です。 | フォームで Enable unified mode をクリックしてください。 |
builder_not_approved | アカウントが Hypercall のビルダーアドレスを承認していないため、Hyperliquid が注文を拒否しました。このコードはプレビューではなく送信時に Hyperliquid から返されます。API ユーザーには reasonCode ではなく、送信レスポンスの errorCode で返されます。 | Enable trading を一度クリックしてください。Hypercall のパーペチュアルを参照してください。 |
account_health_unavailable | Hypercall が現在アカウントの証拠金の健全性を読み取れないため、リスクを増やす操作をすべて拒否しています。 | フォームが自動的に再チェックします。その間にリスクを減らしたい場合は、Reduce only をオンにして注文を送信してください。 |
マーケットとデータ
| コード | 意味 | 対処法 |
|---|---|---|
market_not_supported | Hypercall がリスク管理できないマーケットです。価格フィード、証拠金シナリオグリッド、およびお客様のアカウント向けの USDC 建て Hyperliquid スケジュールが必要です。 | 対応マーケットを選択してください。 |
trading_halted | 取引が全体的に、またはこのマーケットで一時停止されています。 | お待ちください。取引が再開されるまで、フォームはボタンを無効のままにします。 |
price_unavailable | Hypercall がマーケットの評価に使用する価格が存在しないか、古くなっています。 | フォームが自動的に再チェックします。Hypercall は価格を推測しないため、新しい価格が届くまで拒否します。 |
stale_position_snapshot | 最新の Hyperliquid のポジションまたは資産の読み取り値が存在しないか、古すぎます。 | 対応は不要です。フォームが自動的に一度再チェックします。解消しない場合は、ページを更新してください。 |
venue_risk_unavailable | Hyperliquid のリスク読み取り値(レバレッジ、清算価格、ポジションごとの担保)が存在しないか、最新のポジション読み取り値と一致しません。 | 対応は不要です。フォームが自動的に一度再チェックします。 |
注文条件
| コード | 意味 | 対処法 |
|---|---|---|
invalid_order | 注文条件が無効です。価格やサイズの精度、不正な形式の TP/SL ブラケット、または不正なクライアント注文 ID が原因です。 | 価格のティックまたはサイズのステップを修正して、再送信してください。 |
action_not_supported | 署名エンクレーブのポリシーがこの種類のアクションを許可していません。フォームで提供されている注文タイプで発生した場合、フォームはそのタイプを無効として表示します。 | 対応している注文タイプを使用してください。 |
engine_rejected | その他の拒否です。reason テキストに正確な原因が記載されています。 | メッセージを確認してください。内容が不明な場合は、そのテキストを添えてサポートにお問い合わせください。 |