Lewati ke konten

Perdagangan

Siklus hidup order

Order bergerak melalui serangkaian status tetap dari saat Anda mengirimnya hingga terisi, dibatalkan, atau kedaluwarsa. Setiap status dapat diamati melalui API.

Endpoint dalam bab ini

Empat endpoint mencakup seluruh siklus hidup order. Semua endpoint perdagangan memerlukan autentikasi dan cakupan yang sesuai.

Kata kerjaPathTujuan
POST /orders Kirim order baru.
GET /orders/:id Baca satu order berdasarkan ID.
GET /orders Daftarkan order Anda yang terbuka dan yang baru saja ditutup.
POST /orders/:id/cancel Batalkan order terbuka.
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.

Status order

Setiap order memiliki salah satu nilai status ini. Transisi status bersifat satu arah kecuali untuk parsial-kemudian-dibatalkan.

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.
StatusArti
pendingMenunggu di buku order untuk counter-order.
openOrder sedang menunggu di buku pesanan, menunggu order lawan.
partialTerisi sebagian; sisa masih menunggu.
filledSepenuhnya dicocokkan. Saham ada di posisi Anda.
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).

Alasan penolakan umum

Saat order ditolak, respons membawa kode error yang stabil sehingga klien Anda dapat menanganinya.

KodeSimbolArti
3001 ErrInsufficientBalance saldo USDC Anda terlalu rendah untuk order pada harga yang diusulkan.
5002 ErrInvalidPrice harga berada di luar rentang tick yang diterima pasar atau di bawah 0 / di atas 1.
5004 ErrInvalidSide side must be 1 (buy) or 2 (sell) โ€” any other value is rejected.
5007 ErrMarketNotTrading pasar dihentikan (circuit breaker, resolusi, atau pemeliharaan).
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.

Bercabang pada field `code` numerik, bukan pada pesan โ€” pesan bersifat pengguna-hadap dan berubah sesuai lokal dan salinan platform.

Berlangganan event order daripada polling

Saluran WebSocket order mendorong transisi status secara real time. Gunakan untuk bot mana pun yang perlu bereaksi terhadap isian โ€” polling dapat diterima untuk dasbor tetapi boros untuk loop perdagangan.