Hello! Suppose I have exhausted my rate limit and I send CancelReplace. Server responds with the following message:
{
“code”: -1015,
“msg”: “Too many new orders; current limit is 50 orders per 10 SECOND.”
}
I assume that “new” part of the CancelReplace failed. But what happened with the “cancel” part? Was the old order canceled or not? Is this behavior specified somewhere?
https://binance-docs.github.io/apidocs/spot/en/#cancel-an-existing-order-and-send-a-new-order-trade
If you have cancelReplaceMode=STOP_ON_FAILURE:
- If the cancel request fails, the new order placement will not be attempted. So you won’t get into the new order step and receive “Too many new orders;…” error message.
If you have cancelReplaceMode=ALLOW_FAILURE:
- New order placement will be attempted even if cancel request fails, so it you get the “Too many new orders;…” error message, the cancel might have been successful or not. In this case, I would suggest for you to use the user data stream (websocket ) to be notified on the order status.
This in not an answer to my question, unfortunately. STOP_ON_FAILURE implies that if I failed to cancel, then I fail to place new. But it doesn’t imply that if I failed to place new, then I failed to cancel.
You failed to place new order, but the placement was attempted.
If it was attempted with STOP_ON_FAILURE
, then the cancel was successful, because otherwise the new order submission won’t even start (definition of STOP_ON_FAILURE).
Also a good idea to use user data stream (websocket ) for when it’s cancelReplaceMode=STOP_ON_FAILURE.