Trang này được dịch tự động. Bản gốc tiếng Anh là phiên bản chính thức. Đọc bằng tiếng Anh
Chuyển đến nội dung chính

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:

  1. 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
  2. Hủy lệnh khi các giới hạn bị vi phạm
  3. 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ây
  • frozen_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ọn
  • vega_limit: Giới hạn vega tùy chọn
  • enabled: 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=...&currency=...

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:

  1. Engine khớp và chấp nhận lệnh khớp trước
  2. Sau đó MMP kiểm tra các chỉ số tích lũy
  3. 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 CANCELED vớ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:

  1. Lệnh đang hoạt động: Khối lượng còn lại ngừng xử lý, lệnh chuyển sang CANCELED với lý do "MMP triggered during fill processing"
  2. 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_ms mili 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: size củ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

  1. 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ị
  2. 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.)
  3. 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

  1. Bật MMP có chọn lọc: Chỉ đặt mmp_enabled=true cho các lệnh quý vị muốn được bảo vệ
  2. 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
  3. 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

  1. Theo dõi các lần trigger MMP: Giám sát các lý do "MMP triggered during fill processing""Order canceled by MMP trigger"
  2. 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)
  3. Đ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ặc vega_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=true trê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.