批量下单
接口描述
批量创建并提交新订单。每次最多允许提交 5 个订单。
HTTP请求
POST /fapi/v1/batchOrders (HMAC SHA256)
请求权重
5
请求参数
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| batchOrders | JSON LIST | YES | 订单列表,最多包含 5 个订单数据 |
| timestamp | LONG | YES | 时间戳 |
每个订单对象包含以下参数:
| 名称 | 类型 | 是否必需 | 描述 |
|---|---|---|---|
| symbol | STRING | YES | 交易对 |
| side | ENUM | YES | 买卖方向: BUY, SELL |
| type | ENUM | YES | 订单类型 |
| quantity | DECIMAL | YES | 下单数量 |
| price | DECIMAL | NO | 委托价格 |
| stopPrice | DECIMAL | NO | 触发价格 |
| timeInForce | ENUM | NO | 有效方式 |
| reduceOnly | STRING | NO | true 或 false |
| positionSide | ENUM | NO | 持仓方向 |
| workingType | ENUM | NO | 触发类型 |
响应示例
[
{
"clientOrderId": "testOrderBatch1",
"cumQty": "0",
"cumQuote": "0",
"executedQty": "0",
"orderId": 2254222045,
"avgPrice": "0.00000",
"origQty": "10",
"price": "0",
"reduceOnly": false,
"side": "SELL",
"positionSide": "BOTH",
"status": "NEW",
"stopPrice": "0",
"closePosition": false,
"symbol": "BTCUSDT",
"timeInForce": "GTC",
"type": "TRAILING_STOP_MARKET",
"origType": "TRAILING_STOP_MARKET",
"activatePrice": "9020",
"priceRate": "0.3",
"updateTime": 1566818724722,
"workingType": "CONTRACT_PRICE",
"priceProtect": false
},
{
"code": -2010,
"msg": "Account has insufficient balance for requested action."
}
]
响应是一个列表,每个元素对应请求中的一个订单。如果某个订单创建失败,对应的元素会包含错误码和错误信息。
代码示例
cURL
API_KEY="your_api_key"
API_SECRET="your_api_secret"
TIMESTAMP=$(date +%s%3N)
BATCH='[{"symbol":"BTCUSDT","side":"BUY","type":"LIMIT","timeInForce":"GTC","quantity":"0.01","price":"60000"},{"symbol":"BTCUSDT","side":"SELL","type":"LIMIT","timeInForce":"GTC","quantity":"0.01","price":"80000"}]'
QUERY_STRING="batchOrders=${BATCH}×tamp=${TIMESTAMP}"
SIGNATURE=$(echo -n "${QUERY_STRING}" | openssl dgst -sha256 -hmac "${API_SECRET}" | awk '{print $2}')
curl -s -X POST \
-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()
# Place two LIMIT orders in a batch
batch_orders = [
{"symbol": "BTCUSDT", "side": "BUY", "type": "LIMIT", "timeInForce": "GTC", "quantity": "0.01", "price": "60000"},
{"symbol": "BTCUSDT", "side": "SELL", "type": "LIMIT", "timeInForce": "GTC", "quantity": "0.01", "price": "80000"},
]
ts = int(time.time() * 1000)
batch_str = json.dumps(batch_orders, separators=(',', ':'))
encoded = quote(batch_str)
qs = f"batchOrders={encoded}×tamp={ts}"
sig = sign(qs)
resp = requests.post(
f"{BASE_URL}/fapi/v1/batchOrders?{qs}&signature={sig}",
headers={"X-MBX-APIKEY": API_KEY},
)
print(resp.json())