Self-Trade Prevention (STP)
Automatischer Schutz vor Selbsthandel.
Überblick
Wenn eine eingehende (Taker-)Order gegen eine ruhende (Maker-)Order derselben Wallet matchen würde, storniert die Engine beide Orders, anstatt sie auszuführen. Dies verhindert Wash Trading und schützt Market Maker davor, versehentlich ihre eigenen Quotes zu kreuzen.
STP ist immer aktiv. Es gibt keine Konfiguration, kein Opt-out und keine alternativen Modi.
Verhalten
Strategie: Cancel Both
Wenn ein Selbsthandel erkannt wird:
- Die Maker-Order wird mit dem Grund
"Self-trade prevention"storniert - Die Taker-Order wird abgelehnt (falls keine vorherigen Ausführungen) oder storniert (falls teilweise ausgeführt)
Zwischen den beiden Orders wird keine Ausführung generiert.
Abgleich auf Wallet-Ebene
STP vergleicht Wallet-Adressen, nicht Agent-Keys. Wenn Sie Agent-Autorisierung verwenden, um Orders mit mehreren Keys zu signieren, unterliegen alle Orders unter derselben Trading-Wallet gegenseitig dem STP.
Teilausführungen bleiben erhalten
Wenn eine Taker-Order gegen andere Kontrahenten ausgeführt wird, bevor ein Selbsthandel auftritt, bleiben diese Ausführungen erhalten.
Beispiel: Im Orderbuch werden 5 Kontrakte von Wallet B angeboten, danach 5 Kontrakte von Wallet A. Wallet A gibt eine Kauforder über 10 Kontrakte auf:
| Schritt | Match gegen | Ergebnis |
|---|---|---|
| 1 | Wallet B (5 Kontrakte) | Ausführung: 5 Kontrakte ausgeführt |
| 2 | Wallet A (5 Kontrakte) | Selbsthandel erkannt |
Ergebnis:
- Wallet A erhält eine Ausführung über 5 Kontrakte gegen Wallet B
- Die Maker-Order von Wallet A (5 Kontrakte) wird storniert
- Die Taker-Order von Wallet A wird mit
filled_size: 5storniert
Order-Status
| Szenario | Taker-Status | Grund |
|---|---|---|
| Keine vorherigen Ausführungen | Rejected | "Self-trade prevention" |
| Teilausführungen vor dem Selbsthandel | Canceled | "Self-trade prevention (partial fill kept)" |
Die Maker-Order erhält immer den Status Canceled mit dem Grund "Self-trade prevention".
GTC-Orders ruhen nach einem Selbsthandel nicht
Wenn eine GTC-Taker-Order STP auslöst, wird die verbleibende Menge nicht in das Orderbuch aufgenommen, selbst wenn die Order normalerweise ruhen würde. Die Order wird vollständig beendet.
WebSocket-Benachrichtigungen
Sowohl die Stornierung/Ablehnung der Taker- als auch der Maker-Order werden über den Kanal order_updates zugestellt. Das Feld reason gibt an, dass STP die Ursache war.
Monitoring
STP-Ereignisse erhöhen den Prometheus-Zähler ht_engine_self_trade_prevented_total.
FAQ
Kann ich einen anderen STP-Modus wählen (z. B. Cancel-Newest oder Decrement)? Nein. Hypercall verwendet ausschließlich Cancel-Both.
Gilt STP für Perp-Orders? Ja. STP gilt für alle Ordertypen auf der Matching-Engine, sowohl für Optionen als auch für Perpetuals.
Gilt STP für RFQ-Trades? Ja. Wenn der Taker und ein Quote-Anbieter dieselbe Wallet nutzen, wird die Quote abgelehnt.
Ich bin ein Market Maker und quotiere beide Seiten. Werden sich meine Quotes gegenseitig stornieren? Nur wenn eine eingehende Order dazu führen würde, dass sie sich kreuzen. Ruhende Orders auf gegenüberliegenden Seiten des Orderbuchs zu unterschiedlichen Preisen koexistieren normal. STP wird nur zum Zeitpunkt des Matchings ausgelöst.