Ngăn chặn tự giao dịch (STP)
Cơ chế bảo vệ tự động chống tự giao dịch.
Tổng quan
Khi một lệnh đến (taker) sắp khớp với một lệnh đang chờ (maker) từ cùng một ví, engine sẽ hủy cả hai lệnh thay vì khớp chúng. Điều này ngăn chặn wash trading và bảo vệ nhà tạo lập thị trường khỏi việc vô tình khớp chéo với chính báo giá của mình.
STP luôn được kích hoạt. Không có cấu hình, không có tùy chọn tắt và không có chế độ thay thế.
Hành vi
Chiến lược: Hủy cả hai
Khi phát hiện tự giao dịch:
- Lệnh maker bị hủy với lý do
"Self-trade prevention" - Lệnh taker bị từ chối (nếu chưa có lần khớp nào trước đó) hoặc bị hủy (nếu đã khớp một phần)
Không có giao dịch khớp nào được tạo ra giữa hai lệnh này.
Đối chiếu ở cấp ví
STP so sánh địa chỉ ví, không phải agent key. Nếu bạn sử dụng ủy quyền agent để ký lệnh từ nhiều khóa, tất cả các lệnh thuộc cùng một ví giao dịch đều chịu sự kiểm tra STP với nhau.
Các lần khớp một phần được giữ lại
Nếu một lệnh taker khớp với các đối tác khác trước khi gặp tình huống tự giao dịch, các lần khớp đó sẽ được giữ lại.
Ví dụ: Sổ lệnh có 5 hợp đồng được chào bán bởi Ví B, sau đó là 5 hợp đồng được chào bán bởi Ví A. Ví A gửi lệnh mua 10 hợp đồng:
| Bước | Khớp với | Kết quả |
|---|---|---|
| 1 | Ví B (5 hợp đồng) | Khớp: 5 hợp đồng được thực hiện |
| 2 | Ví A (5 hợp đồng) | Phát hiện tự giao dịch |
Kết quả cuối cùng:
- Ví A nhận được giao dịch khớp 5 hợp đồng với Ví B
- Lệnh maker của Ví A (5 hợp đồng) bị hủy
- Lệnh taker của Ví A bị hủy với
filled_size: 5
Trạng thái lệnh
| Tình huống | Trạng thái taker | Lý do |
|---|---|---|
| Chưa có lần khớp nào trước đó | REJECTED | "Self-trade prevention" |
| Đã khớp một phần trước khi tự giao dịch | CANCELED | "Self-trade prevention (partial fill kept)" |
Lệnh maker luôn ở trạng thái CANCELED với lý do "Self-trade prevention".
Lệnh GTC không được treo lại sau khi tự giao dịch
Nếu một lệnh taker GTC kích hoạt STP, phần khối lượng còn lại sẽ không được đưa vào sổ lệnh, ngay cả khi thông thường lệnh đó sẽ được treo. Lệnh bị chấm dứt hoàn toàn.
Thông báo WebSocket
Cả việc hủy/từ chối lệnh taker và maker đều được gửi qua kênh order_updates. Trường reason cho biết STP là nguyên nhân.
Câu hỏi thường gặp
Tôi có thể chọn một chế độ STP khác không (ví dụ: cancel-newest hoặc decrement)? Không. Hypercall chỉ sử dụng cơ chế hủy cả hai.
STP có áp dụng cho lệnh perp không? Không. STP của Hypercall áp dụng cho các lệnh được khớp trên sổ lệnh của Hypercall: lệnh quyền chọn và lệnh combo. Lệnh perp được khớp trên sổ lệnh của Hyperliquid, nơi áp dụng các quy tắc tự giao dịch riêng của Hyperliquid.
STP có áp dụng cho lệnh combo không? Có. Việc khớp lệnh sẽ dừng lại trước khi một lệnh combo hoặc một lộ trình ngụ ý (implied route) khiến một tài khoản giao dịch với chính nó, và lệnh maker đang chờ sẽ bị hủy. Xem Experimental Combo API để biết các trường hợp all-or-nothing (FOK và atomic replace).
STP có áp dụng cho giao dịch RFQ không? Có. Nếu taker và một nhà cung cấp báo giá dùng chung một ví, báo giá đó sẽ bị từ chối.
Tôi là nhà tạo lập thị trường báo giá cả hai phía. Các báo giá của tôi có hủy lẫn nhau không? Chỉ khi một lệnh đến khiến chúng khớp chéo nhau. Các lệnh đang chờ ở hai phía đối diện của sổ lệnh với các mức giá khác nhau vẫn cùng tồn tại bình thường. STP chỉ kích hoạt tại thời điểm khớp lệnh.