トレーディング
マッチングエンジン
マッチングエンジンはどの注文が互いに取引するかを決定します。このページでは優先ルール、停止トリガー、再起動動作、エンジンが強制する公平性の不変条件を説明します。
価格・時間優先
新しい注文が届くと、エンジンは板の最良の反対注文とマッチングします。「最良」は最初に価格、次に時間で定義されます。
- より良い価格が先に約定します — 売り手にとってはより高いビッドがより低いビッドに勝ります。
- 価格が同じ場合は時間で約定します — 早い注文が優先されます。
- 約定価格は入ってきた注文ではなく待機注文から来ます。
停止トリガー
3つのイベントがマーケットのマッチングを停止させる可能性があります。停止中、エンジンは新規注文を拒否し待機注文を凍結します。
| トリガー | 効果 | 再開 |
|---|---|---|
| サーキットブレーカー — 30%以上の価格変動 | 新規注文を停止し、待機を凍結し、ユーザーに通知します。 | 管理者レビュー + 手動再開。 |
| 確定停止 — 確定前のロックアップ | 停止してからマーケットを決済に導きます。 | 決済後にマーケットが閉じます。 |
| プラットフォームメンテナンスウィンドウ | 短期間、明確なエラーコードで注文を拒否します。 | ウィンドウが終了すると自動的に。 |
再起動中に起こること
エンジンの再起動はまれですが実際に起こります。SatoriExは板を決定論的に再生します。ユーザーは書き込みで短時間の停止を経験しますが、読み取りでは経験しません。
- APIが一時的なエラーコードで新規注文を拒否します。
- 既存の待機注文が永続ストアから読み込まれます。
- 板の状態が最後にコミットされたシーケンス番号まで再生されます。
- マッチングが再開されます。拒否されたクライアントは同じべき等キーでリトライしてください。
公平性の不変条件
エンジンは同じ価格で古い注文より先に新しい注文を取引させることはありません。プラットフォームのシード流動性を含め、いかなる注文も優先されません — 注文にファストレーンフラグはありません。
べき等キーを使用してください
全てのPOST /ordersコールはIdempotency-Keyヘッダーを受け付けます。再起動とネットワーク障害時に、これによってポジションを二重化せずに安全にリトライできます。