Prévention de l'auto-négociation (STP)
Protection automatique contre l'auto-négociation.
Vue d'ensemble
Lorsqu'un ordre entrant (taker) devrait être apparié avec un ordre en attente (maker) du même portefeuille, le moteur annule les deux ordres au lieu de les exécuter. Cela empêche le wash trading et évite aux teneurs de marché de croiser accidentellement leurs propres cotations.
La STP est toujours active. Il n'existe ni configuration, ni possibilité de désactivation, ni mode alternatif.
Fonctionnement
Stratégie : double annulation
Lorsqu'une auto-négociation est détectée :
- L'ordre maker est annulé avec le motif
"Self-trade prevention" - L'ordre taker est rejeté (s'il n'a reçu aucune exécution préalable) ou annulé (s'il a été partiellement exécuté)
Aucune exécution n'est générée entre les deux ordres.
Appariement au niveau du portefeuille
La STP compare les adresses de portefeuille, et non les clés d'agent. Si vous utilisez l'autorisation d'agent pour signer des ordres depuis plusieurs clés, tous les ordres rattachés au même portefeuille de trading sont soumis à la STP les uns par rapport aux autres.
Les exécutions partielles sont conservées
Si un ordre taker est exécuté face à d'autres contreparties avant de rencontrer une auto-négociation, ces exécutions sont conservées.
Exemple : le carnet d'ordres contient 5 contrats proposés par le portefeuille B, puis 5 contrats proposés par le portefeuille A. Le portefeuille A soumet un achat de 10 contrats :
| Étape | Appariement avec | Résultat |
|---|---|---|
| 1 | Portefeuille B (5 contrats) | Exécution : 5 contrats exécutés |
| 2 | Portefeuille A (5 contrats) | Auto-négociation détectée |
Résultat :
- Le portefeuille A reçoit une exécution de 5 contrats face au portefeuille B
- L'ordre maker du portefeuille A (5 contrats) est annulé
- L'ordre taker du portefeuille A est annulé avec
filled_size: 5
Statut des ordres
| Scénario | Statut du taker | Motif |
|---|---|---|
| Aucune exécution préalable | REJECTED | "Self-trade prevention" |
| Exécutions partielles avant l'auto-négociation | CANCELED | "Self-trade prevention (partial fill kept)" |
L'ordre maker est toujours CANCELED avec le motif "Self-trade prevention".
Les ordres GTC ne restent pas dans le carnet après une auto-négociation
Si un ordre taker GTC déclenche la STP, la quantité restante n'est pas ajoutée au carnet d'ordres, même si l'ordre y resterait normalement. L'ordre est entièrement clôturé.
Notifications WebSocket
L'annulation ou le rejet du taker comme du maker sont transmis sur le canal order_updates. Le champ reason indique que la STP en est la cause.
FAQ
Puis-je choisir un autre mode de STP (par exemple, annulation du plus récent ou décrément) ? Non. Hypercall utilise exclusivement la double annulation.
La STP s'applique-t-elle aux ordres sur contrats perpétuels ? Non. La STP d'Hypercall s'applique aux ordres appariés dans le carnet d'ordres d'Hypercall : les ordres sur options et les ordres combinés. Les ordres sur contrats perpétuels sont appariés dans le carnet d'ordres d'Hyperliquid, où s'appliquent les propres règles d'auto-négociation d'Hyperliquid.
La STP s'applique-t-elle aux ordres combinés ? Oui. L'appariement s'arrête avant qu'un ordre combiné ou une route implicite ne fasse négocier un compte contre lui-même, et l'ordre maker en attente est annulé. Consultez l'API expérimentale des ordres combinés pour les cas tout-ou-rien (FOK et remplacement atomique).
La STP s'applique-t-elle aux transactions RFQ ? Oui. Si le taker et un fournisseur de cotation partagent le même portefeuille, la cotation est rejetée.
Je suis teneur de marché et je cote des deux côtés. Mes cotations vont-elles s'annuler mutuellement ? Uniquement si un ordre entrant devait les faire se croiser. Les ordres en attente de part et d'autre du carnet d'ordres, à des prix différents, coexistent normalement. La STP ne se déclenche qu'au moment de l'appariement.