Batch order management
POST/batchorder
This endpoint allows sending limit or stop order(s) and/or cancelling open order(s) and/or editing open order(s) for a currently listed Futures contract in batch.
When editing an order, if the trailingStopMaxDeviation
and trailingStopDeviationUnit
parameters are sent unchanged, the system will recalculate a new stop price upon successful
order modification.
Request
- application/json
Body
required
- Array [
- BatchOrderSend
- BatchOrderEdit
- BatchOrderCancel
lmt
- a limit order,post
- a post-only limit order,take_profit
- a take profit order orstp
- a stop ordertrailing_stop
- a trailing stop order- ]
The time before which the request should be processed, otherwise it is rejected.
json objectrequired
This parameter is required to be encoded as a json string, please see example.
batchOrder object[]required
A list containing structures of order sending and order cancellation instructions. The list is in no particular order.
Possible values: [send
]
Always send
.
An arbitrary string provided client-side to tag the order for the purpose of mapping order sending instructions to the API's response.
Possible values: [lmt
, ioc
, post
, stp
, take_profit
]
Order type:
The symbol of the Futures.
Possible values: [buy
, sell
]
The direction of the order.
The size associated with the order.
The limit price associated with the order. If placing a trailing_stop
order then leave
undefined.
The stop price associated with a stop order. Required if orderType
is stp
.
Note that for stp
orders, limitPrice
is also required and denotes the worst price at
which the stp
order can get filled
Possible values: <= 100 characters
The order identity that is specified from the user. It must be globally unique.
Possible values: [mark
, spot
, last
]
Set as 'true' if you wish the order to only reduce an existing position. Any order which increases an existing position will be rejected. Default 'false'.
Required if the order type is trailing_stop
.
Is the maximum distance the trailing stop's trigger price may trail behind the requested trigger signal. It defines the threshold at which the trigger price updates.
Possible values: [PERCENT
, QUOTE_CURRENCY
]
Required if the order type is trailing_stop
.
This defines how the trailing trigger price is calculated from the requested trigger signal. For example, if the max deviation is set to 10, the unit is 'PERCENT', and the underlying order is a sell, then the trigger price will never be more then 10% below the trigger signal. Similarly, if the deviation is 100, the unit is 'QUOTE_CURRENCY', the underlying order is a sell, and the contract is quoted in USD, then the trigger price will never be more than $100 below the trigger signal.
Possible values: <= 100 characters
Unique client order identifier.
Order ID.
Possible values: [edit
]
Always edit
.
The size associated with the order.
The limit price associated with the order.
The stop price associated with a stop order. Required if old orderType is stp.
Note that for stp
orders, limitPrice
is also required and denotes the worst
price at which the stp order can get filled.
Possible values: >= 0.1
and <= 50
Only relevant for trailing stop orders. Maximum value of 50%, minimum value of 0.1% for 'PERCENT' 'maxDeviationUnit'.
Is the maximum distance the trailing stop's trigger price may trail behind the requested trigger signal. It defines the threshold at which the trigger price updates.
Possible values: [PERCENT
, QUOTE_CURRENCY
]
Only relevant for trailing stop orders.
This defines how the trailing trigger price is calculated from the requested trigger signal. For example, if the max deviation is set to 10, the unit is 'PERCENT', and the underlying order is a sell, then the trigger price will never be more then 10% below the trigger signal. Similarly, if the deviation is 100, the unit is 'QUOTE_CURRENCY', the underlying order is a sell, and the contract is quoted in USD, then the trigger price will never be more than $100 below the trigger signal.
Possible values: <= 100 characters
Unique client order identifier.
Order ID.
Possible values: [cancel
]
Always cancel
.
Responses
- 200
- application/json
- Schema
- success
Schema
- Success Response
- ErrorResponse
- Array [
- Array [
- PlaceEvent
- CancelEvent
- EditEvent
- RejectEvent
- ExecuteEvent
- PlaceTriggerEvent
- CancelTriggerEvent
- RejectTriggerEvent
- OrderJson
- OrderJson
POST_WOULD_EXECUTE
- The post-only order would be filled upon placement, thus is cancelled.IOC_WOULD_NOT_EXECUTE
- The immediate-or-cancel order would not execute.- OrderJson
- OrderTriggerJson
- OrderTriggerJson
- ]
placed
- the order was placed successfullycancelled
- the order was cancelled successfullyinvalidOrderType
- the order was not placed because orderType is invalidinvalidSide
- the order was not placed because side is invalidinvalidSize
- the order was not placed because size is invalidinvalidPrice
- the order was not placed because limitPrice and/or stopPrice are invalidinsufficientAvailableFunds
- the order was not placed because available funds are insufficientselfFill
- the order was not placed because it would be filled against an existing order belonging to the same accounttooManySmallOrders
- the order was not placed because the number of small open orders would exceed the permissible limitmarketSuspended
- the order was not placed because the market is suspendedmarketInactive
- the order was not placed because the market is inactiveclientOrderIdAlreadyExist
- the specified client ID already existclientOrderIdTooLong
- the client ID is longer than the permissible limitoutsidePriceCollar
- the limit order crosses the spread but is an order of magnitude away from the mark price - fat finger controlpostWouldExecute
- the post-only order would be filled upon placement, thus is cancellediocWouldNotExecute
- the immediate-or-cancel order would not execute- ]
accountInactive
: The Futures account the request refers to is inactiveapiLimitExceeded
: The API limit for the calling IP address has been exceededauthenticationError
: The request could not be authenticatedinsufficientFunds
: The amount requested for transfer is below the amount of funds availableinvalidAccount
: The Futures account the transfer request refers to is invalidinvalidAmount
: The amount the transfer request refers to is invalidinvalidArgument
: One or more arguments provided are invalidinvalidUnit
: The unit the transfer request refers to is invalidJson Parse Error
: The request failed to pass valid JSON as an argumentmarketUnavailable
: The market is currently unavailablenonceBelowThreshold
: The provided nonce is below the thresholdnonceDuplicate
: The provided nonce is a duplicate as it has been used in a previous requestnotFound
: The requested information could not be foundrequiredArgumentMissing
: One or more required arguments are missingServer Error
: There was an error processing the requestUnavailable
: The endpoint being called is unavailableunknownError
: An unknown error has occurred
batchStatus object[]required
A structure containing information on the send order request.
The unique client order identifier. This field is returned only if the order has a client order ID.
The date and time the order was received.
orderEvents object[]
Possible values: [PLACE
]
Always PLACE
.
order object
The placed order.
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
The amount of quantity that was removed before placement or null if the order is not a reduce only.
Possible values: [CANCEL
]
Always CANCEL
.
The UID associated with the order.
order object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
Possible values: [EDIT
]
Always EDIT
.
old object
The order before the edit was applied.
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
new object
The order after the edit was applied.
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
The amount of quantity that was removed from the edited order or null if the order is not a reduce only.
Possible values: [REJECT
]
Always REJECT
.
The UID associated with the order.
order object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
Possible values: [POST_WOULD_EXECUTE
, IOC_WOULD_NOT_EXECUTE
]
The rejection reason:
Possible values: [EXECUTION
]
Always EXECUTION
.
The UID associated with the execution.
The price of the execution.
The executed amount.
orderPriorEdit object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
orderPriorExecution object
The order before it executes.
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
, block
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The total amount of the order that has been filled.
The limit price associated with a limit order.
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
The amount of quantity that was removed from the order before execution or null if the order is not a reduce only.
Possible values: [PLACE
]
Always PLACE
.
orderTrigger object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The limit price associated with a limit order.
Possible values: [trigger_above
, trigger_below
]
Possible values: [mark_price
, last_price
, spot_price
]
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
Possible values: [CANCEL
]
Always CANCEL
.
orderTrigger object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The limit price associated with a limit order.
Possible values: [trigger_above
, trigger_below
]
Possible values: [mark_price
, last_price
, spot_price
]
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
Possible values: [REJECT
]
Always REJECT
.
orderTrigger object
The UID associated with the order.
The client order id or null if order does not have one.
Possible values: [lmt
, ioc
, post
, liquidation
, assignment
, stp
, unwind
]
The order type
The symbol of the Futures.
Possible values: [buy
, sell
]
The side associated with the order
The quantity (size) associated with the order.
The limit price associated with a limit order.
Possible values: [trigger_above
, trigger_below
]
Possible values: [mark_price
, last_price
, spot_price
]
Is the order a reduce only order or not.
The date and time the order was placed.
The date and time the order was edited.
Possible values: [MARKET_SUSPENDED
, MARKET_NOT_FOUND
, INVALID_PRICE
, INVALID_QUANTITY
, SMALL_ORDER_LIMIT_EXCEEDED
, INSUFFICIENT_MARGIN
, WOULD_CAUSE_LIQUIDATION
, CLIENT_ORDER_ID_IN_USE
, CLIENT_ORDER_ID_TOO_LONG
, MAX_POSITION_EXCEEDED
, PRICE_COLLAR
, PRICE_DISLOCATION
, EDIT_HAS_NO_EFFECT
, ORDER_FOR_CANCELLATION_NOT_FOUND
, ORDER_FOR_EDIT_NOT_FOUND
, ORDER_CANNOT_HAVE_TRIGGER_PRICE
, POST_WOULD_EXECUTE
, IOC_WOULD_NOT_EXECUTE
, WOULD_EXECUTE_SELF
, WOULD_NOT_REDUCE_POSITION
, REJECTED_AFTER_EXECUTION
, MARKET_IS_POST_ONLY
, ORDER_LIMIT_EXCEEDED
, FIXED_LEVERAGE_TOO_HIGH
, CANNOT_EDIT_TRIGGER_PRICE_OF_TRAILING_STOP
, CANNOT_EDIT_LIMIT_PRICE_OF_TRAILING_STOP
, TRAILING_STOP_ORDER_LIMIT_EXCEEDED
, TRAILING_STOP_PERCENT_DEVIATION_EXCEEDS_MAX_DECIMAL_PLACES
, TRAILING_STOP_QUOTE_DEVIATION_NOT_MULTIPLE_OF_TICK_SIZE
, TRAILING_STOP_MAX_DEVIATION_TOO_LARGE
, TRAILING_STOP_MAX_DEVIATION_TOO_SMALL
, INSUFFICIENT_HEADROOM_AROUND_CURRENT_PRICE_TO_EDIT_TRAILING_STOP
, NO_REFERENCE_PRICE_AVAILABLE_FOR_CALCULATING_TRAILING_STOP_TRIGGER_PRICE
, INSUFFICIENT_CLOSING_MARGIN
, LIMIT_PRICE_SET_AS_ABSOLUTE_AND_RELATIVE
, LIMIT_PRICE_OFFSET_VALUE_INVALID
, LIMIT_PRICE_OFFSET_UNIT_INVALID
, LIMIT_PRICE_OFFSET_MUST_HAVE_VALUE_AND_UNIT
, LIMIT_PRICE_OFFSET_QUOTE_CURRENCY_VALUE_MUST_BE_MULTIPLE_OF_TICK_SIZE
, LIMIT_PRICE_OFFSET_PERCENT_VALUE_TOO_MANY_DECIMAL_PLACES
, LIMIT_PRICE_OFFSET_TOO_HIGH
, LIMIT_PRICE_OFFSET_TOO_LOW
]
The unique identifier of the order.
The arbitrary string provided client-side when the order was sent for the purpose of mapping order sending instructions to the API's response.
Possible values: [placed
, edited
, cancelled
, invalidOrderType
, invalidSide
, invalidSize
, invalidPrice
, insufficientAvailableFunds
, selfFill
, tooManySmallOrders
, marketSuspended
, marketInactive
, clientOrderIdAlreadyExist
, clientOrderIdTooLong
, outsidePriceCollar
, postWouldExecute
, iocWouldNotExecute
]
The status of the order:
Possible values: [success
]
Server time in Coordinated Universal Time (UTC)
Possible values: [accountInactive
, apiLimitExceeded
, authenticationError
, insufficientFunds
, invalidAccount
, invalidAmount
, invalidArgument
, invalidUnit
, Json Parse Error
, marketUnavailable
, nonceBelowThreshold
, nonceDuplicate
, notFound
, requiredArgumentMissing
, Server Error
, Unavailable
, unknownError
]
Possible values: [accountInactive
, apiLimitExceeded
, authenticationError
, insufficientFunds
, invalidAccount
, invalidAmount
, invalidArgument
, invalidUnit
, Json Parse Error
, marketUnavailable
, nonceBelowThreshold
, nonceDuplicate
, notFound
, requiredArgumentMissing
, Server Error
, Unavailable
, unknownError
]
Error description.
Possible values: [error
]
Server time in Coordinated Universal Time (UTC)
{
"result": "success",
"batchStatus": [
{
"status": "placed",
"order_tag": "1",
"order_id": "022774bc-2c4a-4f26-9317-436c8d85746d",
"dateTimeReceived": "2019-09-05T16:41:35.173Z",
"orderEvents": [
{
"type": "PLACE",
"order": {
"orderId": "022774bc-2c4a-4f26-9317-436c8d85746d",
"type": "lmt",
"symbol": "PI_XBTUSD",
"side": "buy",
"quantity": 1000,
"filled": 0,
"limitPrice": 9400,
"reduceOnly": false,
"timestamp": "2019-09-05T16:41:35.173Z",
"lastUpdateTimestamp": "2019-09-05T16:41:35.173Z"
}
}
]
},
{
"status": "edited",
"order_id": "9c2cbcc8-14f6-42fe-a020-6e395babafd1",
"orderEvents": [
{
"type": "EDIT",
"old": {
"orderId": "9c2cbcc8-14f6-42fe-a020-6e395babafd1",
"type": "lmt",
"symbol": "PI_XBTUSD",
"side": "buy",
"quantity": 102,
"filled": 0,
"limitPrice": 8500,
"reduceOnly": false,
"timestamp": "2019-09-04T11:45:48.884Z",
"lastUpdateTimestamp": "2019-09-04T11:45:48.884Z"
},
"new": {
"orderId": "9c2cbcc8-14f6-42fe-a020-6e395babafd1",
"type": "lmt",
"symbol": "PI_XBTUSD",
"side": "buy",
"quantity": 1000,
"filled": 0,
"limitPrice": 9400,
"reduceOnly": false,
"timestamp": "2019-09-04T11:45:48.884Z",
"lastUpdateTimestamp": "2019-09-05T16:41:40.996Z"
}
}
]
},
{
"status": "cancelled",
"order_id": "566942c8-a3b5-4184-a451-622b09493129",
"orderEvents": [
{
"type": "CANCEL",
"uid": "566942c8-a3b5-4184-a451-622b09493129",
"order": {
"orderId": "566942c8-a3b5-4184-a451-622b09493129",
"type": "lmt",
"symbol": "PI_XBTUSD",
"side": "buy",
"quantity": 100,
"filled": 0,
"limitPrice": 8500,
"reduceOnly": false,
"timestamp": "2019-09-02T12:54:08.005Z",
"lastUpdateTimestamp": "2019-09-02T12:54:08.005Z"
}
}
]
}
],
"serverTime": "2019-09-05T16:41:40.996Z"
}