Bảo vệ Nhà tạo lập Thị trường (MMP)
Giới hạn khớp lệnh trong cửa sổ thời gian và hành vi tự động hủy lệnh dành cho nhà tạo lập thị trường.
Tổng quan
MMP bảo vệ nhà tạo lập thị trường khỏi các lần khớp lệnh bất lợi diễn ra nhanh chóng bằng cách:
- Theo dõi các chỉ số khớp lệnh tích lũy trong một cửa sổ thời gian trượt
- Hủy lệnh khi các giới hạn bị vi phạm
- Tự động hủy tất cả các lệnh khác có bật MMP cho cùng một ví + tài sản cơ sở
Cấu hình
Thiết lập Cấu hình MMP
Endpoint: POST /mmp-config
Request: SetMmpConfigRequest
{
"wallet": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true,
"nonce": 1,
"signature": "0x..."
}
Các trường:
wallet: Địa chỉ vícurrency: Đồng tiền cơ sở (ví dụ:"BTC","ETH")interval_ms: Độ dài cửa sổ trượt tính bằng mili giâyfrozen_time_ms: Thời gian đóng băng sau khi trigger (mili giây)qty_limit: Giới hạn khối lượng tùy chọn (đơn vị hợp đồng)delta_limit: Giới hạn delta tùy chọnvega_limit: Giới hạn vega tùy chọnenabled: MMP có được bật cho ví + đồng tiền này hay không
Response: ApiResponse<MmpConfigData>
Lấy Cấu hình MMP
Endpoint: GET /mmp-config?wallet=...¤cy=...
Tham số truy vấn:
wallet(bắt buộc)currency(bộ lọc tùy chọn)
Response: MmpConfigResponse
{
"success": true,
"data": [
{
"wallet_address": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true
}
]
}
Xóa Cấu hình MMP
Endpoint: DELETE /mmp-config
Request: DeleteMmpConfigRequest
{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}
Response: ApiResponse<String>
Đặt lại Trạng thái MMP
Endpoint: POST /mmp-config/reset
Request: ResetMmpRequest
{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}
Response: ApiResponse<String>
Ghi chú: Đặt lại trạng thái cửa sổ khớp lệnh của MMP (xóa các chỉ số tích lũy, gỡ đóng băng đồng tiền).
Hành vi của MMP (Cần Hiểu Rõ)
Thứ tự Xử lý Khớp lệnh
Việc đánh giá MMP diễn ra SAU KHI KHỚP LỆNH:
- Engine khớp và chấp nhận lệnh khớp trước
- Sau đó MMP kiểm tra các chỉ số tích lũy
- Nếu các giới hạn bị vi phạm:
- MMP được trigger
- Khối lượng còn lại của lệnh đang hoạt động ngừng được xử lý
- Lệnh chuyển sang trạng thái
CANCELEDvới lý do:"MMP triggered during fill processing" - Engine phát ra sự kiện
MmpTriggered - Engine tự động hủy tất cả các lệnh mở khác có bật MMP cho cùng một ví + tài sản cơ sở
Hệ quả: Quý vị có thể nhận được các lần khớp lệnh đẩy vị thế vượt quá ngưỡng đã cấu hình trước khi MMP được trigger.
Điều kiện Trigger
MMP được trigger nếu bất kỳ giới hạn nào đã cấu hình bị vi phạm:
- Giới hạn khối lượng:
cumulative_qty > qty_limit - Giới hạn delta:
|cumulative_delta| > delta_limit - Giới hạn vega:
|cumulative_vega| > vega_limit
Các chỉ số tích lũy được tính trên cửa sổ trượt (interval_ms).
Hành vi Hủy lệnh
Khi MMP được trigger:
- Lệnh đang hoạt động: Khối lượng còn lại ngừng xử lý, lệnh chuyển sang
CANCELEDvới lý do"MMP triggered during fill processing" - Các lệnh khác: Tất cả các lệnh mở khác có bật MMP cho cùng một ví + tài sản cơ sở sẽ bị tự động hủy với lý do
"Order canceled by MMP trigger"
Lưu ý: Chỉ các lệnh có bật MMP mới bị hủy. Các lệnh có mmp_enabled=false không bị ảnh hưởng.
Hành vi Đóng băng
Sau khi MMP được trigger:
- Đồng tiền bị đóng băng trong
frozen_time_msmili giây - Trong khi bị đóng băng, các lần khớp lệnh mới có thể bị từ chối (tùy thuộc vào cách triển khai)
Cách Tính các Chỉ số Khớp lệnh
Khối lượng
- Nguồn:
sizecủa lần khớp lệnh (đơn vị hợp đồng) - Tích lũy: Tổng của tất cả các lần khớp lệnh trong cửa sổ trượt
Delta
- Nguồn: Được tính từ symbol của lần khớp lệnh và GreeksCache
- Tích lũy: Tổng delta của tất cả các lần khớp lệnh trong cửa sổ trượt
Vega
- Nguồn: Được tính từ symbol của lần khớp lệnh và GreeksCache
- Tích lũy: Tổng vega của tất cả các lần khớp lệnh trong cửa sổ trượt
Cửa sổ Trượt
Loại bỏ khỏi Cửa sổ
Các lần khớp lệnh cũ hơn interval_ms sẽ tự động bị loại bỏ khỏi cửa sổ:
- Việc loại bỏ chạy định kỳ (tác vụ nền)
- Các chỉ số tích lũy được giảm dần khi các lần khớp lệnh cũ bị loại bỏ
Đặt lại Cửa sổ
Đặt lại trạng thái MMP thông qua POST /mmp-config/reset:
- Xóa tất cả các lần khớp lệnh trong cửa sổ
- Đặt lại các chỉ số tích lũy về 0
- Gỡ đóng băng đồng tiền
Sự kiện MMP
Sự kiện MmpTriggered
Sự kiện nội bộ (hiện tại chưa được chuyển tiếp đến các client WS):
MmpTriggeredMessage {
wallet: WalletAddress,
currency: String,
reason: String, // "qty_limit" | "delta_limit" | "vega_limit"
}
Thực hành Tốt nhất
Cấu hình
- Thiết lập giới hạn phù hợp: Dựa trên khẩu vị rủi ro và quy mô khớp lệnh thông thường của quý vị
- Sử dụng cấu hình theo từng đồng tiền: Cấu hình theo từng tài sản cơ sở (BTC, ETH, v.v.)
- Theo dõi các lần trigger MMP: Tỷ lệ trigger cao có thể cho thấy giới hạn được cấu hình sai hoặc điều kiện thị trường bất lợi
Quản lý Lệnh
- Bật MMP có chọn lọc: Chỉ đặt
mmp_enabled=truecho các lệnh quý vị muốn được bảo vệ - Sử dụng đồng tiền nhất quán: Đảm bảo tất cả các lệnh cho cùng một tài sản cơ sở sử dụng cùng một đồng tiền trong cấu hình MMP
- Xử lý các lệnh bị hủy bởi MMP: Triển khai logic để phát hiện các lệnh bị hủy do MMP trigger và điều chỉnh việc báo giá
Giám sát
- Theo dõi các lần trigger MMP: Giám sát các lý do
"MMP triggered during fill processing"và"Order canceled by MMP trigger" - Xem xét cửa sổ khớp lệnh: Kiểm tra các chỉ số tích lũy thông qua cấu hình MMP (hiện chưa được cung cấp qua API)
- Điều chỉnh giới hạn: Nếu MMP trigger quá thường xuyên, hãy tăng giới hạn; nếu quá hiếm khi, hãy giảm giới hạn
Các Vấn đề Thường gặp
MMP Trigger Quá Thường xuyên
Nguyên nhân:
- Giới hạn quá thấp so với quy mô khớp lệnh thông thường
- Điều kiện thị trường bất lợi
- Báo giá nhanh gây ra nhiều lần khớp lệnh
Giải pháp:
- Tăng
qty_limit,delta_limit, hoặcvega_limit - Tăng
interval_msđể cho phép nhiều lần khớp lệnh hơn trong cửa sổ - Giảm tần suất báo giá
MMP Không Trigger
Nguyên nhân:
- Giới hạn quá cao
- MMP không được bật trên các lệnh (
mmp_enabled=false) - Đồng tiền không khớp (đồng tiền trong cấu hình MMP != tài sản cơ sở của lệnh)
Giải pháp:
- Giảm giới hạn
- Xác minh
mmp_enabled=truetrên các lệnh - Xác minh đồng tiền trong cấu hình MMP khớp với tài sản cơ sở của lệnh
Lệnh Bị Hủy Ngoài Dự kiến
Triệu chứng: Lệnh bị hủy với lý do "Order canceled by MMP trigger" nhưng quý vị không lường trước được điều đó.
Nguyên nhân: Một lệnh khác cho cùng một ví + tài sản cơ sở đã trigger MMP.
Giải pháp: Xem xét tất cả các lệnh có bật MMP cho cùng một tài sản cơ sở khi một lệnh trigger.