Chuyển đến nội dung

Giao dịch

Vòng đời lệnh

Lệnh đi qua một tập hợp trạng thái cố định từ thời điểm bạn gửi cho đến khi nó được khớp, hủy hoặc hết hạn. Mọi trạng thái đều có thể quan sát qua API.

Endpoint trong chương này

Bốn endpoint bao phủ toàn bộ vòng đời lệnh. Tất cả các endpoint giao dịch yêu cầu xác thực và phạm vi phù hợp.

Phương thứcĐường dẫnMục đích
POST /orders Gửi lệnh mới.
GET /orders/:id Đọc một lệnh theo ID.
GET /orders Liệt kê các lệnh đang mở và đã đóng gần đây.
POST /orders/:id/cancel Hủy lệnh đang mở.
ACTORClientACTORSatoriEx APIACTORRedis LISTACTORMatcherACTORLedgerACTORWebSocket Hub1POST /orders (validate, escrow funds)2202 Accepted (trades: [])3LPUSH order:pending4BRPOP (pull next order)5match by price-time priority6atomic debit / credit (double-entry)7broadcast trade event over /wsAll seven steps run in the same matcher tick — typical end-to-end latency from POST to WS event is under 500 ms.
The full async flow from a POST /orders call to a trade event delivered over WebSocket. The 202 Accepted (step 2, dashed) lands BEFORE matching runs — your client must await the trade event on /ws to learn the fill outcome.

Trạng thái lệnh

Mỗi lệnh mang một trong các giá trị trạng thái này. Chuyển đổi trạng thái một chiều, trừ một phần rồi hủy.

ENTRYSubmittedSTATEpendingSTATEopenSTATEpartialSTATEfilledEXITClosedSTATEcancelledPOST /ordersadded to booksome fillsmore fillsfully matchedvalidation failsuser cancelscancel remainder
Transitions are one-way except for the cancel branches: pending, open, and partial can all transition to cancelled by user or admin action. A circuit-breaker halt pauses the market but leaves resting orders intact — cancellation is still your decision. Cancelling a partial order removes only the unfilled remainder.
Trạng tháiÝ nghĩa
pendingĐang chờ trong sổ lệnh chờ lệnh đối ứng.
openLệnh đang chờ trong sổ lệnh, chờ lệnh đối ứng.
partialĐã khớp một phần; phần còn lại vẫn đang chờ.
filledĐã khớp hoàn toàn. Cổ phần đã vào vị thế của bạn.
cancelledCancelled by the user or by an admin action. The circuit breaker halts the market on a 30%+ price move but does not automatically cancel resting orders — they are paused until trading resumes (or you cancel them yourself).

Lý do từ chối thường gặp

Khi lệnh bị từ chối, phản hồi mang mã lỗi ổn định để client của bạn có thể phân nhánh dựa vào đó.

Ký hiệuÝ nghĩa
3001 ErrInsufficientBalance số dư USDC của bạn quá thấp cho lệnh ở mức giá đề xuất.
5002 ErrInvalidPrice giá nằm ngoài dải tick chấp nhận của thị trường hoặc dưới 0 / trên 1.
5004 ErrInvalidSide side must be 1 (buy) or 2 (sell) — any other value is rejected.
5007 ErrMarketNotTrading thị trường đang dừng (ngắt mạch, phán quyết hoặc bảo trì).
5008 ErrInsufficientPosition you do not hold enough shares of this outcome to place this sell order.
2025 ErrTwoFactorRequired 2FA is required for trading — enable it in Security settings before placing orders.

Phân nhánh trên trường `code` dạng số, không phải trên thông báo — thông báo hướng đến người dùng và thay đổi theo ngôn ngữ và bản sao nền tảng.

Đăng ký sự kiện lệnh thay vì polling

Kênh lệnh WebSocket đẩy chuyển đổi trạng thái theo thời gian thực. Sử dụng nó cho bất kỳ bot nào cần phản ứng với khớp lệnh — polling chấp nhận được cho dashboard nhưng lãng phí cho vòng lặp giao dịch.