交易接口
下单 (TRADE)
POST /api/v3/order
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
side | ENUM | YES | 详见枚举定义:订单方向 |
type | ENUM | YES | 详见枚举定义:订单类型 |
timeInForce | ENUM | NO | 详见枚举定义:生效时间 |
quantity | DECIMAL | NO | |
quoteOrderQty | DECIMAL | NO | |
price | DECIMAL | NO | |
newClientOrderId | STRING | NO | 用户自定义的orderid,如空缺系统会自动赋值。 |
strategyId | LONG | NO | |
strategyType | INT | NO | 不能低于 1000000 . |
stopPrice | DECIMAL | NO | 仅 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , TAKE_PROFIT_LIMIT 需要此参数。 |
trailingDelta | LONG | NO | 用于 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , 和 TAKE_PROFIT_LIMIT 类型的订单。 |
icebergQty | DECIMAL | NO | 仅有限价单(包括条件限价单与限价做事单)可以使用该参数,含义为创建冰山订单并指定冰山订单的数量。 |
newOrderRespType | ENUM | NO | 指定响应类型 ACK , RESULT , or FULL ; MARKET 与 LIMIT 订单默认为FULL , 其他默认为ACK 。 |
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:STP 模式。 |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
根据 order type
的不同,某些参数 有强制要求,具体如下:
Type | 强制要求的参数 | 其他信息 |
---|---|---|
LIMIT | timeInForce , quantity , price | |
MARKET | quantity | 市价买卖单可用quantity 参数来设置base asset 数量.例如:BTCUSDT 市价单,BTC 买卖数量取决于 quantity 参数. 市价买卖单可用 quoteOrderQty 参数来设置quote asset 数量. 正确的quantity 取决于市场的流动性与quoteOrderQty 例如: 市价 BUY BTCUSDT,单子会基于quoteOrderQty - USDT 的数量,购买 BTC.市价 SELL BTCUSDT,单子会卖出 BTC 来满足quoteOrderQty - USDT 的数量. |
STOP_LOSS | quantity , stopPrice , trailingDelta | 条件满足后会下MARKET 单子. (例如:达到stopPrice 或trailingDelta 被启动) |
STOP_LOSS_LIMIT | timeInForce , quantity , price , stopPrice , trailingDelta | |
TAKE_PROFIT | quantity , stopPrice , trailingDelta | 条件满足后会下MARKET 单子. (例如:达到stopPrice 或trailingDelta 被启动) |
TAKE_PROFIT_LIMIT | timeInForce , quantity , price , stopPrice , trailingDelta | |
LIMIT_MAKER | quantity , price | 订单大部分情况下与普通的限价单没有区别,但是如果在当前价格会立即吃对手单并成交则下单会被拒绝。因此使用这个订单类型可以保证订单一定是挂单方,不会成为吃单方。 |
其他:
- 任何
LIMIT
或LIMIT_MAKER
只要填icebergQty
参数都可以下冰上订单。 - 冰山订单的
timeInForce
必须设置为GTC
。 STOP_LOSS
,STOP_LOSS_LIMIT
,TAKE_PROFIT_LIMIT
与TAKE_PROFIT
单子都能同时填上trailingDelta
与stopPrice
。- 填上
quoteOrderQty
的市价单不会触犯过滤器的LOT_SIZE
限制。订单的quantity
会尽量满足quoteOrderQty
的数量。
条件单的触发价格必须:
- 比下单时当前市价高:
STOP_LOSS
BUY
,TAKE_PROFIT
SELL
- 比下单时当前市价低:
STOP_LOSS
SELL
,TAKE_PROFIT
BUY
关于 newOrderRespType的三种选择
数据源: 撮合引擎
Response ACK: 返回速度最快,不包含成交信息,信息量最少
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595
}
Response RESULT: 返回速度居中,返回吃单成交的少量信息
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL"
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE"
}
Response FULL: 返回速度最慢,返回吃单成交的详细信息
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "10.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "10.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": 1507725176595,
"selfTradePreventionMode": "NONE",
"fills": [
{
"price": "4000.00000000",
"qty": "1.00000000",
"commission": "4.00000000",
"commissionAsset": "USDT",
"tradeId": 56
},
{
"price": "3999.00000000",
"qty": "5.00000000",
"commission": "19.99500000",
"commissionAsset": "USDT",
"tradeId": 57
},
{
"price": "3998.00000000",
"qty": "2.00000000",
"commission": "7.99600000",
"commissionAsset": "USDT",
"tradeId": 58
},
{
"price": "3997.00000000",
"qty": "1.00000000",
"commission": "3.99700000",
"commissionAsset": "USDT",
"tradeId": 59
},
{
"price": "3995.00000000",
"qty": "1.00000000",
"commission": "3.99500000",
"commissionAsset": "USDT",
"tradeId": 60
}
]
}
订单响应中的特定条件时才会出现的字段
订单响应中的有一些字段仅在满足特定条件时才会出现。这些订单响应可以来自下订单,查询订单或取消订单,并且可以包括订单列表类型。 下面列出了这些字段:
名称 | 描述 | 显示的条件 | 示例 |
---|---|---|---|
icebergQty | 冰山订单的数量。 | 只有在请求中发送 icebergQty 参数时才会出现。 | "icebergQty": "0.00000000" |
preventedMatchId | 与 symbol 结合使用时,可用于查询因为 STP 导致订单失效的过期订单。 | 只有在因为 STP 导致订单失效时可见。 | "preventedMatchId": 0 |
preventedQuantity | 因为 STP 导致订单失效的数量。 | 只有在因为 STP 导致订单失效时可见。 | "preventedQuantity": "1.200000" |
stopPrice | 用于设置逻辑订单中的触发价。 | STOP_LOSS ,TAKE_PROFIT ,STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单时可见。 | "stopPrice": "23500.00000000" |
strategyId | 策略单ID; 用以关联此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyId": 37463720 |
strategyType | 策略单类型; 用以显示此订单对应的交易策略。 | 如果在请求中添加了参数,则会出现。 | "strategyType": 1000000 |
trailingDelta | 用以定义追踪止盈止损订单被触发的价格差。 | 出现在追踪止损订单中。 | "trailingDelta": 10 |
trailingTime | 追踪单被激活和跟踪价格变化的时间。 | 出现在追踪止损订单中。 | "trailingTime": -1 |
usedSor | 用于确定订单是否使用SOR的字段 | 在使用SOR下单时出现 | "usedSor": true | |
workingFloor | 用以定义订单是通过 SOR 还是由订单提交到的订单薄(order book)成交的。 | 出现在使用了 SOR 的订单中。 | "workingFloor": "SOR" |
测试下单接口 (TRADE)
POST /api/v3/order/test
用于测试订单请求,但不会提交到撮合引擎
权重:
条件 | 权重 |
---|---|
没有 computeCommissionRates | 1 |
有 computeCommissionRates | 20 |
参数:
除了 POST /api/v3/order
所有参数,
下面参数也支持:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
computeCommissionRates | BOOLEAN | NO | 默认值: false |
数据源: 缓存
响应:
没有 computeCommissionRates
{}
有 computeCommissionRates
{
"standardCommissionForOrder": { // 订单交易的标准佣金率
"maker": "0.00000112",
"taker": "0.00000114",
},
"taxCommissionForOrder": { // 订单交易的税率
"maker": "0.00000112",
"taker": "0.00000114",
},
"discount": { // 以BNB支付时的标准佣金折扣。
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000" // 当用BNB支付佣金时,在标准佣金上按此比率打折
}
}
查询订单 (USER_DATA)
GET /api/v3/order
查询订单状态
权重: 4
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
orderId | LONG | NO | |
origClientOrderId | STRING | NO | |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
注意:
- 至少需要发送
orderId
与origClientOrderId
中的一个。 - 当同时提供
orderId
和origClientOrderId
两个参数时,系统首先将会使用orderId
来搜索订单。然后, 查找结果中的origClientOrderId
的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。 - 某些订单中
cummulativeQuoteQty
<0,是由于这些订单是cummulativeQuoteQty功能上线之前的订单。
数据源: 缓存 => 数据库
响应:
{
"symbol": "LTCBTC", // 交易对
"orderId": 1, // 系统的订单ID
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "myOrder1", // 客户自己设置的ID
"price": "0.1", // 订单价格
"origQty": "1.0", // 用户设置的原始订单数量
"executedQty": "0.0", // 交易的订单数量
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.0", // 累计交易的金额
"status": "NEW", // 订单状态
"timeInForce": "GTC", // 订单的时效方式
"type": "LIMIT", // 订单类型, 比如市价单,现价单等
"side": "BUY", // 订单方向,买还是卖
"stopPrice": "0.0", // 止损价格
"icebergQty": "0.0", // 冰山数量
"time": 1499827319559, // 订单时间
"updateTime": 1499827319559, // 最后更新时间
"isWorking": true, // 订单是否出现在orderbook中
"workingTime":1499827319559, // 订单添加到 order book 的时间
"origQuoteOrderQty": "0.000000", // 原始的交易金额
"selfTradePreventionMode": "NONE" // 如何处理自我交易模式
}
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
撤销订单 (TRADE)
DELETE /api/v3/order
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
orderId | LONG | NO | |
origClientOrderId | STRING | NO | |
newClientOrderId | STRING | NO | 用户自定义的本次撤销操作的ID(注意不是被撤销的订单的自定义ID)。如无指定会自动赋值。 |
cancelRestrictions | ENUM | NO | 支持的值: ONLY_NEW - 如果订单状态为 NEW ,撤销将成功。ONLY_PARTIALLY_FILLED - 如果订单状态为 PARTIALLY_FILLED ,撤销将成功。 |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
注意:
orderId
与origClientOrderId
必须至少发送一个。- 当同时提供
orderId
和origClientOrderId
两个参数时,系统首先将会使用orderId
来搜索订单。然后, 查找结果中的origClientOrderId
的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。
数据源: 撮合引擎
响应:
{
"symbol": "LTCBTC",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"origClientOrderId": "myOrder1",
"clientOrderId": "cancelMyOrder1",
"transactTime": 1507725176595,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "8.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "8.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
}
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
- 当仅发送
orderId
时,取消订单的执行(单个 Cancel 或作为 Cancel-Replace 的一部分)总是更快。发送origClientOrderId
或同时发送orderId
+origClientOrderId
会稍慢。
关于 cancelRestrictions
- 如果
cancelRestrictions
值不是任何受支持的值,则错误将是:
{
"code": -1145,
"msg": "Invalid cancelRestrictions"
}
- 如果订单没有通过
cancelRestrictions
的条件,错误将是:
{
"code": -2011,
"msg": "Order was not canceled due to cancel restrictions."
}
撤销单一交易对的所有挂单 (TRADE)
DELETE /api/v3/openOrders
撤销单一交易对下所有挂单。这也包括了来自订单列表的挂单。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
recvWindow | LONG | NO | 不能大于 60000 |
timestamp | LONG | YES |
数据源: 撮合引擎
响应:
[
{
"symbol": "BTCUSDT",
"origClientOrderId": "E6APeyTJvkMvLMYMqu1KQ4",
"orderId": 11,
"orderListId": -1,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350068,
"price": "0.089853",
"origQty": "0.178622",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "A3EF2HCwxgZPFMrfwbgrhv",
"orderId": 13,
"orderListId": -1,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350068,
"price": "0.090430",
"origQty": "0.178622",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE"
},
{
"orderListId": 1929,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "2inzWQdDvZLHbbAmAozX2N",
"transactionTime": 1585230948299,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 20,
"clientOrderId": "CwOOIPHSmYywx6jZX77TdL"
},
{
"symbol": "BTCUSDT",
"orderId": 21,
"clientOrderId": "461cPg51vQjV3zIMOXNz39"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"origClientOrderId": "CwOOIPHSmYywx6jZX77TdL",
"orderId": 20,
"orderListId": 1929,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350068,
"price": "0.668611",
"origQty": "0.690354",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "0.378131",
"icebergQty": "0.017083",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"origClientOrderId": "461cPg51vQjV3zIMOXNz39",
"orderId": 21,
"orderListId": 1929,
"clientOrderId": "pXLV6Hz6mprAcVYpVMTGgx",
"transactTime": 1684804350068,
"price": "0.008791",
"origQty": "0.690354",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"icebergQty": "0.639962",
"selfTradePreventionMode": "NONE"
}
]
}
]
撤消挂单再下单 (TRADE)
POST /api/v3/order/cancelReplace
撤消挂单并在同个交易对上重新下单。
在撤消订单和下单前会判断: 1) 过滤器参数, 以及 2) 目前下单数量。
即使请求中没有尝试发送新订单,比如(newOrderResult: NOT_ATTEMPTED
),下单的数量仍然会加1。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
side | ENUM | YES | |
type | ENUM | YES | |
cancelReplaceMode | ENUM | YES | 指定类型:STOP_ON_FAILURE - 如果撤消订单失败将不会继续重新下单。ALLOW_FAILURE - 不管撤消订单是否成功都会继续重新下单。 |
timeInForce | ENUM | NO | |
quantity | DECIMAL | NO | |
quoteOrderQty | DECIMAL | NO | |
price | DECIMAL | NO | |
cancelNewClientOrderId | STRING | NO | 用户自定义的id,如空缺系统会自动赋值 |
cancelOrigClientOrderId | STRING | NO | 必须提供 cancelOrderId 或者 cancelOrigClientOrderId 。 当同时提供 cancelOrderId 和 cancelOrigClientOrderId 两个参数时,系统首先将会使用 cancelOrderId 来搜索订单。然后, 查找结果中的 cancelOrigClientOrderId 的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。 |
cancelOrderId | LONG | NO | 必须提供 cancelOrderId 或者 cancelOrigClientOrderId 。 当同时提供 cancelOrderId 和 cancelOrigClientOrderId 两个参数时,系统首先将会使用 cancelOrderId 来搜索订单。然后, 查找结果中的 cancelOrigClientOrderId 的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。 |
newClientOrderId | STRING | NO | 用于辨识新订单。 |
strategyId | LONG | NO | |
strategyType | INT | NO | 不能低于 1000000 。 |
stopPrice | DECIMAL | NO | |
trailingDelta | LONG | NO | |
icebergQty | DECIMAL | NO | |
newOrderRespType | ENUM | NO | 指定响应类型: 指定响应类型 ACK , RESULT , or FULL ; MARKET 与 LIMIT 订单默认为FULL , 其他默认为ACK 。 |
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:STP 模式。 |
cancelRestrictions | ENUM | NO | 支持的值: ONLY_NEW - 如果订单状态为 NEW ,撤销将成功。ONLY_PARTIALLY_FILLED - 如果订单状态为 PARTIALLY_FILLED ,撤销将成功。 |
orderRateLimitExceededMode | ENUM | NO | 支持的值: “DO_NOTHING”(默认值)- 仅在账户未超过未成交订单频率限制时,会尝试取消订单。 “CANCEL_ONLY” - 将始终取消订单。 |
recvWindow | LONG | NO | 不能大于 60000 |
timestamp | LONG | YES |
如同 POST /api/v3/order
,额外的强制参数取决于 type
。
响应格式根据消息的处理是成功、部分成功还是失败而有所不同。
数据来源: 撮合引擎
请求 | 响应 | ||||
---|---|---|---|---|---|
cancelReplaceMode |
orderRateLimitExceededMode |
未成交订单数 | cancelResult |
newOrderResult |
status |
STOP_ON_FAILURE |
DO_NOTHING |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
❌ FAILURE |
➖ NOT_ATTEMPTED |
400 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
N/A | ||
❌ FAILURE |
➖ NOT_ATTEMPTED |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
N/A | |||
CANCEL_ONLY |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
|
❌ FAILURE |
➖ NOT_ATTEMPTED |
400 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ❌ FAILURE |
➖ NOT_ATTEMPTED |
429 |
||
✅ SUCCESS |
❌ FAILURE |
429 |
|||
ALLOW_FAILURE |
DO_NOTHING |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
409 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
N/A | ||
❌ FAILURE |
❌ FAILURE |
N/A | |||
❌ FAILURE |
✅ SUCCESS |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
N/A | |||
CANCEL_ONLY |
在限制范围内 | ✅ SUCCESS |
✅ SUCCESS |
200 |
|
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
409 |
|||
✅ SUCCESS |
❌ FAILURE |
409 |
|||
超出限制范围 | ✅ SUCCESS |
✅ SUCCESS |
N/A |
||
❌ FAILURE |
❌ FAILURE |
400 |
|||
❌ FAILURE |
✅ SUCCESS |
N/A | |||
✅ SUCCESS |
❌ FAILURE |
409 |
响应:没有超出未成交订单计数时的 Response SUCCESS
// 撤单和下单都成功
{
"cancelResult": "SUCCESS",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "DnLo3vTAQcjha43lAZhZ0y",
"orderId": 9,
"orderListId": -1,
"clientOrderId": "osxN3JXAtJvKvCqGeMWMVR",
"transactTime": 1684804350068,
"price": "0.01000000",
"origQty": "0.000100",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL"
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 10,
"orderListId": -1,
"clientOrderId": "wOceeeOzNORyLiQfw7jd8S",
"transactTime": 1652928801803,
"price": "0.02000000",
"origQty": "0.040000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"fills": []
}
}
响应:选择了 STOP_ON_FAILURE
而且账户没有超出未成交订单计数时, 撤单出现错误
{
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "NOT_ATTEMPTED",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": null
}
}
响应:撤单成功而且账户没有超出未成交订单计数时,下单失败
{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "86M8erehfExV8z2RC8Zo8k",
"orderId": 3,
"orderListId": -1,
"clientOrderId": "G1kLo6aDv2KGNTFcjfTSFq",
"price": "0.006123",
"origQty": "10000.000000",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL"
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
}
响应:选择 ALLOW_FAILURE
而且账户没有超出未成交订单计数时, 撤单出现错误
{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 11,
"orderListId": -1,
"clientOrderId": "pfojJMg6IMNDKuJqDxvoxN",
"transactTime": 1648540168818
}
}
}
响应:选择 cancelReplaceMode=ALLOW_FAILURE
而且账户没有超出未成交订单计数时, 撤单和下单失败
{
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "FAILURE",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
}
响应:选择 orderRateLimitExceededMode=DO_NOTHING
而且账户超出未成交订单计数时
{
"code": -1015,
"msg": "Too many new orders; current limit is 1 orders per 10 SECOND."
}
响应:选择 orderRateLimitExceededMode=CANCEL_ONLY
而且账户超出未成交订单计数时
{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "LTCBNB",
"origClientOrderId": "GKt5zzfOxRDSQLveDYCTkc",
"orderId": 64,
"orderListId": -1,
"clientOrderId": "loehOJF3FjoreUBDmv739R",
"transactTime": 1715779007228,
"price": "1.00",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -1015,
"msg": "Too many new orders; current limit is 1 orders per 10 SECOND."
}
}
}
注意:
- 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
- 当仅发送
orderId
时,取消订单的执行(单个 Cancel 或作为 Cancel-Replace 的一部分)总是更快。发送origClientOrderId
或同时发送orderId
+origClientOrderId
会稍慢。
修改订单并保留优先级 (TRADE)
PUT /api/v3/order/amend/keepPriority
由客户发送以减少其现有当前订单的原始数量。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
orderId | LONG | NO* | 需提供 orderId 或 origClientOrderId 。 |
origClientOrderId | STRING | NO* | 需提供 orderId 或 origClientOrderId 。 |
newClientOrderId | STRING | NO* | 订单在被修改后被赋予的新 client order ID。 如果未发送则自动生成。 可以将当前 clientOrderId 作为 newClientOrderId 发送来重用当前 clientOrderId 的值。 |
newQty | DECIMAL | YES | 交易的新数量。 newQty 必须大于0, 但是必须比订单的原始数量小。 |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
数据源: 撮合引擎
来自单个订单的响应:
{
"transactTime": 1741926410255,
"executionId": 75,
"amendedOrder":
{
"symbol": "BTCUSDT",
"orderId": 33,
"orderListId": -1,
"origClientOrderId": "5xrgbMyg6z36NzBn2pbT8H",
"clientOrderId": "PFaq6hIHxqFENGfdtn4J6Q",
"price": "6.00000000",
"qty": "5.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1741926410242,
"selfTradePreventionMode": "NONE"
}
}
来自订单列表中单个订单的响应:
{
"transactTime": 1741669661670,
"executionId": 22,
"amendedOrder":
{
"symbol": "BTCUSDT",
"orderId": 9,
"orderListId": 1,
"origClientOrderId": "W0fJ9fiLKHOJutovPK3oJp",
"clientOrderId": "UQ1Np3bmQ71jJzsSDW9Vpi",
"price": "0.00000000",
"qty": "4.00000000",
"executedQty": "0.00000000",
"preventedQty": "0.00000000",
"quoteOrderQty": "0.00000000",
"cumulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "BUY",
"selfTradePreventionMode": "NONE"
},
"listStatus":
{
"orderListId": 1,
"contingencyType": "OTO",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "AT7FTxZXylVSwRoZs52mt3",
"symbol": "BTCUSDT",
"orders":
[
{
"symbol": "BTCUSDT",
"orderId": 8,
"clientOrderId": "GkwwHZUUbFtZOoH1YsZk9Q"
},
{
"symbol": "BTCUSDT",
"orderId": 9,
"clientOrderId": "UQ1Np3bmQ71jJzsSDW9Vpi"
}
]
}
}
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
查看账户当前挂单 (USER_DATA)
GET /api/v3/openOrders
请小心使用不带symbol参数的调用
权重: 带symbol: 6 不带: 80
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | NO | |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
- 不带symbol参数,会返回所有交易对的挂单
数据源: 缓存 => 数据库
响应:
[
{
"symbol": "LTCBTC",
"orderId": 1,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "myOrder1",
"price": "0.1",
"origQty": "1.0",
"executedQty": "0.0",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.0",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.0",
"icebergQty": "0.0",
"time": 1499827319559,
"updateTime": 1499827319559,
"isWorking": true,
"origQuoteOrderQty": "0.000000",
"workingTime": 1499827319559,
"selfTradePreventionMode": "NONE"
}
]
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
查询所有订单(包括历史订单) (USER_DATA)
GET /api/v3/allOrders
权重: 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
orderId | LONG | NO | 只返回此orderID之后的订单,缺省返回最近的订单 |
startTime | LONG | NO | |
endTime | LONG | NO | |
limit | INT | NO | 默认值: 500; 最大值: 1000 |
recvWindow | LONG | NO | |
timestamp | LONG | YES |
注意:
- 如设置
orderId
, 订单量将 >=orderId
。否则将返回最新订单。 - 一些历史订单
cummulativeQuoteQty
< 0, 是指数据此时不存在。 - 如果设置
startTime
和endTime
,orderId
就不需要设置。 startTime
和endTime
之间的时间不能超过 24 小时。
数据源: 数据库
响应:
[
{
"symbol": "LTCBTC",
"orderId": 1,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "myOrder1",
"price": "0.1",
"origQty": "1.0",
"executedQty": "0.0",
"origQuoteOrderQty": "0.0",
"cummulativeQuoteQty": "0.0",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.0",
"icebergQty": "0.0",
"time": 1499827319559,
"updateTime": 1499827319559,
"isWorking": true,
"origQuoteOrderQty": "0.000000",
"workingTime": 1499827319559,
"selfTradePreventionMode": "NONE"
}
]
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
订单列表(Order lists)
发送新 OCO 订单 - 已弃用 (TRADE)
POST /api/v3/order/oco
权重: 1
发送新的 OCO。
- 价格限制:
SELL
: Limit price > 最后交易价格 > stop PriceBUY
: Limit price < 最后交易价格 < stop Price
- 数量限制:
- 两条腿的数量必须相同。
- 不过,
冰山
交易的数量不一定相同
OCO
将2个订单添加到未成交的订单计数,EXCHANGE_MAX_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器中。
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | 整个orderList的唯一ID |
side | ENUM | YES | 详见枚举定义:订单方向 |
quantity | DECIMAL | YES | |
limitClientOrderId | STRING | NO | 限价单的唯一ID |
price | DECIMAL | YES | |
limitStrategyId | LONG | NO | |
limitStrategyType | INT | NO | 不能低于 1000000 |
limitIcebergQty | DECIMAL | NO | |
trailingDelta | LONG | NO | |
stopClientOrderId | STRING | NO | 止损/止损限价单的唯一ID |
stopPrice | DECIMAL | YES | |
stopStrategyId | LONG | NO | |
stopStrategyType | INT | NO | 不能低于 1000000 |
stopLimitPrice | DECIMAL | NO | 如果提供,须配合提交stopLimitTimeInForce |
stopIcebergQty | DECIMAL | NO | |
stopLimitTimeInForce | ENUM | NO | 有效值 GTC /FOK /IOC |
newOrderRespType | ENUM | NO | 详见枚举定义:订单返回类型 |
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:STP 模式。 |
recvWindow | LONG | NO | 不能大于 60000 |
timestamp | LONG | YES |
数据源: 撮合引擎
响应
{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "JYVpp3F0f5CAG15DhtrqLp",
"transactionTime": 1563417480525,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 2,
"clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"clientOrderId": "xTXKaGYd4bluPVp78IVRvl"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "Kk7sqHb9J6mJWTMDVW7Vos",
"transactTime": 1563417480525,
"price": "0.000000",
"origQty": "0.624363",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS",
"side": "BUY",
"stopPrice": "0.960664",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "xTXKaGYd4bluPVp78IVRvl",
"transactTime": 1563417480525,
"price": "0.036435",
"origQty": "0.624363",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": 1563417480525,
"selfTradePreventionMode": "NONE"
}
]
}
New Order list - OCO (TRADE)
POST /api/v3/orderList/oco
发送新 one-cancels-the-other (OCO) 订单,激活其中一个订单会立即取消另一个订单。
- OCO 包含了两个订单,分别被称为 上方订单 和 下方订单。
- 其中一个订单必须是
LIMIT_MAKER/TAKE_PROFIT/TAKE_PROFIT_LIMIT
订单,另一个订单必须是STOP_LOSS
或STOP_LOSS_LIMIT
订单。 - 针对价格限制:
- 如果 OCO 订单方向是
SELL
:LIMIT_MAKER/TAKE_PROFIT_LIMIT
price
> 最后交易价格 >STOP_LOSS/STOP_LOSS_LIMIT
stopPrice
TAKE_PROFIT
stopPrice
> 最后交易价格 >STOP_LOSS/STOP_LOSS_LIMIT
stopPrice
- 如果 OCO 订单方向是
BUY
:LIMIT_MAKER/TAKE_PROFIT_LIMIT
price
< 最后交易价格 <stopPrice
TAKE_PROFIT
stopPrice
< 最后交易价格 <STOP_LOSS/STOP_LOSS_LIMIT
stopPrice
- 如果 OCO 订单方向是
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | Yes | |
listClientOrderId | STRING | No | 整个 OCO order list 的唯一ID。 如果未发送则自动生成。 仅当前一个订单已填满或完全过期时,才会接受具有相同的 listClientOrderId 。 listClientOrderId 与 aboveClientOrderId 和 belowCLientOrderId 不同。 |
side | ENUM | Yes | 订单方向:BUY or SELL |
quantity | DECIMAL | Yes | 两个订单的数量。 |
aboveType | ENUM | Yes | 支持值:STOP_LOSS_LIMIT , STOP_LOSS , LIMIT_MAKER , TAKE_PROFIT , TAKE_PROFIT_LIMIT 。 |
aboveClientOrderId | STRING | No | 上方订单的唯一ID。 如果未发送则自动生成。 |
aboveIcebergQty | LONG | No | 请注意,只有当 aboveTimeInForce 为 GTC 时才能使用。 |
abovePrice | DECIMAL | No | 当 aboveType 是 STOP_LOSS_LIMIT , LIMIT_MAKER 或 TAKE_PROFIT_LIMIT 时,可用以指定限价。 |
aboveStopPrice | DECIMAL | No | 如果 aboveType 是 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT 或 TAKE_PROFIT_LIMIT 才能使用。必须指定 aboveStopPrice 或 aboveTrailingDelta 或两者。 |
aboveTrailingDelta | LONG | No | 请看 追踪止盈止损(Trailing Stop)订单常见问题。 |
aboveTimeInForce | DECIMAL | No | 如果 aboveType 是 STOP_LOSS_LIMIT 或 TAKE_PROFIT_LIMIT ,则为必填项。 |
aboveStrategyId | LONG | No | 订单策略中上方订单的 ID。 |
aboveStrategyType | INT | No | 上方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
belowType | ENUM | Yes | 支持值:STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT ,TAKE_PROFIT_LIMIT 。 |
belowClientOrderId | STRING | No | |
belowIcebergQty | LONG | No | 请注意,只有当 belowTimeInForce 为 GTC 时才能使用。 |
belowPrice | DECIMAL | No | 当 belowType 是 STOP_LOSS_LIMIT , LIMIT_MAKER 或 TAKE_PROFIT_LIMIT 时,可用以指定限价。 |
belowStopPrice | DECIMAL | No | 如果 belowType 是 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT 或 TAKE_PROFIT_LIMIT 才能使用。必须指定 belowStopPrice 或 belowTrailingDelta 或两者。 |
belowTrailingDelta | LONG | No | 请看 追踪止盈止损(Trailing Stop)订单常见问题。 |
belowTimeInForce | ENUM | No | 如果belowType 是 STOP_LOSS_LIMIT 或 TAKE_PROFIT_LIMIT ,则为必须配合提交的值。 |
belowStrategyId | LONG | No | 订单策略中下方订单的 ID。 |
belowStrategyType | INT | No | 下方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
newOrderRespType | ENUM | No | 响应格式可选值: ACK , RESULT , FULL 。 |
selfTradePreventionMode | ENUM | No | 允许的 ENUM 取决于交易对上的配置。 支持值:STP 模式。 |
recvWindow | LONG | No | 不能大于 60000 。 |
timestamp | LONG | Yes |
数据源: 撮合引擎
响应:
使用 newOrderRespType
参数来选择 orderReports
的响应格式。以下示例适用于 RESULT
响应类型。 请参阅 POST /api/v3/order
了解更多 orderReports
的响应类型。
{
"orderListId": 1,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "lH1YDkuQKWiXVXHPSKYEIp",
"transactionTime": 1710485608839,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 10,
"clientOrderId": "44nZvqpemY7sVYgPYbvPih"
},
{
"symbol": "LTCBTC",
"orderId": 11,
"clientOrderId": "NuMp0nVYnciDiFmVqfpBqK"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 10,
"orderListId": 1,
"clientOrderId": "44nZvqpemY7sVYgPYbvPih",
"transactTime": 1710485608839,
"price": "1.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "1.00000000",
"workingTime": -1,
"icebergQty": "1.00000000",
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 11,
"orderListId": 1,
"clientOrderId": "NuMp0nVYnciDiFmVqfpBqK",
"transactTime": 1710485608839,
"price": "3.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": 1710485608839,
"selfTradePreventionMode": "NONE"
}
]
}
New Order List - OTO (TRADE)
POST /api/v3/orderList/oto
发送一个新的 OTO 订单。
- 一个 OTO 订单(One-Triggers-the-Other)是一个包含了两个订单的订单列表.
- 第一个订单被称为生效订单,必须为
LIMIT
或LIMIT_MAKER
类型的订单。最初,订单簿上只有生效订单。 - 第二个订单被称为待处理订单。它可以是任何订单类型,但不包括使用参数
quoteOrderQty
的MARKET
订单。只有当生效订单完全成交时,待处理订单才会被自动下单。 - 如果生效订单或者待处理订单中的任意一个被单独取消,订单列表中剩余的那个订单也会被随之取消或过期。
- 如果生效订单在下订单列表后立即完全成交,则可能会得到订单响应。其中,生效订单的状态为
FILLED
,但待处理订单的状态为PENDING_NEW
。针对这类情况,如果需要检查当前状态,您可以查询相关的待处理订单。 OTO
订单将2 个订单添加到未成交订单计数,EXCHANGE_MAX_NUM_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器中。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 listClientOrderId 值的新订单列表。 listClientOrderId 与 workingClientOrderId 和 pendingClientOrderId 不同。 |
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: 订单返回类型 |
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。参考 STP 模式 |
workingType | ENUM | YES | 支持的数值: LIMIT , LIMIT_MAKER |
workingSide | ENUM | YES | 支持的数值: 订单方向 |
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。 |
workingPrice | DECIMAL | YES | |
workingQuantity | DECIMAL | YES | 用于设置生效订单的数量。 |
workingIcebergQty | DECIMAL | NO | 只有当 workingTimeInForce 为 GTC 时才能使用。 |
workingTimeInForce | ENUM | NO | 支持的数值: 生效时间 |
workingStrategyId | LONG | NO | 订单策略中用于标识生效订单的 ID。 |
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingType | ENUM | YES | 支持的数值: 订单类型 请注意,系统不支持使用 quoteOrderQty 的 MARKET 订单。 |
pendingSide | ENUM | YES | 支持的数值: 订单方向 |
pendingClientOrderId | STRING | NO | 用于标识待处理订单的唯一ID。 如果未发送则自动生成。 |
pendingPrice | DECIMAL | NO | |
pendingStopPrice | DECIMAL | NO | |
pendingTrailingDelta | DECIMAL | NO | |
pendingQuantity | DECIMAL | YES | 用于设置待处理订单的数量。 |
pendingIcebergQty | DECIMAL | NO | 只有当 pendingTimeInForce 为 GTC 或者当 pendingType 为 LIMIT_MAKER 时才能使用。 |
pendingTimeInForce | ENUM | NO | 支持的数值: 生效时间 |
pendingStrategyId | LONG | NO | 订单策略中用于标识待处理订单的 ID。 |
pendingStrategyType | INT | NO | 用于标识待处理订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
recvWindow | LONG | NO | 不能大于 60000 。 |
timestamp | LONG | YES |
根据 pendingType
或者 workingType
的不同值,对于某些参数的强制要求
根据 pendingType
或者workingType
的不同值,对于某些可选参数有强制要求,具体如下:
类型 | 强制要求的参数 | 其他信息 |
---|---|---|
workingType = LIMIT | workingTimeInForce | |
pendingType = LIMIT | pendingPrice , pendingTimeInForce | |
pendingType = STOP_LOSS 或 TAKE_PROFIT | pendingStopPrice 与/或 pendingTrailingDelta | |
pendingType = STOP_LOSS_LIMIT 或 TAKE_PROFIT_LIMIT | pendingPrice , pendingStopPrice 与/或 pendingTrailingDelta , pendingTimeInForce |
数据源: 撮合引擎
响应:
{
"orderListId": 0,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "yl2ERtcar1o25zcWtqVBTC",
"transactionTime": 1712289389158,
"symbol": "ABCDEF",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 4,
"clientOrderId": "Bq17mn9fP6vyCn75Jw1xya"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"clientOrderId": "arLFo0zGJVDE69cvGBaU0d"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 4,
"orderListId": 0,
"clientOrderId": "Bq17mn9fP6vyCn75Jw1xya",
"transactTime": 1712289389158,
"price": "1.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1712289389158,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"orderListId": 0,
"clientOrderId": "arLFo0zGJVDE69cvGBaU0d",
"transactTime": 1712289389158,
"price": "0.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "BUY",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
New Order List - OTOCO (TRADE)
POST /api/v3/orderList/otoco
发送一个新的 OTOCO 订单。
- 一个 OTOCO 订单(One-Triggers-One-Cancels-the-Other)是一个包含了三个订单的订单列表。
- 第一个订单被称为生效订单,必须为
LIMIT
或LIMIT_MAKER
类型的订单。最初,订单簿上只有生效订单。- 生效订单的行为与此一致 OTO
- 一个OTOCO订单有两个待处理订单(pending above 和 pending below),它们构成了一个 OCO 订单列表。只有当生效订单完全成交时,待处理订单们才会被自动下单。
- 待处理上方(pending above)订单和待处理下方(pending below)订单都遵循与 OCO 订单列表相同的规则 Order List OCO。
OTOCO
在未成交订单计数,EXCHANGE_MAX_NUM_ORDERS
过滤器和MAX_NUM_ORDERS
过滤器的基础上添加3个订单。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 listClientOrderId 值的新订单列表。 listClientOrderId 与 workingClientOrderId , pendingAboveClientOrderId 以及 pendingBelowClientOrderId 不同。 |
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: 订单返回类型 |
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。参考 STP 模式 |
workingType | ENUM | YES | 支持的数值: LIMIT , LIMIT_MAKER |
workingSide | ENUM | YES | 支持的数值: 订单方向 |
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。 |
workingPrice | DECIMAL | YES | |
workingQuantity | DECIMAL | YES | |
workingIcebergQty | DECIMAL | NO | 只有当 workingTimeInForce 为 GTC 时才能使用。 |
workingTimeInForce | ENUM | NO | 支持的数值: 生效时间 |
workingStrategyId | LONG | NO | 订单策略中用于标识生效订单的 ID。 |
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingSide | ENUM | YES | 支持的数值: 订单方向 |
pendingQuantity | DECIMAL | YES | |
pendingAboveType | ENUM | YES | 支持的数值: STOP_LOSS_LIMIT , STOP_LOSS , LIMIT_MAKER , TAKE_PROFIT , TAKE_PROFIT_LIMIT |
pendingAboveClientOrderId | STRING | NO | 用于标识待处理上方订单的唯一ID。 如果未发送则自动生成。 |
pendingAbovePrice | DECIMAL | NO | 当 pendingAboveType 是 STOP_LOSS_LIMIT , LIMIT_MAKER 或 TAKE_PROFIT_LIMIT 时,可用以指定限价。 |
pendingAboveStopPrice | DECIMAL | NO | 如果 pendingAboveType 是 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , TAKE_PROFIT_LIMIT 才能使用。 |
pendingAboveTrailingDelta | DECIMAL | NO | 参见 追踪止盈止损(Trailing Stop)订单常见问题 |
pendingAboveIcebergQty | DECIMAL | NO | 只有当 pendingAboveTimeInForce 为 GTC 时才能使用。 |
pendingAboveTimeInForce | ENUM | NO | |
pendingAboveStrategyId | LONG | NO | 订单策略中用于标识待处理上方订单的 ID。 |
pendingAboveStrategyType | INT | NO | 用于标识待处理上方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
pendingBelowType | ENUM | NO | 支持的数值: STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , TAKE_PROFIT_LIMIT |
pendingBelowClientOrderId | STRING | NO | 用于标识待处理下方订单的唯一ID。 如果未发送则自动生成。 |
pendingBelowPrice | DECIMAL | NO | 当 pendingBelowType 是 STOP_LOSS_LIMIT 或 TAKE_PROFIT_LIMIT 时,可用以指定限价。 |
pendingBelowStopPrice | DECIMAL | NO | 如果 pendingBelowType 是 STOP_LOSS , STOP_LOSS_LIMIT , TAKE_PROFIT , TAKE_PROFIT_LIMIT 才能使用。必须指定 pendingBelowStopPrice 或 pendingBelowTrailingDelta 或两者。 |
pendingBelowTrailingDelta | DECIMAL | NO | |
pendingBelowIcebergQty | DECIMAL | NO | 只有当 pendingBelowTimeInForce 为 GTC 时才能使用。 |
pendingBelowTimeInForce | ENUM | NO | |
pendingBelowStrategyId | LONG | NO | 订单策略中用于标识待处理下方订单的 ID。 |
pendingBelowStrategyType | INT | NO | 用于标识待处理下方订单策略的任意数值。 小于 1000000 的值被保留,无法使用。 |
recvWindow | LONG | NO | 不能大于 60000 。 |
timestamp | LONG | YES |
根据 pendingAboveType
, pendingBelowType
或者workingType
的不同值,对于某些参数的强制要求
根据 pendingAboveType
, pendingBelowType
或者workingType
的不同值,对于某些可选参数有强制要求,具体如下:
类型 | 强制要求的参数 | 其他信息 |
---|---|---|
workingType = LIMIT | workingTimeInForce | |
pendingAboveType = LIMIT_MAKER | pendingAbovePrice | |
pendingAboveType = STOP_LOSS/TAKE_PROFIT | pendingAboveStopPrice 与/或 pendingAboveTrailingDelta | |
pendingAboveType = STOP_LOSS_LIMIT/TAKE_PROFIT_LIMIT | pendingAbovePrice , pendingAboveStopPrice 与/或 pendingAboveTrailingDelta , pendingAboveTimeInForce | |
pendingBelowType = LIMIT_MAKER | pendingBelowPrice | |
pendingBelowType = STOP_LOSS/TAKE_PROFIT | pendingBelowStopPrice 与/或 pendingBelowTrailingDelta | |
pendingBelowType = STOP_LOSS_LIMIT/TAKE_PROFIT_LIMIT | pendingBelowPrice , pendingBelowStopPrice 与/或 pendingBelowTrailingDelta , pendingBelowTimeInForce |
数据源: 撮合引擎
响应:
{
"orderListId": 1,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "RumwQpBaDctlUu5jyG5rs0",
"transactionTime": 1712291372842,
"symbol": "ABCDEF",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 6,
"clientOrderId": "fM9Y4m23IFJVCQmIrlUmMK"
},
{
"symbol": "LTCBTC",
"orderId": 7,
"clientOrderId": "6pcQbFIzTXGZQ1e2MkGDq4"
},
{
"symbol": "LTCBTC",
"orderId": 8,
"clientOrderId": "r4JMv9cwAYYUwwBZfbussx"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"orderId": 6,
"orderListId": 1,
"clientOrderId": "fM9Y4m23IFJVCQmIrlUmMK",
"transactTime": 1712291372842,
"price": "1.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "SELL",
"workingTime": 1712291372842,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 7,
"orderListId": 1,
"clientOrderId": "6pcQbFIzTXGZQ1e2MkGDq4",
"transactTime": 1712291372842,
"price": "1.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "IOC",
"type": "STOP_LOSS_LIMIT",
"side": "BUY",
"stopPrice": "6.00000000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "LTCBTC",
"orderId": 8,
"orderListId": 1,
"clientOrderId": "r4JMv9cwAYYUwwBZfbussx",
"transactTime": 1712291372842,
"price": "3.00000000",
"origQty": "5.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "BUY",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}
注意: 上面的 payload 没有显示所有可以出现的字段,更多请看 订单响应中的特定条件时才会出现的字段 部分。
取消订单列表 (TRADE)
DELETE /api/v3/orderList
取消整个订单列表。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
orderListId | LONG | NO | orderListId 或 listClientOrderId 必须被提供 |
listClientOrderId | STRING | NO | orderListId 或 listClientOrderId 必须被提供 |
newClientOrderId | STRING | NO | 用户自定义的本次撤销操作的ID(注意不是被撤销的订单的自定义ID)。如无指定会自动赋值。 |
recvWindow | LONG | NO | 不能大于 60000 |
timestamp | LONG | YES |
其他注意点:
- 取消订单列表中的单个订单将取消整个订单列表.
- 当同时提供
orderListId
和listClientOrderId
两个参数时,系统首先将会使用orderListId
来搜索订单。然后, 查找结果中的listClientOrderId
的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。
数据源: 撮合引擎
响应:
{
"orderListId": 0,
"contingencyType": "OCO",
"listStatusType": "ALL_DONE",
"listOrderStatus": "ALL_DONE",
"listClientOrderId": "C3wyj4WVEktd7u9aVBRXcN",
"transactionTime": 1574040868128,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 2,
"clientOrderId": "pO9ufTiFGg3nw2fOdgeOXa"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"clientOrderId": "TXOvglzXuaubXAaENpaRCB"
}
],
"orderReports": [
{
"symbol": "LTCBTC",
"origClientOrderId": "pO9ufTiFGg3nw2fOdgeOXa",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "unfWT8ig8i0uj6lPuYLez6",
"transactTime": 1688005070874,
"price": "1.00000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "1.00000000"
},
{
"symbol": "LTCBTC",
"origClientOrderId": "TXOvglzXuaubXAaENpaRCB",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "unfWT8ig8i0uj6lPuYLez6",
"transactTime": 1688005070874,
"price": "3.00000000",
"origQty": "10.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL"
}
]
}
查询订单列表 (USER_DATA)
GET /api/v3/orderList
根据提供的可选参数检索特定的订单列表。
权重: 4
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
orderListId | LONG | NO | orderListId 或 origClientOrderId 必须提供一个。 |
origClientOrderId | STRING | NO | orderListId 或 origClientOrderId 必须提供一个。 |
recvWindow | LONG | NO | 赋值不得大于 60000 |
timestamp | LONG | YES |
数据源: 数据库
响应:
{
"orderListId": 27,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "h2USkA5YQpaXHPIrkd96xE",
"transactionTime": 1565245656253,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 4,
"clientOrderId": "qD1gy3kc3Gx0rihm9Y3xwS"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"clientOrderId": "ARzZ9I00CPM8i3NhmU9Ega"
}
]
}
查询所有订单列表 (USER_DATA)
GET /api/v3/allOrderList
根据提供的可选参数检索所有的订单列表。
请注意,startTime
和endTime
之间的时间不能超过 24 小时。
权重: 20
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
fromId | LONG | NO | 提供该项后, startTime 和 endTime 都不可提供 |
startTime | LONG | NO | |
endTime | LONG | NO | |
limit | INT | NO | 默认值: 500; 最大值: 1000 |
recvWindow | LONG | NO | 赋值不能超过 60000 |
timestamp | LONG | YES |
数据源: 数据库
响应:
[
{
"orderListId": 29,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "amEEAXryFzFwYF1FeRpUoZ",
"transactionTime": 1565245913483,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 4,
"clientOrderId": "oD7aesZqjEGlZrbtRpy5zB"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"clientOrderId": "Jr1h6xirOxgeJOUuYQS7V3"
}
]
},
{
"orderListId": 28,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "hG7hFNxJV6cZy3Ze4AUT4d",
"transactionTime": 1565245913407,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 2,
"clientOrderId": "j6lFOfbmFMRjTYA7rRJ0LP"
},
{
"symbol": "LTCBTC",
"orderId": 3,
"clientOrderId": "z0KCjOdditiLS5ekAFtK81"
}
]
}
]
查询订单列表挂单 (USER_DATA)
GET /api/v3/openOrderList
权重: 6
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
recvWindow | LONG | NO | 赋值不能大于 60000 |
timestamp | LONG | YES |
数据源: 数据库
响应:
[
{
"orderListId": 31,
"contingencyType": "OCO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "wuB13fmulKj3YjdqWEcsnp",
"transactionTime": 1565246080644,
"symbol": "LTCBTC",
"orders": [
{
"symbol": "LTCBTC",
"orderId": 4,
"clientOrderId": "r3EH2N76dHfLoSZWIUw1bT"
},
{
"symbol": "LTCBTC",
"orderId": 5,
"clientOrderId": "Cv1SnyPD3qhqpbjpYEHbd2"
}
]
}
]
SOR
下 SOR 订单 (TRADE)
POST /api/v3/sor/order
发送使用智能订单路由 (SOR) 的新订单。
权重: 1
参数:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
symbol | STRING | YES | |
side | ENUM | YES | |
type | ENUM | YES | |
timeInForce | ENUM | NO | |
quantity | DECIMAL | YES | |
price | DECIMAL | NO | |
newClientOrderId | STRING | NO | 用户自定义的orderid,如空缺系统会自动赋值。如果几个订单具有相同的 newClientOrderID 赋值,那么只有在前一个订单成交后才可以接受下一个订单,否则该订单将被拒绝。 |
strategyId | LONG | NO | |
strategyType | INT | NO | 赋值不能小于 1000000 . |
icebergQty | DECIMAL | NO | 仅有限价单可以使用该参数,含义为创建冰山订单并指定冰山订单的数量。 |
newOrderRespType | ENUM | NO | 指定响应类型: |
指定响应类型 ACK , RESULT 或 FULL ; 默认为 FULL 。 | |||
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:STP 模式。 |
recvWindow | LONG | NO | 赋值不能大于 60000 |
timestamp | LONG | YES |
请注意: POST /api/v3/sor/order
只支持 限价
和 市场
单, 并不支持 quoteOrderQty
。
数据源: 撮合引擎
响应:
{
"symbol": "BTCUSDT",
"orderId": 2,
"orderListId": -1,
"clientOrderId": "sBI1KM6nNtOfj5tccZSKly",
"transactTime": 1689149087774,
"price": "31000.00000000",
"origQty": "0.50000000",
"executedQty": "0.50000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "14000.00000000",
"status": "FILLED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1689149087774,
"fills": [
{
"matchType": "ONE_PARTY_TRADE_REPORT",
"price": "28000.00000000",
"qty": "0.50000000",
"commission": "0.00000000",
"commissionAsset": "BTC",
"tradeId": -1,
"allocId": 0
}
],
"workingFloor": "SOR",
"selfTradePreventionMode": "NONE",
"usedSor": true
}
测试 SOR 下单接口 (TRADE)
POST /api/v3/sor/order/test
用于测试使用智能订单路由 (SOR) 的订单请求,但不会提交到撮合引擎
权重:
条件 | 请求权重 |
---|---|
没有 computeCommissionRates | 1 |
有 computeCommissionRates | 20 |
参数:
除了 POST /api/v3/sor/order
所有参数,
如下参数也接受:
参数名 | 类型 | 是否必需 | 描述 |
---|---|---|---|
computeCommissionRates | BOOLEAN | NO | 默认值: false |
数据源: 缓存
响应:
没有 computeCommissionRates
{}
有 computeCommissionRates
{
"standardCommissionForOrder": { // 订单交易的标准佣金率。
"maker": "0.00000112",
"taker": "0.00000114",
},
"taxCommissionForOrder": { // 订单交易的税率。
"maker": "0.00000112",
"taker": "0.00000114",
},
"discount": { // 以BNB支付时的标准佣金折扣。
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000" // 当用BNB支付佣金时,在标准佣金上按此比率打折。
}
}