You must be authenticated and subscribed to the TRADING
channel in order to send trading messages. The MOVE_ORDER
message allows you to reposition an existing limit order within the order book without requiring a full cancel and replace sequence. This offers efficiency and reduces the risk of missing market opportunities. Key advantages include requiring only a single network packet compared to a cancel/replace.You can currently only adjust the price in a MOVE order, not the amount.
Key Considerations#
Risk Management#
To prevent unintended price movements, the optional reserve_price
parameter sets the maximum price the order can be moved to. If the requested price exceeds this limit, the move will fail with a MATCHING_MOVE_FAILED_PRICE_OVER_RISK_LIMIT
error. Specifying reserve_price will lock in that amount.Identification#
Orders can be moved using either the order_id
(system-generated unique identifier) or the client_id
(user-defined identifier).Futures markets#
The reserve_price parameter is redundant and has no effect when moving orders for perpetual instruments.Create Order Request with reserve price#
{
"type": "CREATE_ORDER",
"order": {
"instrument_code": "BTC_EUR",
"type": "LIMIT",
"side": "BUY",
"amount": "0.01",
"price": "85000",
"time_in_force": "GOOD_TILL_CANCELLED",
"reserve_price": "90000"
}
}
Move order by order id request#
{
"type": "MOVE_ORDER",
"order": {
"order_id": "ac233037-7483-409e-942f-8f4bb38f373c",
"instrument_code": "BTC_EUR",
"price": "85100"
}
}
Move order by client id request#
{
"type": "MOVE_ORDER",
"order": {
"client_id": "1daf8283-48c4-437b-90d7-7510bda55643",
"instrument_code": "BTC_EUR",
"price": "85100"
}
}
Move order response#
Success#
{
"channel_name": "TRADING",
"type": "DONE",
"event": "ORDER",
"status": "MOVED",
"instrument_code": "SOL_EUR",
"client_id": "436afcec-7d88-4e8d-ac45-3439e3aed490",
"order_id": "a9ed7098-4f53-455a-9dc9-70444e8950a1",
"order_book_sequence": 71089343164,
"side": "BUY",
"price": "49",
"amount": "1",
"remaining": "1",
"bals": [
{
"c": "SOL",
"a": "10000000"
},
{
"c": "EUR",
"a": "1009950"
}
],
"lckd_bals": [
{
"c": "SOL",
"a": "0"
},
{
"c": "EUR",
"a": "100"
}
],
"time": 1743892870022076533
}
Error#
Move orders are validated in the same way a Create Order request is, so errors will be the same format.{
"error": "MIN_PRICE_EXCEEDED_ERROR",
"payload": {
"type": "MOVE_ORDER",
"order": {
"order_id": "a9ed7098-4f53-455a-9dc9-70444e8950a1",
"instrument_code": "SOL_EUR"
}
}
}