Matching Engine

BSX operates a continuous first-come, first-serve order book. Orders are executed in price-time priority as received by the matching engine.

Self-Trade Prevention

Self-trading is not allowed on BSX. Trades between the same address cancel the taker order instead of causing a fill.

Order states

Order stateDescription
pendingorder is received but not processed yet
openorder is live on the book
doneorder is either filled or canceled
acceptedstop order is accepted and resting.
Order wont be placed on the book until being triggered.

Cancel reasons

Here are the possible values for cancel_reason field on the Order object

ReasonDescription
stpOrder was canceled due to self-trade prevention
time in force FOKOrder was canceled because it couldn't be filled immediately in its entirety (Fill-or-Kill)
time in force IOCOrder was canceled because it couldn't be filled immediately (Immediate-or-Cancel)
time in force GTTOrder was canceled because it expired (Good-Til-Time)
userOrder was canceled by the user
adminOrder was canceled by an administrator
liquidationOrder was canceled due to liquidation
insufficient liquidityOrder was canceled due to insufficient market liquidity
insufficient marginOrder was canceled due to insufficient margin
post onlyOrder was canceled because it would have executed immediately (Post-Only)
reduce only: pos size %s, order side %sOrder was canceled because it would have increased position size (Reduce-Only)
reduce only: pos size %s, order size %s, order side %sOrder was canceled because order size was invalid for reduce-only order
TPSL order canceled due to position closedTake-Profit/Stop-Loss order was canceled because the position was closed
tpsl order cannot be larger than position: pos size %s, order size %sTake-Profit/Stop-Loss order size was larger than position size