Where can I see the reason my order got canceled?
To see why your order was cancelled/rejected, you can refer to the Text column on the Order History page. Hover over it to display the entire text:
If you want to double-check whether your order really met the requirements for that text (such as "had execInst of ParticipateDoNotInitiate"), you can hover over the Type value in the Order History tab on the Trade page. It will tell you all the instructions/details you've set up for that order.
Explanations of Canceled/Rejected Texts:
Text | Type and Instructions | Reason |
---|---|---|
Canceled: Cancel from www.bitmex.com | N/A | If you see this text, it means the order was canceled by you through the site |
Canceled: Cancel from API | N/A | The order was canceled by you through the API |
Canceled: Position in liquidation | N/A |
The order was canceled because your position entered liquidation. All open orders, including untriggered stops, will be canceled when a position enters liquidation. Once your position has been liquidated you are free to place new orders. |
Canceled: Order had an execInst of ParticipateDoNotInitiate |
ExecInst: ParticipateDoNotInitiate |
ParticipateDoNotInitiate refers to the "Post Only" checkmark. "Post Only" orders get canceled if they were to fill immediately. If you don't mind getting filled immediately and paying the taker fee, you can just uncheck this box. Otherwise, you'll need to change your Limit Price to make sure your order is not going to get filled as soon as it hits the orderbook. |
Canceled: Order had execInst of Close or ReduceOnly but current position is X |
ExecInst: Close or ExecInst: ReduceOnly |
ExecInst: Close refers to "Close on Trigger" check. If "Close on Trigger" or "Reduce Only" is enabled for an order, it will get canceled if it were to increase your position size. If you're looking to increase your position size, make sure you uncheck this. Otherwise, make sure the size of your order equals to your open position size and is in the different direction. |
Canceled: Order had execInst of Close or ReduceOnly but open sell/buy orders exceed current position of X |
ExecInst: Close or ExecInst: ReduceOnly
|
In the case that you have open orders already totalling more than your open position, we will cancel your order instead of letting it trigger, as there is a chance that this order could open a new position; closing orders prevent this from happening |
Cancelled: Account has insufficient Available Balance or Rejected: Account has insufficient Available Balance |
no "ExecInst: Close" or no "ExecInst: ReduceOnly" |
Your available balance is less than the required margin to place the order. If it's a close order, you can avoid the margin requirement with "Reduce Only" or "Close on Trigger". Otherwise, you'll need to either deposit more funds or adjust your order to require less margin. |
Rejected: Executing at order price would lead to immediate liquidation | N/A | The engine calculated the average fill price for your order and found that it would draw the entry price over the liquidation price. |
Rejected: Value of position and orders exceeds position Risk Limit | N/A | When the stop was triggered, the net value of your position plus all open orders exceeded your risk limit. Please read the Risk Limit document for more information on this. |
Rejected: Order price is below liquidation price of current [Long/Short] position | N/A | The Limit Price of your order is below the Liquidation Price of your current position. This is not automatically cancelled at submission because we cannot predict what the Liquidation Price will be when the order triggers. |
Rejected: Order Submission Error | N/A |
When load spikes, we cannot service every incoming request while maintaining acceptable response times, therefore we implemented a cap on the maximum number of requests that can enter the engine queue, after which, new requests are rejected until the queue has shrunk. If your order gets rejected for this reason, you'll see this text or "System Overload" message.
|
Rejected: Aggressive limit/pegged orders have exceeded far touch size and price thresholds |
N/A | We protect the integrity of the market against large aggressive orders that are likely due to input error and which may severely affect prices. This is referred to as Fat Finger Protection Rule. If you see this text, the order violated this rule. For more details on it, please refer to Trading Rules: Fat Finger Protection |
Canceled: Order had timeInForce of ImmediateOrCancel |
Type: Limit TIF: ImmediateOrCancel |
When timeInForce is ImmediateOrCancel, any unfilled portion is cancelled after the order is placed. |
Canceled: Order had timeInForce of ImmediateOrCancel |
Type: Market TIF: ImmediateOrCancel |
When a Market order is triggered, the Engine calculates an effective limit price for the order based on information such as your account balance, in order to complete necessary risk checks. If due to liquidity, the order cannot be executed before reaching the effective limit price, the order will be cancelled with the message you received |
Canceled: Order had timeInForce of FillOrKill |
Type: Limit TIF: FillOrKill |
When timeInForce is FillOrKill, the entire order gets cancelled if it can't immediately fill fully once it gets executed. |
Why didn't my Stop order trigger before I was liquidated?
Text | Type & Instructions | Reason |
---|---|---|
Rejected: Position in liquidation
|
Order Type: Stop Limit or Market execInst: Last |
Liquidations are based on Mark Price. Since Mark Price can differ from Last Price, it's possible for Mark Price to reach your Liquidation Price before the Last Price can reach your Trigger/Stop Price. To make sure your Stop order triggers before you're liquidated, you can set the Trigger Price to Mark or place your Stop Order further from your Liquidation Price. |
Canceled: Position in liquidation Canceled: Cancel from www.bitmex.com if it was cancelled by you.
|
Order Type: Stop Limit |
When you place a Limit Order with the Stop Price and Limit Price close together, you run the risk in periods of high volatility that your order will be triggered, sit in the Oderbook, and won't get filled. This is because the price moves past your Limit Price immediately after it is triggered and before the order can be filled. To prevent your order from sitting in the orderbook, it is safer to use a larger spread between your Stop Price and your Limit Price as it will ensure there is enough liquidity between the two prices to fill your order |
Rejected: Position in liquidation Rejected: Executing at order price would lead to immediate liquidation |
Order Type: Stop Market no "execInst: Last" or "execInst: Index" (implying a trigger price of "Mark") |
Once a stop order is triggered, an order is submitted to the exchange; however, in a fast-moving market, users may experience slippage. Due to that, the Mark Price could reach the liquidation price before the order can be executed.
Also, if your Stop Market order is close to your Liquidation price, it's especially possible that, by the time the Stop triggers and the Market Order is placed, the orderbook moves to a range where it can't fill before your liquidation. |