このページは機械翻訳されています。英語の原文が正式版です。 英語で読む
メインコンテンツにスキップ

セルフトレード防止 (STP)

セルフトレード(自己取引)に対する自動保護機能です。

概要

新規(テイカー)注文が同一ウォレットの待機(メイカー)注文とマッチしそうになった場合、エンジンは約定させる代わりに両方の注文をキャンセルします。これにより、ウォッシュトレードを防止し、マーケットメイカーが誤って自身のクォートとクロスすることを防ぎます。

STP は常に有効です。設定項目、オプトアウト、代替モードは一切ありません。

動作

戦略:両注文キャンセル (Cancel Both)

セルフトレードが検出された場合:

  1. メイカー注文は理由 "Self-trade prevention" でキャンセルされます
  2. テイカー注文は拒否(それまでの約定がない場合)またはキャンセル(部分約定している場合)されます

2 つの注文間で約定は発生しません。

ウォレット単位でのマッチング

STP はエージェントキーではなく、ウォレットアドレスを比較します。エージェント認可を使用して複数のキーから注文に署名している場合でも、同一のトレーディングウォレット配下のすべての注文は相互に STP の対象となります。

部分約定は保持されます

テイカー注文がセルフトレードに遭遇する前に他のカウンターパーティと約定した場合、それらの約定は保持されます。

: 注文板にウォレット B が提示する 5 契約、続いてウォレット A が提示する 5 契約があるとします。ウォレット A が 10 契約の買い注文を出した場合:

ステップマッチ相手結果
1ウォレット B (5 契約)約定: 5 契約が執行される
2ウォレット A (5 契約)セルフトレードを検出

結果:

  • ウォレット A はウォレット B に対して 5 契約の約定を受け取ります
  • ウォレット A のメイカー注文 (5 契約) はキャンセルされます
  • ウォレット A のテイカー注文は filled_size: 5 の状態でキャンセルされます

注文ステータス

シナリオテイカーのステータス理由
事前の約定なしRejected"Self-trade prevention"
セルフトレード前に部分約定ありCanceled"Self-trade prevention (partial fill kept)"

メイカー注文は常に理由 "Self-trade prevention"Canceled となります。

GTC 注文はセルフトレード後に板に残りません

GTC のテイカー注文が STP をトリガーした場合、通常であれば板に残る注文であっても、残数量は注文板に追加されません。注文は完全に終了します。

WebSocket 通知

テイカーとメイカー双方のキャンセル/拒否は、order_updates チャンネルで配信されます。reason フィールドが STP が原因であることを示します。

モニタリング

STP イベントは Prometheus カウンター ht_engine_self_trade_prevented_total をインクリメントします。

FAQ

別の STP モード(例: 新しい注文のキャンセル (cancel-newest) や数量減算 (decrement))を選択できますか? いいえ。Hypercall は両注文キャンセル (cancel-both) のみを使用します。

STP はパーペチュアル注文にも適用されますか? はい。STP は、オプションとパーペチュアルの両方を含む、マッチングエンジン上のすべての注文タイプに適用されます。

STP は RFQ 取引にも適用されますか? はい。テイカーとクォート提供者が同一のウォレットを共有している場合、そのクォートは拒否されます。

両サイドにクォートを出しているマーケットメイカーです。自分のクォート同士がキャンセルされることはありますか? 新規注文によってクォート同士がクロスする場合に限られます。注文板の反対サイドに異なる価格で待機している注文は、通常どおり共存できます。STP はマッチング時にのみトリガーされます。