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) có thể 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 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ế nào khác.
Cơ chế hoạt động
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 khớp phần nào) hoặc bị hủy (nếu đã khớp một phần)
Không có giao dịch nào được tạo ra giữa hai lệnh.
So khớp ở cấp độ ví
STP so sánh địa chỉ ví, không phải khóa agent. 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 dưới cùng một ví giao dịch đều chịu sự kiểm soát STP lẫn nhau.
Các phần khớp một phần được giữ nguyên
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 phần khớp đó vẫn được giữ nguyên.
Ví dụ: Sổ lệnh có 5 hợp đồng được chào bán bởi Ví B, sau đó 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ả:
- Ví A được 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 khớp phần nào | 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 nằm chờ 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 thêm vào sổ lệnh, ngay cả khi lệnh đó thông thường sẽ nằm chờ. Lệnh bị chấm dứt hoàn toàn.
Thông báo WebSocket
Cả thông báo hủy/từ chối của lệnh taker và maker đều được gửi qua kênh order_updates. Trường reason cho biết nguyên nhân là do STP.
Giám sát
Các sự kiện STP làm tăng bộ đếm Prometheus ht_engine_self_trade_prevented_total.
Câu hỏi thường gặp
Tôi có thể chọn chế độ STP khác không (ví dụ: hủy lệnh mới nhất hoặc giảm khối lượng)? Không. Hypercall chỉ sử dụng chế độ hủy cả hai.
STP có áp dụng cho lệnh perp không? Có. STP áp dụng cho tất cả các loại lệnh trên engine khớp lệnh, bao gồm cả quyền chọn và perp.
STP có áp dụng cho giao dịch RFQ không? Có. Nếu taker và bên 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 chiều. Các báo giá của tôi có tự hủy lẫn nhau không? Chỉ khi một lệnh đến khiến chúng khớp chéo với nhau. Các lệnh đang chờ ở hai phía đối diện của sổ lệnh với mức giá khác nhau vẫn tồn tại bình thường. STP chỉ kích hoạt tại thời điểm khớp lệnh.