批量撤销订单
接口描述
批量撤销订单。每次最多允许撤销 10 个订单。
HTTP请求
DELETE /fapi/v1/batchOrders (HMAC SHA256)
请求权重
1
请求参数
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| symbol | STRING | YES | 交易对 |
| orderIdList | JSON LIST | NO | 系统订单 ID 列表; 最多支持 10 个 |
| origClientOrderIdList | JSON LIST | NO | 用户自定义 ID 列表; 最多支持 10 个 |
| timestamp | LONG | YES | 时间戳 |
响应示例
[
{
"clientOrderId": "testOrderBatchCancel1",
"cumQty": "0",
"cumQuote": "0",
"executedQty": "0",
"orderId": 2254222045,
"origQty": "10",
"origType": "TRAILING_STOP_MARKET",
"price": "0",
"reduceOnly": false,
"side": "SELL",
"positionSide": "BOTH",
"status": "CANCELED",
"stopPrice": "0",
"closePosition": false,
"symbol": "BTCUSDT",
"timeInForce": "GTC",
"type": "TRAILING_STOP_MARKET",
"activatePrice": "9020",
"priceRate": "0.3",
"updateTime": 1566818724722,
"workingType": "CONTRACT_PRICE",
"priceProtect": false
}
]
命中的 orderIdList 或 origClientOrderIdList 必须填其一。
注意
- 列表里的每个
orderId既可以是普通订单,也可以是trigger_order— 撤单路径会自动识别类型并对应处理。 - 撤销父订单会级联撤销其挂着的 TP/SL trigger 单。
- 被撤销的 fapi 订单冻结保证金会释放回
available_balance。 已经处于终态(FILLED/CANCELED/EXPIRED)的订单 ID 会被 静默跳过 —— 它们出现在响应里时携带的是当前终态,不算错误。
代码示例
cURL
API_KEY="your_api_key"
API_SECRET="your_api_secret"
TIMESTAMP=$(date +%s%3N)
QUERY_STRING="symbol=BTCUSDT&orderIdList=[2254222045,2254222046,2254222047]×tamp=${TIMESTAMP}"
SIGNATURE=$(echo -n "${QUERY_STRING}" | openssl dgst -sha256 -hmac "${API_SECRET}" | awk '{print $2}')
curl -s -X DELETE \
-H "X-MBX-APIKEY: ${API_KEY}" \
"https://api-sepolia.ztdx.io/fapi/v1/batchOrders?${QUERY_STRING}&signature=${SIGNATURE}"
Python
import time, hmac, hashlib, requests, json
from urllib.parse import quote
API_KEY = "your_api_key"
API_SECRET = "your_api_secret"
BASE_URL = "https://api.ztdx.io"
def sign(msg: str) -> str:
return hmac.new(API_SECRET.encode(), msg.encode(), hashlib.sha256).hexdigest()
# Batch cancel multiple orders by orderIdList
order_ids = ["order_id_1", "order_id_2", "order_id_3"]
ts = int(time.time() * 1000)
id_list_str = json.dumps(order_ids, separators=(',', ':'))
encoded = quote(id_list_str)
qs = f"symbol=BTCUSDT&orderIdList={encoded}×tamp={ts}"
sig = sign(qs)
resp = requests.delete(
f"{BASE_URL}/fapi/v1/batchOrders?{qs}&signature={sig}",
headers={"X-MBX-APIKEY": API_KEY},
)
print(resp.json())