# REST行情与交易接口
## API 基本信息
- 本篇列出接口的 base URL 有:
- **https://api.binance.com**
- **https://api-gcp.binance.com**
- **https://api1.binance.com**
- **https://api2.binance.com**
- **https://api3.binance.com**
- **https://api4.binance.com**
- 上述列表的最后4个接口 (`api1`-`api4`) 会提供更好的性能,但其稳定性略为逊色。因此,请务必使用最适合的URL。
- 响应默认为 JSON 格式。如果您想接收 SBE 格式的响应,请参考
[简单二进制编码 (SBE) 常见问题](faqs/sbe_faq_CN.md)。
- 除非另有说明,否则数据将按**时间顺序**返回。
- 如果未指定 `startTime` 或 `endTime`,则返回最近的条目,直至达到限制值。
- 如果指定 `startTime`,则返回从 `startTime` 到限制值为止最老的条目。
- 如果指定 `endTime`,则返回截至 `endTime` 和限制值为止最近的条目。
- 如果同时指定 `startTime` 和 `endTime`,则行为类似于 `startTime`,但不超过 `endTime`。
- JSON 响应中的所有时间和时间戳相关字段均以**毫秒为默认单位**。要以微秒为单位接收信息,请添加报文头
`X-MBX-TIME-UNIT:MICROSECOND` 或 `X-MBX-TIME-UNIT:microsecond`。
- 我们支持 HMAC,RSA 以及 Ed25519 Key 类型。 如需进一步了解,请参考
[API Key 类型](faqs/api_key_types_CN.md)。
- 时间戳参数(例如 `startTime`、`endTime`、`timestamp`)可以以毫秒或微秒为单位传递。
- 对于仅发送公开市场数据的 API,您可以使用接口的 base URL https://data-api.binance.vision 。请参考
[Market Data Only](faqs/market_data_only_CN.md) 页面。
- 如需进一步了解枚举或术语,请参考 [现货交易API术语表](faqs/spot_glossary_CN.md) 页面。
- API 处理请求的超时时间为 10 秒。如果撮合引擎的响应时间超过此时间,API 将返回 “Timeout waiting for
response from backend server. Send status unknown; execution status
unknown.”。[(-1007 超时)](errors_CN.md#-1007-timeout)
- 这并不总是意味着该请求在撮合引擎中失败。
- 如果请求状态未显示在 [用户数据流](user-data-stream_CN.md)
中,请执行 API 查询以获取其状态。
- **请避免在请求中使用 SQL 关键字**,因为这可能会触发 Web 应用防火墙(WAF)规则导致安全拦截。详情请参见
https://www.binance.com/zh-CN/support/faq/detail/360004492232
- 如果您的请求包含非 ASCII 字符的交易对名称,那么响应中可能会包含以 UTF-8 编码的非 ASCII 字符。
- 即使请求中不包含非 ASCII 字符,某些接口也可能返回包含以 UTF-8 编码的非 ASCII 字符的资产和/或交易对名称。
## HTTP 返回代码
- HTTP `4XX` 错误码用于指示错误的请求内容、行为、格式。问题在于请求者。
- HTTP `403` 错误码表示违反WAF限制(Web应用程序防火墙)。详情请参见
https://www.binance.com/zh-CN/support/faq/detail/360004492232 。
- HTTP `409` 错误码表示重新下单(cancelReplace)的请求部分成功。(比如取消订单失败,但是下单成功了)
- HTTP `429` 错误码表示警告访问频次超限,即将被封IP。
- HTTP `418` 表示收到429后继续访问,于是被封了。
- HTTP `5XX` 错误码用于指示Binance服务侧的问题。
## 接口错误代码
- 每个接口都有可能抛出异常,异常响应格式如下:
```javascript
{
"code": -1121,
"msg": "Invalid symbol."
}
```
- 具体的错误码及其解释在[错误代码汇总](errors_CN.md)
## 接口的基本信息
- `GET` 方法的接口, 参数必须在 `query string`中发送。
- `POST`, `PUT`, 和 `DELETE` 方法的接口,参数可以在内容形式为`application/x-www-form-urlencoded`的
`query string` 中发送,也可以在 `request body` 中发送。 如果你喜欢,也可以混合这两种方式发送参数。
- 对参数的顺序不做要求。
- 但如果同一个参数名在`query string`和`request body`中都有,`query string`中的会被优先采用。
## 订单响应中的特定条件时才会出现的字段
订单响应中的有一些字段仅在满足特定条件时才会出现。这些订单响应可以来自下订单,查询订单或取消订单,并且可以包括订单列表类型。下面列出了这些字段:
| 名称 | 描述 | 显示的条件 | 示例 |
| ------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------ |
| `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"` |
| `pegPriceType` | 挂钩价格类型 | 仅用于挂钩订单 | `"pegPriceType": "PRIMARY_PEG"` |
| `pegOffsetType` | 挂钩价格偏移类型 | 如若需要,仅用于挂钩订单 | `"pegOffsetType": "PRICE_LEVEL"` |
| `pegOffsetValue` | 挂钩价格偏移值 | 如若需要,仅用于挂钩订单 | `"pegOffsetValue": 5` |
| `peggedPrice` | 订单对应的当前挂钩价格 | 一旦确定,仅用于挂钩订单 | `"peggedPrice": "87523.83710000"` |
| `expiryReason` | 订单失效原因 | 当订单失效时 | `"expiryReason": "INSUFFICIENT_LIQUIDITY"` |
## 访问限制
### 访问限制基本信息
- 以下是 `intervalLetter` 作为头部值:
- SECOND => S
- MINUTE => M
- HOUR => H
- DAY => D
- 在
`/api/v3/exchangeInfo`接口中`rateLimits`数组里包含有REST接口(不限于本篇的REST接口)的访问限制。包括带权重的访问频次限制、下单速率限制。参考
[枚举定义](enums_CN.md) 中有关有限制类型的进一步说明。
- 当您超出请求速率限制时,请求会失败并返回 HTTP 状态代码 429。
### IP 访问限制
- 每个请求将包含一个`X-MBX-USED-WEIGHT-(intervalNum)(intervalLetter)`的头,其中包含当前IP所有请求的已使用权重。
- 每一个接口均有一个相应的权重(weight),有的接口根据参数不同可能拥有不同的权重。越消耗资源的接口权重就会越大。
- 收到429时,您有责任停止发送请求,不得滥用API。
- **收到429后仍然继续违反访问限制,会被封禁IP,并收到418错误码**
- 频繁违反限制,封禁时间会逐渐延长,**从最短2分钟到最长3天**.
- `Retry-After`的头会与带有418或429的响应发送,并且会给出**以秒为单位**的等待时长(如果是429)以防止禁令,或者如果是418,直到禁令结束。
- **访问限制是基于IP的,而不是API Key**
### 未成交订单计数
- 每个成功的订单响应都将包含一个 `X-MBX-ORDER-COUNT-(intervalNum)(intervalLetter)`
报文头,用于标识您在该时间间隔内下了多少订单。
如果您想要对此进行监控,请参阅
[`GET api/v3/rateLimit/order`](rest-api_CN.md#query-unfilled-order-count-user_data)。
- 被拒绝/不成功的订单不保证在响应中有 `X-MBX-ORDER-COUNT-**` 报文头。
- 如果超过此值,您将收到一个 429 错误,而且不带 `Retry-After` 报文头。
- **请注意,如果您的订单一直顺利完成交易,您可以通过 API 持续下订单**。更多信息,请参见[现货未成交订单计数规则](./faqs/order_count_decrement_CN.md)。
- **未成交订单数量是按照每个账户来统计的**。
## 数据来源
- 因为API系统是异步的, 所以返回的数据有延时很正常, 也在预期之中。
- 在每个接口中,都列出了其数据的来源,可以用于理解数据的时效性。
系统一共有3个数据来源,按照更新速度的先后排序。排在前面的数据最新,在后面就有可能存在延迟。
- **撮合引擎** - 表示数据来源于撮合引擎
- **缓存** - 表示数据来源于内部或者外部的缓存
- **数据库** - 表示数据直接来源于数据库
有些接口有不止一个数据源, 比如
`缓存 => 数据库`, 这表示接口会先从第一个数据源检查,如果没有数据,则检查下一个数据源。
## 请求鉴权类型
- 每个接口都有一个鉴权类型,指示所需的 API 密钥权限,显示在接口名称旁边(例如,[下新订单 (TRADE)](rest-api_CN.md#new-order-trade))。
- 如果未指定,则鉴权类型为 `NONE`。
- 除了为 `NONE` 外,所有具有鉴权类型的接口均视为 `SIGNED` 请求(即包含 `signature`)。
- 具有鉴权类型的接口需要提供有效的 API 密钥并验证通过。
- API 密钥可在您的 Binance 账户的 [API 管理](https://www.binance.com/en/support/faq/360002502072)
页面创建。
- **API 密钥和密钥对均为敏感信息,切勿与他人分享。**
如果发现账户有异常活动,请立即撤销所有密钥并联系 Binance 支持。
- API 密钥可配置为仅允许访问某些鉴权接口。
- 例如,您可以拥有具有 `TRADE` 权限的 API 密钥用于交易,同时使用具有 `USER_DATA`
权限的另一个 API 密钥来监控订单状态。
- 默认情况下,API 密钥无法进行 `TRADE`,您需要先在 API 管理中启用交易权限。
| 鉴权类型 | 描述 |
| ------------- | ------------------------------------ |
| `NONE` | 公开市场数据 |
| `TRADE` | 在交易所交易,下单和取消订单 |
| `USER_DATA` | 私人账户信息,例如订单状态和交易历史 |
| `USER_STREAM` | 管理用户数据流订阅 |
### 需要签名的接口
- 调用`SIGNED` 接口时,除了接口本身所需的参数外,还需要在 `query string` 或 `request body` 中传递
`signature`, 即签名参数。
#### 签名是否是大小写敏感的
- **HMAC:**
使用 HMAC 生成的签名**不区分大小写**。这意味着无论字母大小写如何,签名字符串都可以被验证。
- **RSA:** 使用 RSA 生成的签名是**大小写敏感的**。
- **Ed25519:** 使用 Ed25519 生成的签名也是**大小写敏感的**。
请参阅[已签名请求示例 (HMAC)](#hmac-keys)、[已签名请求示例 (RSA)](#rsa-keys)
和[已签名请求示例 (Ed25519)](#ed25519-keys),了解如何根据您使用的 API 密钥类型计算签名。
### 时间同步安全
- `SIGNED` 请求还需要一个 `timestamp` 参数,该参数应为当前时间戳,单位为毫秒或微秒。(参见
[通用 API 信息](#general-api-information))
- 另一个可选参数 `recvWindow`,用以指定请求的有效期,只能以毫秒为单位。
- `recvWindow` 扩展为三位小数(例如 6000.346),以便可以指定微秒。
- 如果未发送 `recvWindow`,则 **默认值为 5000 毫秒**。
- `recvWindow` 的最大值为 60000 毫秒。
- 请求处理逻辑如下:
```javascript
serverTime = getCurrentTime()
if (timestamp < (serverTime + 1 second) && (serverTime - timestamp) <= recvWindow) {
// 开始处理请求
serverTime = getCurrentTime()
if (serverTime - timestamp) <= recvWindow {
// 将请求转发到撮合引擎
} else {
// 拒绝请求
}
// 结束处理请求
} else {
// 拒绝请求
}
```
**关于交易时效性**
互联网状况并不100%可靠,不可完全依赖,因此你的程序本地到币安服务器的时延会有抖动. 这是我们设置`recvWindow`的目的所在,如果你从事高频交易,对交易时效性有较高的要求,可以灵活设置`recvWindow`以达到你的要求。
**不推荐使用5秒以上的recvWindow。最大值不能超过60秒!**
### POST /api/v3/order 的签名示例
#### HMAC Keys
不使用分隔符,把查询字符串与 `HTTP body`
连接在一起将生成请求的签名 payload。任何非 ASCII 字符在签名前都必须进行百分比编码(percent-encoded)。
以下示例分步演示如何使用 `echo`、`openssl` 和 `curl`
从 Linux 命令行发送有效的签名 payload。其中一个例子中的交易对名称完全由 ASCII 字符组成,另一个例子中的交易对名称则包含非 ASCII 字符。
API 密钥和密钥示例:
| Key | Value |
| ----------- | ---------------------------------------------------------------- |
| `apiKey` | vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A |
| `secretKey` | NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j |
**警告:请勿与任何人分享您的 API 密钥和秘钥。**
此处提供的示例密钥仅用于示范说明目的。
交易对名称完全由 ASCII 字符组成的请求示例:
| 参数 | 取值 |
| ------------- | ------------- |
| `symbol` | LTCBTC |
| `side` | BUY |
| `type` | LIMIT |
| `timeInForce` | GTC |
| `quantity` | 1 |
| `price` | 0.1 |
| `recvWindow` | 5000 |
| `timestamp` | 1499827319559 |
交易对名称包含非 ASCII 字符的请求示例:
| 参数 | 取值 |
| ------------- | ------------- |
| `symbol` | 123456 |
| `side` | BUY |
| `type` | LIMIT |
| `timeInForce` | GTC |
| `quantity` | 1 |
| `price` | 0.1 |
| `recvWindow` | 5000 |
| `timestamp` | 1499827319559 |
**第一步: 构建签名 payload。**
1. 将参数格式化为 `参数=取值` 对并用 `&` 分隔每个参数对。
2. 对字符串进行百分比编码(percent-encoded)。
对于第一组示例参数(仅限 ASCII 字符), `parameter=value` 字符串将如下所示:
```console
symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
```
对字符串进行百分比编码(percent-encoded)后,签名 payload 如下所示:
```console
symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
```
对于第二组示例参数(包含一些 Unicode 字符),`parameter=value` 字符串将如下所示:
```console
symbol=123456&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
```
对字符串进行百分比编码(percent-encoded)后,签名 payload 如下所示:
```console
symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
```
**第二步: 计算签名。**
1. 使用 API 密钥中的 `secretKey` 作为 HMAC-SHA-256 算法的签名密钥。
2. 对步骤 1 中构建的签名 payload 进行签名。
3. 将 HMAC-SHA-256 的输出编码为十六进制字符串。
请注意,`secretKey` 和 payload 是**大小写敏感的**,而生成的签名值是不区分大小写的。
**示例命令**
对于第一组示例参数(仅限 ASCII 字符):
```console
$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
```
对于第二组示例参数(包含一些 Unicode 字符):
```console
$ echo -n "symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
e1353ec6b14d888f1164ae9af8228a3dbd508bc82eb867db8ab6046442f33ef3
```
**第三步: 为请求添加签名**
通过在查询字符串中添加 `signature` 参数来完成请求。
对于第一组示例参数(仅限 ASCII 字符):
```console
curl -s -v -H "X-MBX-APIKEY: $apiKey" -X POST "https://api.binance.com/api/v3/order?symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71"
```
对于第二组示例参数(包含一些 Unicode 字符):
```console
curl -s -v -H "X-MBX-APIKEY: $apiKey" -X POST "https://api.binance.com/api/v3/order?symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559&signature=e1353ec6b14d888f1164ae9af8228a3dbd508bc82eb867db8ab6046442f33ef3"
```
以下是一个执行上述所有步骤的 Bash 脚本示例:
```bash
apiKey="vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A"
secretKey="NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j"
payload="symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559"
# 对请求进行签名
signature=$(echo -n "$payload" | openssl dgst -sha256 -hmac "$secretKey")
signature=${signature#*= } # Keep only the part after the "= "
# 发送请求
curl -H "X-MBX-APIKEY: $apiKey" -X POST "https://api.binance.com/api/v3/order?$payload&signature=$signature"
```
#### RSA Keys
不使用分隔符,把查询字符串与 `HTTP body`
连接在一起将生成请求的签名 payload。任何非 ASCII 字符在签名前都必须进行百分比编码(percent-encoded)。
要获取 API 密钥,您需要将 RSA 公钥上传到您的帐户中,系统将为您提供相应的 API 密钥。
仅支持 `PKCS#8` 密钥。
在以下示例中,其中一个例子中的交易对名称完全由 ASCII 字符组成,另一个例子中的交易对名称则包含非 ASCII 字符。
这些示例假设私钥存储在文件 `./test-prv-key.pem` 中。
| Key | Value |
| -------- | ---------------------------------------------------------------- |
| `apiKey` | CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ |
交易对名称完全由 ASCII 字符组成的请求示例:
| 参数 | 取值 |
| ------------- | ------------- |
| `symbol` | BTCUSDT |
| `side` | SELL |
| `type` | LIMIT |
| `timeInForce` | GTC |
| `quantity` | 1 |
| `price` | 0.2 |
| `timestamp` | 1668481559918 |
| `recvWindow` | 5000 |
交易对名称包含非 ASCII 字符的请求示例:
| 参数 | 取值 |
| ------------- | ------------- |
| `symbol` | 123456 |
| `side` | SELL |
| `type` | LIMIT |
| `timeInForce` | GTC |
| `quantity` | 1 |
| `price` | 0.2 |
| `timestamp` | 1668481559918 |
| `recvWindow` | 5000 |
**第一步: 构建签名 payload。**
1. 将参数格式化为 `参数=取值` 对并用 `&` 分隔每个参数对。
2. 对字符串进行百分比编码(percent-encoded)。
对于第一组示例参数(仅限 ASCII 字符), `parameter=value` 字符串将如下所示:
```console
symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000
```
对字符串进行百分比编码(percent-encoded)后,签名 payload 如下所示:
```console
symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000
```
对于第二组示例参数(包含一些 Unicode 字符),`parameter=value` 字符串将如下所示:
```console
symbol=123456=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000
```
对字符串进行百分比编码(percent-encoded)后,签名 payload 如下所示:
```console
symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000
```
**第二步: 计算签名。**
1. 使用 RSASSA-PKCS1-v1_5 算法和 SHA-256 哈希函数对步骤 1 中构建的签名 payload 进行签名。
2. 将输出结果编码为 base64 格式。
请注意,payload 和生成的`签名值`是**大小写敏感的**。
对于第一组示例参数(仅限 ASCII 字符):
```console
$ echo -n 'symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000' | openssl dgst -sha256 -sign ./test-prv-key.pem | openssl enc -base64 -A | tr -d '\n'
HZ8HOjiJ1s/igS9JA+n7+7Ti/ihtkRF5BIWcPIEluJP6tlbFM/Bf44LfZka/iemtahZAZzcO9TnI5uaXh3++lrqtNonCwp6/245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH+XxaCmR0WcvlKjNQnp12/eKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang/1WOq+Jaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT/fNnMRxFc7u+j3qI//5yuGuu14KR0MuQKKCSpViieD+fIti46sxPTsjSemoUKp0oXA==
```
对于第二组示例参数(包含一些 Unicode 字符):
```console
$ echo -n 'symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000' | openssl dgst -sha256 -sign ./test-prv-key.pem | openssl enc -base64 -A | tr -d '\n'
qJtv66wyp/1mZE+mIFAAMUoTe8xkmLN7/eAZjuC9x1ocxovItHLl/sNK7Wq8QjgiHqGn0bb8P7yVvGBEd1gFe71NQ8aM0M+JNIMz5UFxfeA53rXjFlvsyH1Sig+OuO9Nz5nhCaJ6bEfj2iuv7w27pB3L8MVqmoCi6D9C/QMiLxtPaR70CxtnvoOlIgPmpv2bQy029A31NEK19ieVLkoyp1EUkXRaX3v0mohx8yMnUG1dhX9nUg3Oy8TYZ03DQy7kHDGkMKisNX7rt/GuGx1HIgjFclDGLsbAFIodvSLjm9FbseasMELoxlAJDlwRnW8zo5sQmL0Fz7ao935QBynrng==
```
3. 对 base64 格式的字符串进行百分比编码(percent-encoded)。
对于第一组示例参数(仅限 ASCII 字符):
```console
HZ8HOjiJ1s%2FigS9JA%2Bn7%2B7Ti%2FihtkRF5BIWcPIEluJP6tlbFM%2FBf44LfZka%2FiemtahZAZzcO9TnI5uaXh3%2B%2BlrqtNonCwp6%2F245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH%2BXxaCmR0WcvlKjNQnp12%2FeKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang%2F1WOq%2BJaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT%2FfNnMRxFc7u%2Bj3qI%2F%2F5yuGuu14KR0MuQKKCSpViieD%2BfIti46sxPTsjSemoUKp0oXA%3D%3D
```
对于第二组示例参数(包含一些 Unicode 字符):
```console
qJtv66wyp%2F1mZE%2BmIFAAMUoTe8xkmLN7%2FeAZjuC9x1ocxovItHLl%2FsNK7Wq8QjgiHqGn0bb8P7yVvGBEd1gFe71NQ8aM0M%2BJNIMz5UFxfeA53rXjFlvsyH1Sig%2BOuO9Nz5nhCaJ6bEfj2iuv7w27pB3L8MVqmoCi6D9C%2FQMiLxtPaR70CxtnvoOlIgPmpv2bQy029A31NEK19ieVLkoyp1EUkXRaX3v0mohx8yMnUG1dhX9nUg3Oy8TYZ03DQy7kHDGkMKisNX7rt%2FGuGx1HIgjFclDGLsbAFIodvSLjm9FbseasMELoxlAJDlwRnW8zo5sQmL0Fz7ao935QBynrng%3D%3D
```
**第三步: 为请求添加签名**
通过在查询字符串中添加 `signature` 参数来完成请求。
对于第一组示例参数(仅限 ASCII 字符):
```console
curl -H "X-MBX-APIKEY: CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ" -X POST 'https://api.binance.com/api/v3/order?symbol=BTCUSDT&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000&signature=HZ8HOjiJ1s%2FigS9JA%2Bn7%2B7Ti%2FihtkRF5BIWcPIEluJP6tlbFM%2FBf44LfZka%2FiemtahZAZzcO9TnI5uaXh3%2B%2BlrqtNonCwp6%2F245UFWkiW1elpgtVAmJPbogcAv6rSlokztAfWk296ZJXzRDYAtzGH0gq7CgSJKfH%2BXxaCmR0WcvlKjNQnp12%2FeKXJYO4tDap8UCBLuyxDnR7oJKLHQHJLP0r0EAVOOSIbrFang%2F1WOq%2BJaq4Efc4XpnTgnwlBbWTmhWDR1pvS9iVEzcSYLHT%2FfNnMRxFc7u%2Bj3qI%2F%2F5yuGuu14KR0MuQKKCSpViieD%2BfIti46sxPTsjSemoUKp0oXA%3D%3D'
```
对于第二组示例参数(包含一些 Unicode 字符):
```console
curl -H "X-MBX-APIKEY: CAvIjXy3F44yW6Pou5k8Dy1swsYDWJZLeoK2r8G4cFDnE9nosRppc2eKc1T8TRTQ" -X POST 'https://api.binance.com/api/v3/order?symbol=%EF%BC%91%EF%BC%92%EF%BC%93%EF%BC%94%EF%BC%95%EF%BC%96&side=SELL&type=LIMIT&timeInForce=GTC&quantity=1&price=0.2×tamp=1668481559918&recvWindow=5000&signature=qJtv66wyp%2F1mZE%2BmIFAAMUoTe8xkmLN7%2FeAZjuC9x1ocxovItHLl%2FsNK7Wq8QjgiHqGn0bb8P7yVvGBEd1gFe71NQ8aM0M%2BJNIMz5UFxfeA53rXjFlvsyH1Sig%2BOuO9Nz5nhCaJ6bEfj2iuv7w27pB3L8MVqmoCi6D9C%2FQMiLxtPaR70CxtnvoOlIgPmpv2bQy029A31NEK19ieVLkoyp1EUkXRaX3v0mohx8yMnUG1dhX9nUg3Oy8TYZ03DQy7kHDGkMKisNX7rt%2FGuGx1HIgjFclDGLsbAFIodvSLjm9FbseasMELoxlAJDlwRnW8zo5sQmL0Fz7ao935QBynrng%3D%3D'
```
以下是一个执行上述所有步骤的 Bash 脚本示例:
```bash
function rawurlencode {
local string="${1}"
local strlen=${#string}
local encoded=""
local pos c o
for (( pos=0 ; pos
# 公开API接口
## 通用接口
### 测试服务器连通性 PING
```
GET /api/v3/ping
```
测试能否联通
**权重:**
1
**参数:**
NONE
**数据源:** 缓存
**响应:**
```javascript
{}
```
### 获取服务器时间
```
GET /api/v3/time
```
**权重:**
1
**参数:**
NONE
**数据源:** 缓存
**响应:**
```javascript
{
"serverTime": 1499827319559
}
```
### 交易规范信息
```
GET /api/v3/exchangeInfo
```
获取此时的交易规范信息
**权重:**
20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 示例:curl -X GET "https://api.binance.com/api/v3/exchangeInfo?symbol=BNBBTC"
symbols | ARRAY OF STRING | NO | 示例:curl -X GET
"https://api.binance.com/api/v3/exchangeInfo?symbols=%5B%22BNBBTC%22,%22BTCUSDT%22%5D"
或
curl -g -X GET
'https://api.binance.com/api/v3/exchangeInfo?symbols=["BTCUSDT","BNBBTC"]'
permissions | ENUM | NO | 示例:curl -X GET
"https://api.binance.com/api/v3/exchangeInfo?permissions=SPOT"
or
curl -X GET
"https://api.binance.com/api/v3/exchangeInfo?permissions=%5B%22MARGIN%22%2C%22LEVERAGED%22%5D"
or
curl -g -X GET
'https://api.binance.com/api/v3/exchangeInfo?permissions=["MARGIN","LEVERAGED"]'
showPermissionSets | BOOLEAN | NO | 默认值: true。
用于控制是否提供 `permissionSets` 字段的内容。
symbolStatus | ENUM | NO | 用于过滤具有此 `tradingStatus` 的交易对。不能与 `symbols` 或 `symbol` 组合使用。
**数据源:** 缓存
**备注**:
- 如果参数 `symbol` 或者 `symbols` 提供的交易对不存在, 系统会返回错误并提示交易对不正确。
- 所有的参数都是可选的。
- `permissions` 可以支持单个或多个值(例如 `SPOT`, `["MARGIN","LEVERAGED"]`)。此参数不能与 `symbol` 或 `symbols` 组合使用。
- 如果未提供 `permissions` 参数,那么所有具有 `SPOT`、`MARGIN` 或 `LEVERAGED` 权限的交易对都将被返回。
- 要显示具有任何权限的交易对,您需要在 `permissions` 中明确指定它们:(例如 `["SPOT","MARGIN",...]`)。有关完整列表,请参阅 [可用权限]
**解释响应中的 `permissionSets`:**
- `[["A","B"]]` 有权限"A"**或**权限"B"的账户可以下订单。
- `[["A"],["B"]]` 有权限"A"**和**权限"B"的账户可以下订单。
- `[["A"],["B","C"]]` 有权限"A"**和**权限"B"或权限"C"的账户可以下订单。(此处应用的是包含或,而不是排除或,因此账户可以同时拥有权限"B"和权限"C"。)
**响应:**
```javascript
{
"timezone": "UTC",
"serverTime": 1565246363776,
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000
},
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000
},
{
"rateLimitType": "RAW_REQUESTS",
"interval": "MINUTE",
"intervalNum": 5,
"limit": 61000
}
],
// 交易所级别过滤器在 "过滤器" 页面上进行了说明:
// https://github.com/binance/binance-spot-api-docs/blob/master/filters_CN.md
// 全部交易过滤器是可选的。
"exchangeFilters": [],
"symbols": [
{
"symbol": "ETHBTC",
"status": "TRADING",
"baseAsset": "ETH",
"baseAssetPrecision": 8,
"quoteAsset": "BTC",
"quotePrecision": 8, // 将在未来的 api 版本中移除 (v4+)
"quoteAssetPrecision": 8,
"baseCommissionPrecision": 8,
"quoteCommissionPrecision": 8,
"orderTypes": [
"LIMIT",
"LIMIT_MAKER",
"MARKET",
"STOP_LOSS",
"STOP_LOSS_LIMIT",
"TAKE_PROFIT",
"TAKE_PROFIT_LIMIT"
],
"icebergAllowed": true,
"ocoAllowed": true,
"otoAllowed": true,
"opoAllowed": true,
"quoteOrderQtyMarketAllowed": true,
"allowTrailingStop": false,
"cancelReplaceAllowed": false,
"amendAllowed": false,
"pegInstructionsAllowed": true,
"isSpotTradingAllowed": true,
"isMarginTradingAllowed": true,
// 交易对过滤器在"过滤器"页面上进行了说明:
// https://github.com/binance/binance-spot-api-docs/blob/master/filters_CN.md
// 全部交易对过滤器是可选的。
"filters": [],
"permissions": [],
"permissionSets": [
[
"SPOT",
"MARGIN"
]
],
"defaultSelfTradePreventionMode": "NONE",
"allowedSelfTradePreventionModes": [
"NONE"
]
}
],
// 可选字段,仅当 SOR 可用时才会被显示出来。
// https://github.com/binance/binance-spot-api-docs/blob/master/faqs/sor_faq_CN.md
"sors": [
{
"baseAsset": "BTC",
"symbols": [
"BTCUSDT",
"BTCUSDC"
]
}
]
}
```
### 查询执行规则
```
GET /api/v3/executionRules
```
查询交易对的执行规则。
**权重:**
参数 | 权重
--- | ---
`symbol` | 2
`symbols` | 每个 `symbol` 占用 2,最多为 40
`symbolStatus` | 40
无 | 40
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 查询指定的交易对。
symbols | ARRAY OF STRING | NO | 查询多个交易对。
symbolStatus | ENUM | NO | 查询指定状态的所有交易对。
**数据源:** 缓存
**注意:** 不允许多个参数组合使用。
**响应:**
```javascript
{
"symbolRules": [
{
"symbol": "BAZUSD",
"rules": [
{
"ruleType": "PRICE_RANGE",
"bidLimitMultUp": "1.0001",
"bidLimitMultDown": "0.9999",
"askLimitMultUp": "1.0001",
"askLimitMultDown": "0.9999"
}
]
}
]
}
```
## 行情接口
### 深度信息
```
GET /api/v3/depth
```
**权重:**
根据 limit 调整:
|限制|请求权重
------|-------
1-100| 5
101-500| 25
501-1000| 50
1001-5000| 250
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
limit | INT | NO | 默认值: 100; 最大值: 5000。
如果 limit > 5000, 最多返回5000条数据。
symbolStatus | ENUM | NO | 过滤具有此 `tradingStatus` 的交易对。
如果状态不匹配,将返回错误 `-1220 交易对与状态不匹配`
**数据源:** 缓存
**响应:**
```javascript
{
"lastUpdateId": 1027024,
// 买单列表。每项为 [价格, 数量]。
"bids": [
[
"4.00000000", // 价位
"431.00000000" // 挂单量
]
],
// 卖单列表。每项为 [价格, 数量]。
"asks": [
[
"4.00000200", // 价位
"12.00000000" // 挂单量
]
]
}
```
### 近期成交
```
GET /api/v3/trades
```
获取近期成交
**权重:**
25
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
limit | INT | NO | 默认值: 500; 最大值: 1000。
**数据源:** 缓存
**响应:**
```javascript
[
{
"id": 28457,
"price": "4.00000100",
"qty": "12.00000000",
"quoteQty": "48.000012",
"time": 1499865549590,
"isBuyerMaker": true,
"isBestMatch": true
}
]
```
### 查询历史成交
```
GET /api/v3/historicalTrades
```
**权重:**
25
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
limit | INT | NO | 默认值: 500; 最大值: 1000。
fromId | LONG | NO | 从哪一条成交id开始返回,缺省返回最近的成交记录
**数据源:** 数据库
**响应:**
```javascript
[
{
"id": 28457,
"price": "4.00000100",
"qty": "12.00000000",
"quoteQty": "48.000012",
"time": 1499865549590,
"isBuyerMaker": true,
"isBestMatch": true
}
]
```
### 查询历史大宗交易
```
GET /api/v3/historicalBlockTrades
```
获取大宗交易记录。
**权重:**
25
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
fromId | LONG | YES | 从该大宗交易ID开始查询
limit | LONG | NO | 默认: 500; 最大: 1000
**数据源:** 数据库
**响应:**
```javascript
[
{
"id": 582,
"price": "0.052",
"qty": "5838",
"quoteQty": "303.576",
"time": 1772506983321,
"isBuyerMaker": true
}
]
```
### 近期成交(归集)
```
GET /api/v3/aggTrades
```
与trades的区别是,同一个taker在同一时间同一价格与多个maker的成交会被合并为一条记录
**权重:**
4
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
fromId | LONG | NO | 从包含fromID的成交开始返回结果
startTime | LONG | NO | 从该时刻之后的成交记录开始返回结果
endTime | LONG | NO | 返回该时刻为止的成交记录
limit | INT | NO | 默认值: 500; 最大值: 1000。
**数据源:** 数据库
- 如果没有发送任何筛选参数(fromId, startTime, endTime),默认返回最近的成交记录
**响应:**
```javascript
[
{
"a": 26129, // 归集成交ID
"p": "0.01633102", // 成交价
"q": "4.70443515", // 成交量
"f": 27781, // 被归集的首个成交ID
"l": 27781, // 被归集的末个成交ID
"T": 1498793709153, // 成交时间
"m": true, // 是否为主动卖出单
"M": true // 是否为最优撮合单(可忽略,目前总为最优撮合)
}
]
```
### K线数据
```
GET /api/v3/klines
```
每根K线的开盘时间可视为唯一ID
**权重:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
interval | ENUM | YES |
startTime | LONG | NO |
endTime | LONG | NO |
timeZone | STRING | NO | 默认值: 0 (UTC)
limit | INT | NO | 默认值: 500; 最大值: 1000。
**数据源:** 数据库
支持的K线间隔 (区分大小写):
间隔 | `间隔` 值
--------- | ----------------
seconds -> 秒 | `1s`
minutes -> 分钟 | `1m`, `3m`, `5m`, `15m`, `30m`
hours -> 小时 | `1h`, `2h`, `4h`, `6h`, `8h`, `12h`
days -> 天 | `1d`, `3d`
weeks -> 周 | `1w`
months -> 月 | `1M`
**请注意:**
* 如果未发送`startTime`和`endTime`,将返回最近的K线数据。
* `timeZone`支持的值包括:
* 小时和分钟(例如 `-1:00`,`05:45`)
* 仅小时(例如 `0`,`8`,`4`)
* 接受的值范围严格为 [-12:00 到 +14:00](包括边界)
* 如果提供了`timeZone`,K线间隔将在该时区中解释,而不是在UTC中。
* 请注意,无论`timeZone`如何,`startTime`和`endTime`始终以UTC时区解释。
**响应:**
```javascript
[
[
1499040000000, // 开盘时间
"0.01634790", // 开盘价
"0.80000000", // 最高价
"0.01575800", // 最低价
"0.01577100", // 收盘价
"148976.11427815", // 成交量
1499644799999, // 收盘时间
"2434.19055334", // 成交额
308, // 成交笔数
"1756.87402397", // 主动买入成交量
"28.46694368", // 主动买入成交额
"0" // 忽略字段
]
]
```
### UIK线数据
```
GET /api/v3/uiKlines
```
请求参数与响应和k线接口相同。
`uiKlines` 返回修改后的k线数据,针对k线图的呈现进行了优化。
**权重:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
interval | ENUM | YES |
startTime | LONG | NO |
endTime | LONG | NO |
timeZone | STRING | NO | 默认值: 0 (UTC)
limit | INT | NO | 默认值: 500; 最大值: 1000。
**数据源:** 数据库
- 如果未发送 `startTime` 和 `endTime`,默认返回最近的交易。
- `timeZone`支持的值包括:
- 小时和分钟(例如 `-1:00`,`05:45`)
- 仅小时(例如 `0`,`8`,`4`)
- 接受的值范围严格为 [-12:00 到 +14:00](包括边界)
- 如果提供了`timeZone`,K线间隔将在该时区中解释,而不是在UTC中。
- 请注意,无论`timeZone`如何,`startTime`和`endTime`始终以UTC时区解释。
**响应:**
```javascript
[
[
1499040000000, // 开盘时间
"0.01634790", // 开盘价
"0.80000000", // 最高价
"0.01575800", // 最低价
"0.01577100", // 收盘价
"148976.11427815", // 成交量
1499644799999, // 收盘时间
"2434.19055334", // 成交额
308, // 成交笔数
"1756.87402397", // 主动买入成交量
"28.46694368", // 主动买入成交额
"0" // 忽略字段
]
]
```
### 当前平均价格
```
GET /api/v3/avgPrice
```
**权重:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
**数据源:** 缓存
**响应:**
```javascript
{
"mins": 5, // 平均价格间隔(以分钟为单位)
"price": "9.35751834", // 平均价格
"closeTime": 1694061154503 // 最近成交时间
}
```
### 24hr价格变动情况
```
GET /api/v3/ticker/24hr
```
请注意,不携带symbol参数会返回全部交易对数据,不仅数据庞大,而且权重极高
**权重:**
| 参数 |
提供Symbol数量 |
权重 |
| symbol |
1 |
2 |
| 不提供 symbol 参数 |
80 |
| symbols |
1-20 |
2 |
| 21-100 |
40 |
| 101 或更多 |
80 |
| 不提供 symbols 参数 |
80 |
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
symbols | ARRAY OF STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的ticker数据都会返回. symbols参数可接受的格式: ["BTCUSDT","BNBUSDT"]
%5B%22BTCUSDT%22,%22BNBUSDT%22%5D
type | ENUM | NO | 默认值: FULL。
symbolStatus | ENUM | NO |
**数据源:** 缓存
**响应:**
`FULL` 类型,有 `symbol`:
```javascript
{
"symbol": "BNBBTC", // 交易对
"priceChange": "-94.99999800",
"priceChangePercent": "-95.960",
"weightedAvgPrice": "0.29628482",
"prevClosePrice": "0.10002000",
"lastPrice": "4.00000200", // 间隔收盘价
"lastQty": "200.00000000",
"bidPrice": "4.00000000",
"bidQty": "100.00000000",
"askPrice": "4.00000200",
"askQty": "100.00000000",
"openPrice": "99.00000000", // 间隔开盘价
"highPrice": "100.00000000", // 间隔最高价
"lowPrice": "0.10000000", // 间隔最低价
"volume": "8913.30000000", // 总交易量 (base asset)
"quoteVolume": "15.30000000", // 总交易量 (quote asset)
"openTime": 1499783499040, // ticker间隔的开始时间
"closeTime": 1499869899040, // ticker间隔的结束时间
"firstId": 28385, // 首笔成交id
"lastId": 28460, // 末笔成交id
"count": 76 // 成交笔数
}
```
`FULL` 类型,有 `symbols`:
```javascript
[
{
"symbol": "BNBBTC", // 交易对
"priceChange": "-94.99999800",
"priceChangePercent": "-95.960",
"weightedAvgPrice": "0.29628482",
"prevClosePrice": "0.10002000",
"lastPrice": "4.00000200", // 间隔收盘价
"lastQty": "200.00000000",
"bidPrice": "4.00000000",
"bidQty": "100.00000000",
"askPrice": "4.00000200",
"askQty": "100.00000000",
"openPrice": "99.00000000", // 间隔开盘价
"highPrice": "100.00000000", // 间隔最高价
"lowPrice": "0.10000000", // 间隔最低价
"volume": "8913.30000000", // 总交易量 (base asset)
"quoteVolume": "15.30000000", // 总交易量 (quote asset)
"openTime": 1499783499040, // ticker间隔的开始时间
"closeTime": 1499869899040, // ticker间隔的结束时间
"firstId": 28385, // 首笔成交id
"lastId": 28460, // 末笔成交id
"count": 76 // 成交笔数
}
]
```
`MINI` 类型,有 `symbol`:
```javascript
{
"symbol": "BNBBTC", // 交易对
"openPrice": "99.00000000", // 间隔开盘价
"highPrice": "100.00000000", // 间隔最高价
"lowPrice": "0.10000000", // 间隔最低价
"lastPrice": "4.00000200", // 间隔收盘价
"volume": "8913.30000000", // 总交易量 (base asset)
"quoteVolume": "15.30000000", // 总交易量 (quote asset)
"openTime": 1499783499040, // ticker间隔的开始时间
"closeTime": 1499869899040, // ticker间隔的结束时间
"firstId": 28385, // 统计时间内的第一笔trade id
"lastId": 28460, // 统计时间内的最后一笔trade id
"count": 76 // 统计时间内交易笔数
}
```
`MINI` 类型,有 `symbols`:
```javascript
[
{
"symbol": "BNBBTC",
"openPrice": "99.00000000",
"highPrice": "100.00000000",
"lowPrice": "0.10000000",
"lastPrice": "4.00000200",
"volume": "8913.30000000",
"quoteVolume": "15.30000000",
"openTime": 1499783499040,
"closeTime": 1499869899040,
"firstId": 28385,
"lastId": 28460,
"count": 76
},
{
"symbol": "LTCBTC",
"openPrice": "0.07000000",
"highPrice": "0.07000000",
"lowPrice": "0.07000000",
"lastPrice": "0.07000000",
"volume": "11.00000000",
"quoteVolume": "0.77000000",
"openTime": 1656908192899,
"closeTime": 1656994592899,
"firstId": 0,
"lastId": 10,
"count": 11
}
]
```
### 交易日行情(Ticker)
```
GET /api/v3/ticker/tradingDay
```
交易日价格变动统计。
**权重:**
每个交易对占用 4 个权重。当请求中的交易对数量超过 50 时,此请求的权重上限为 200。
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | `symbol` 或者 `symbols` 必须提供之
symbols | ARRAY OF STRING | NO | `symbol` 或者 `symbols` 必须提供之一
`symbols` 可以接受的格式: ["BTCUSDT","BNBUSDT"] 或者 %5B%22BTCUSDT%22,%22BNBUSDT%22%5D.
`symbols` 最多可以发送100个.
timeZone | STRING | NO | 默认值: 0 (UTC)
type | ENUM | NO | 默认值: FULL。
symbolStatus | ENUM | NO | 过滤具有此 `tradingStatus` 的交易对。
对于单个交易对,如果状态不匹配,将返回错误 `-1220 交易对与状态不匹配`。
对于多个交易对,响应中不会包括状态不匹配的交易对。
**数据源:** 数据库
**注意:**
- `timeZone`支持的值包括:
- 小时和分钟(例如 `-1:00`,`05:45`)
- 仅小时(例如 `0`,`8`,`4`)
**响应:**
`FULL` 类型,有 `symbol`:
```javascript
{
"symbol": "BTCUSDT",
"priceChange": "-83.13000000", // 绝对价格变动
"priceChangePercent": "-0.317", // 相对价格变动百分比
"weightedAvgPrice": "26234.58803036", // 报价成交量 / 成交量
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000", // 基础资产的成交量
"quoteVolume": "485217905.04210480", // 报价资产的成交量
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555, // 区间内的第一个交易的交易ID
"lastId": 3220849281, // 区间内的最后一个交易的交易ID
"count": 697727 // 区间内的交易数量
}
```
`FULL` 类型,有 `symbols`:
```javascript
[
{
"symbol": "BTCUSDT",
"priceChange": "-83.13000000", // 绝对价格变动
"priceChangePercent": "-0.317", // 相对价格变动百分比
"weightedAvgPrice": "26234.58803036", // 报价成交量 / 成交量
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000", // 基础资产的成交量
"quoteVolume": "485217905.04210480", // 报价资产的成交量
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555, // 区间内的第一个交易的交易ID
"lastId": 3220849281, // 区间内的最后一个交易的交易ID
"count": 697727 // 区间内的交易数量
},
{
"symbol": "BNBUSDT",
"priceChange": "2.60000000",
"priceChangePercent": "1.238",
"weightedAvgPrice": "211.92276958",
"openPrice": "210.00000000",
"highPrice": "213.70000000",
"lowPrice": "209.70000000",
"lastPrice": "212.60000000",
"volume": "280709.58900000",
"quoteVolume": "59488753.54750000",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 672397461,
"lastId": 672496158,
"count": 98698
}
]
```
`MINI` 类型,有 `symbol`:
```javascript
{
"symbol": "BTCUSDT",
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000", // 基础资产的成交量
"quoteVolume": "485217905.04210480", // 报价资产的成交量
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555, // 区间内的第一个交易的交易ID
"lastId": 3220849281, // 区间内的最后一个交易的交易ID
"count": 697727 // 区间内的交易数量
}
```
`MINI` 类型,有 `symbols`:
```javascript
[
{
"symbol": "BTCUSDT",
"openPrice": "26304.80000000",
"highPrice": "26397.46000000",
"lowPrice": "26088.34000000",
"lastPrice": "26221.67000000",
"volume": "18495.35066000",
"quoteVolume": "485217905.04210480",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 3220151555,
"lastId": 3220849281,
"count": 697727
},
{
"symbol": "BNBUSDT",
"openPrice": "210.00000000",
"highPrice": "213.70000000",
"lowPrice": "209.70000000",
"lastPrice": "212.60000000",
"volume": "280709.58900000",
"quoteVolume": "59488753.54750000",
"openTime": 1695686400000,
"closeTime": 1695772799999,
"firstId": 672397461,
"lastId": 672496158,
"count": 98698
}
]
```
### 最新价格接口
```
GET /api/v3/ticker/price
```
返回最近价格
**权重:**
|参数|提供Symbol数量|权重|
|---|---|---|
|symbol| 1 |2|
| |不提供| 4|
|symbols| 任意 |4|
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的价格数据都会返回.
symbols | ARRAY OF STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的价格数据都会返回.
symbols参数可接受的格式: ["BTCUSDT","BNBUSDT"] 或 %5B%22BTCUSDT%22,%22BNBUSDT%22%5D
symbolStatus | ENUM | NO | 过滤具有此 `tradingStatus` 的交易对。
对于单个交易对,如果状态不匹配,将返回错误 `-1220 交易对与状态不匹配`。
对于多个或者全部交易对,响应中不会包括状态不匹配的交易对。
**数据源:** 缓存
**响应 - 当查询单个交易对时:**
```javascript
{
"symbol": "LTCBTC",
"price": "4.00000200"
}
```
**响应 - 当查询多个交易对时:**
```javascript
[
{
"symbol": "LTCBTC",
"price": "4.00000200"
},
{
"symbol": "ETHBTC",
"price": "0.07946600"
}
]
```
### 最优挂单接口
```
GET /api/v3/ticker/bookTicker
```
返回当前最优的挂单(最高买单,最低卖单)
**权重:**
|参数|提供Symbol数量|权重|
|---|---|---|
|symbol| 1 |2|
| |不提供| 4|
|symbols| 任意 |4|
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的bookTicker数据都会返回.
symbols | ARRAY OF STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的bookTicker数据都会返回.
symbols参数可接受的格式: ["BTCUSDT","BNBUSDT"] 或 %5B%22BTCUSDT%22,%22BNBUSDT%22%5D
symbolStatus | ENUM | NO | 过滤具有此 `tradingStatus` 的交易对。
对于单个交易对,如果状态不匹配,将返回错误 `-1220 交易对与状态不匹配`。
对于多个或者全部交易对,响应中不会包括状态不匹配的交易对。
**数据源:** 缓存
**响应 - 当查询单个交易对时:**
```javascript
{
"symbol": "LTCBTC",
"bidPrice": "4.00000000", // 最优买单价
"bidQty": "431.00000000", // 挂单量
"askPrice": "4.00000200", // 最优卖单价
"askQty": "9.00000000" // 挂单量
}
```
**响应 - 当查询多个交易对时:**
```javascript
[
{
"symbol": "LTCBTC",
"bidPrice": "4.00000000", // 最优买单价
"bidQty": "431.00000000", // 挂单量
"askPrice": "4.00000200", // 最优卖单价
"askQty": "9.00000000" // 挂单量
},
{
"symbol": "ETHBTC",
"bidPrice": "0.07946700",
"bidQty": "9.00000000",
"askPrice": "100000.00000000",
"askQty": "1000.00000000"
}
]
```
### 滚动窗口价格变动统计
```
GET /api/v3/ticker
```
**注意:** 此接口和 `GET /api/v3/ticker/24hr` 有所不同.
此接口统计的时间范围比请求的`windowSize`多不超过59999ms.
接口的 `openTime` 是某一分钟的起始,而结束是当前的时间. 所以实际的统计区间会比请求的时间窗口多不超过59999ms.
比如, 结束时间 `closeTime` 是 1641287867099 (January 04, 2022 09:17:47:099 UTC)
, `windowSize` 为 `1d`. 那么开始时间 `openTime` 则为 1641201420000 (January 3,
2022, 09:17:00 UTC)
**权重:**
每个交易对占用 4 个权重,与 windowSize 无关。
当请求中的 `symbols` 数量超过 50 时,此请求的权重上限为 200。
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
symbols | ARRAY OF STRING | NO | 参数 `symbol` 和 `symbols` 不可以一起使用
如果都不提供, 所有symbol的ticker数据都会返回. symbols参数可接受的格式: ["BTCUSDT","BNBUSDT"]
%5B%22BTCUSDT%22,%22BNBUSDT%22%5D
windowSize | ENUM | NO | 默认值: 1d。
不可以组合使用, 比如`1d2h`
type | ENUM | NO | 默认值: FULL。
symbolStatus | ENUM | NO |
**数据源:** 数据库
**响应:**
`FULL` 类型,使用参数 `symbol` 返回:
```javascript
{
"symbol": "LTCBTC",
"priceChange": "-8.00000000", // 价格变化
"priceChangePercent": "-88.889", // 价格变化百分比
"weightedAvgPrice": "2.60427807", // QuoteVolume / 成交量
"openPrice": "0.10000000",
"highPrice": "2.00000000",
"lowPrice": "0.10000000",
"lastPrice": "2.00000000",
"volume": "39.00000000",
"quoteVolume": "13.40000000", // 此k线内所有交易的price(价格) x volume(交易量)的总和
"openTime": 1656986580000, // ticker的开始时间
"closeTime": 1657001016795, // ticker的结束时间
"firstId": 0, // 统计时间内的第一笔trade id
"lastId": 34,
"count": 35 // 统计时间内交易笔数
}
```
`FULL` 类型,使用参数 `symbols` 返回:
```javascript
[
{
"symbol": "BTCUSDT",
"priceChange": "-154.13000000", // 价格变化
"priceChangePercent": "-0.740", // 价格变化百分比
"weightedAvgPrice": "20677.46305250", // QuoteVolume / 成交量
"openPrice": "20825.27000000",
"highPrice": "20972.46000000",
"lowPrice": "20327.92000000",
"lastPrice": "20671.14000000",
"volume": "72.65112300",
"quoteVolume": "1502240.91155513", // 此k线内所有交易的price(价格) x volume(交易量)的总和
"openTime": 1655432400000, // ticker的开始时间
"closeTime": 1655446835460, // ticker的结束时间
"firstId": 11147809, // 统计时间内的第一笔trade id
"lastId": 11149775,
"count": 1967 // 统计时间内交易笔数
},
{
"symbol": "BNBBTC",
"priceChange": "0.00008530",
"priceChangePercent": "0.823",
"weightedAvgPrice": "0.01043129",
"openPrice": "0.01036170",
"highPrice": "0.01049850",
"lowPrice": "0.01033870",
"lastPrice": "0.01044700",
"volume": "166.67000000",
"quoteVolume": "1.73858301",
"openTime": 1655432400000,
"closeTime": 1655446835460,
"firstId": 2351674,
"lastId": 2352034,
"count": 361
}
]
```
`MINI` 类型,使用参数 `symbol` 返回:
```javascript
{
"symbol": "LTCBTC",
"openPrice": "0.10000000",
"highPrice": "2.00000000",
"lowPrice": "0.10000000",
"lastPrice": "2.00000000",
"volume": "39.00000000",
"quoteVolume": "13.40000000", // 此k线内所有交易的price(价格) x volume(交易量)的总和
"openTime": 1656986580000, // ticker窗口的开始时间
"closeTime": 1657001016795, // ticker窗口的结束时间
"firstId": 0, // 首笔成交id
"lastId": 34,
"count": 35 // 统计时间内交易笔数
}
```
`MINI` 类型,使用参数 `symbols` 返回:
```javascript
[
{
"symbol": "BNBBTC",
"openPrice": "0.10000000",
"highPrice": "2.00000000",
"lowPrice": "0.10000000",
"lastPrice": "2.00000000",
"volume": "39.00000000",
"quoteVolume": "13.40000000", // 此k线内所有交易的price(价格) x volume(交易量)的总和
"openTime": 1656986880000, // ticker窗口的开始时间
"closeTime": 1657001297799, // ticker窗口的结束时间
"firstId": 0, // 首笔成交id
"lastId": 34,
"count": 35 // 统计时间内交易笔数
},
{
"symbol": "LTCBTC",
"openPrice": "0.07000000",
"highPrice": "0.07000000",
"lowPrice": "0.07000000",
"lastPrice": "0.07000000",
"volume": "33.00000000",
"quoteVolume": "2.31000000",
"openTime": 1656986880000,
"closeTime": 1657001297799,
"firstId": 0,
"lastId": 32,
"count": 33
}
]
```
### 查询参考价格
```
GET /api/v3/referencePrice
```
查询某个交易对的参考价格。
**权重:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
**数据源:** 缓存
如果该交易对从未设置过参考价格,则请求会被拒绝并返回:
```json
{
"code": -2043,
"msg": "This symbol doesn't have a reference price."
}
```
**响应:**
如果设置了参考价格:
```javascript
{
"symbol": "BAZUSD",
"referencePrice": "10.00", // 参考价格。如果没有设置参考价格,则为 `null`。
"timestamp": 1770736694138 // 参考价格有效时的时间戳。
}
```
如果未设置参考价格:
```javascript
{
"symbol": "BAZUSD",
"referencePrice": null, // 参考价格。如果没有设置参考价格,则为 `null`。
"timestamp": 1770736694138 // 参考价格生效的时间
}
```
如果从未设置过参考价格:
```javascript
{
"code": -2043,
"msg": "This symbol doesn't have a reference price."
}
```
### 查询参考价格计算方式
```
GET /api/v3/referencePrice/calculation
```
描述某个交易对的参考价格是如何计算的。
**权重:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
symbolStatus | ENUM | NO | 支持的值: `TRADING`, `HALT`, `BREAK`, `CANCEL_ONLY`
**数据源:** 缓存
**响应:**
如果参考价格由撮合引擎以算术平均数计算:
```javascript
{
"symbol": "BAZUSD",
"calculationType": "ARITHMETIC_MEAN", // `ARITHMETIC_MEAN` 或 `EXTERNAL`。
"bucketCount": 10, // 当 calculationType 为 ARITHMETIC_MEAN 时存在。
"bucketWidthMs": 1000 // 当 calculationType 为 ARITHMETIC_MEAN 时存在。
}
```
如果参考价格由撮合引擎外部计算:
```javascript
{
"symbol": "BAZUSD",
"calculationType": "EXTERNAL", // `ARITHMETIC_MEAN` 或 `EXTERNAL`。
"externalCalculationId": 42 // 当 calculationType 为 EXTERNAL 时存在。
}
```
如果参考价格未被计算:
```javascript
{
"code": -2043,
"msg": "This symbol doesn't have a reference price."
}
```
## 交易接口
### 下单 (TRADE)
```
POST /api/v3/order
```
这个请求会把1个订单添加到 `EXCHANGE_MAX_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中。
**权重:**
1
**未成交的订单计数:**
1
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
side | ENUM | YES | 详见枚举定义:[订单方向](enums_CN.md#side)
type | ENUM | YES | 详见枚举定义:[订单类型](enums_CN.md#ordertypes)
timeInForce | ENUM | NO | 详见枚举定义:[生效时间](enums_CN.md#timeinforce)
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 | 参见 追踪止盈止损(Trailing Stop)订单常见问题
icebergQty | DECIMAL | NO | 仅有限价单(包括条件限价单与限价做事单)可以使用该参数,含义为创建冰山订单并指定冰山订单的数量。
newOrderRespType | ENUM | NO | `MARKET` 与 `LIMIT` 订单默认为`FULL`, 其他默认为`ACK`。
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。
pegPriceType | ENUM | NO | 参阅 关于挂钩订单参数的注意事项
pegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。参阅 关于挂钩订单参数的注意事项
pegOffsetType | ENUM | NO | 仅支持 `PRICE_LEVEL`。参阅 关于挂钩订单参数的注意事项
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
根据 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`, `STOP_LOSS_LIMIT` 和 `TAKE_PROFIT_LIMIT` 订单。
* 如果使用了 `pegPriceType`, 那么 `price` 字段将是可选的。 否则,`price` 字段依旧是必须的。
* `pegPriceType=PRIMARY_PEG` 就是主要挂钩(`primary`),这是订单簿上与您的订单同一方向的最佳价格。
* `pegPriceType=MARKET_PEG` 就是市场挂钩(`market`),这是订单簿上与您的订单相反方向的最佳价格。
* 可以通过使用 `pegOffsetType` 和 `pegOffsetValue` 来获取最佳价格以外的价格水平。 这两个参数必须一起使用。
其他:
* 任何`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`
**响应:**
`ACK` 响应类型:返回速度最快,不包含成交信息,信息量最少
```javascript
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595
}
```
`RESULT` 响应类型:返回速度居中,返回吃单成交的少量信息
```javascript
{
"symbol": "BTCUSDT",
"orderId": 28,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "6gCrw2kRUAF9CvJDGP16IP",
"transactTime": 1507725176595,
"price": "0.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"
}
```
`FULL` 响应类型:返回速度最慢,返回吃单成交的详细信息
```javascript
{
"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
}
]
}
```
### 测试下单接口 (TRADE)
```
POST /api/v3/order/test
```
用于测试订单请求,但不会提交到撮合引擎
**权重:**
|条件|权重|
|---|---|
|没有 `computeCommissionRates`|1|
|有 `computeCommissionRates`|20|
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
computeCommissionRates | BOOLEAN | NO | 默认值: `false`
请参阅[佣金常见问题解答](faqs/commission_faq_CN.md#test-order-diferences) 了解更多信息。
symbol | STRING | YES |
side | ENUM | YES | 详见枚举定义:[订单方向](enums_CN.md#side)
type | ENUM | YES | 详见枚举定义:[订单类型](enums_CN.md#ordertypes)
timeInForce | ENUM | NO | 详见枚举定义:[生效时间](enums_CN.md#timeinforce)
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 | 参见 [追踪止盈止损(Trailing Stop)订单常见问题](faqs/trailing-stop-faq_CN.md)
icebergQty | DECIMAL | NO | 仅有限价单(包括条件限价单与限价做事单)可以使用该参数,含义为创建冰山订单并指定冰山订单的数量。
newOrderRespType | ENUM | NO | 指定响应类型 `ACK`, `RESULT`, or `FULL`; `MARKET` 与 `LIMIT` 订单默认为`FULL`, 其他默认为`ACK`。
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:[STP 模式](enums_CN.md#stpmodes)。
pegPriceType | ENUM | NO | `PRIMARY_PEG` 或 `MARKET_PEG`。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pegOffsetType | ENUM | NO | 仅支持 `PRICE_LEVEL`。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存
**响应:**
没有 `computeCommissionRates`
```javascript
{}
```
有 `computeCommissionRates`
```javascript
{
// 订单交易的标准佣金率
"standardCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// 订单交易的特殊佣金率
"specialCommissionForOrder": {
"maker": "0.05000000",
"taker": "0.06000000"
},
// 订单交易的税率
"taxCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// 以BNB支付时的标准佣金折扣。
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000"
}
}
```
### 撤销订单 (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`,撤销将成功。 请参阅[关于 `cancelRestrictions`](#regarding-cancelrestrictions) 了解更多信息。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
- `orderId` 与 `origClientOrderId` 必须至少发送一个。
- 当同时提供 `orderId` 和 `origClientOrderId` 两个参数时,系统首先将会使用 `orderId` 来搜索订单。然后, 查找结果中的 `origClientOrderId` 的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。
**响应:**
```javascript
{
"symbol": "LTCBTC",
"orderId": 4,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"origClientOrderId": "myOrder1",
"clientOrderId": "cancelMyOrder1",
"transactTime": 1684804350068,
"price": "2.00000000",
"origQty": "1.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.00000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // 冰山订单数量。仅当请求中发送了 `icebergQty` 参数时返回。
"preventedMatchId": 0, // 与 `symbol` 搭配时可用于查询 prevented match。仅当订单因 STP 过期时返回。
"preventedQuantity": "1.200000", // 因 STP 过期的订单数量。仅当订单因 STP 过期时返回。
"stopPrice": "23500.00000000", // 算法订单触发价格。适用于 `STOP_LOSS`、`TAKE_PROFIT`、`STOP_LOSS_LIMIT` 和 `TAKE_PROFIT_LIMIT` 订单。
"strategyId": 37463720, // 可用于标记订单策略中的订单。仅当请求中传入该参数时返回。
"strategyType": 1000000, // 可用于标记使用订单策略的订单。仅当请求中传入该参数时返回。
"trailingDelta": 10, // 订单激活前所需的价格变动幅度。适用于追踪止损订单。
"trailingTime": -1, // 追踪订单激活并开始跟踪价格变化的时间。仅适用于追踪止损订单。
"usedSor": true, // 表示订单是否使用了 SOR。仅在使用 SOR 下单时返回。
"workingFloor": "SOR", // 表示订单由 SOR 撮合还是由提交到的订单簿撮合。仅在使用 SOR 下单时返回。
"pegPriceType": "PRIMARY_PEG", // Peg 价格类型。仅适用于 pegged 订单。
"pegOffsetType": "PRICE_LEVEL", // Peg 价格偏移类型。仅适用于请求了该字段的 pegged 订单。
"pegOffsetValue": 5, // Peg 价格偏移值。仅适用于请求了该字段的 pegged 订单。
"peggedPrice": "87523.83710000", // 订单当前 peg 到的价格。仅适用于已确定 peg 价格的订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期原因。仅当订单已过期时返回。
}
```
**注意:**
- 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
- 当仅发送 `orderId` 时,取消订单的执行(单个 Cancel 或作为 Cancel-Replace 的一部分)总是更快。发送 `origClientOrderId` 或同时发送 `orderId` + `origClientOrderId` 会稍慢。
**关于 `cancelRestrictions`**
* 如果 `cancelRestrictions` 值不是任何受支持的值,则错误将是:
```json
{
"code": -1145,
"msg": "Invalid cancelRestrictions"
}
```
* 如果订单没有通过 `cancelRestrictions` 的条件,错误将是:
```json
{
"code": -2011,
"msg": "Order was not canceled due to cancel restrictions."
}
```
### 撤销单一交易对的所有挂单 (TRADE)
```
DELETE /api/v3/openOrders
```
撤销单一交易对下所有挂单。这也包括了来自订单列表的挂单。
**权重:**
1
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
```javascript
[
{
"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": 1684804350069,
"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": 1688005070874,
"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": 1688005070874,
"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
**未成交的订单计数:**
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 | 参考 [追踪止盈止损(Trailing Stop)订单常见问题](faqs/trailing-stop-faq_CN.md)
icebergQty | DECIMAL | NO |
newOrderRespType | ENUM | NO | 指定响应类型:
指定响应类型 `ACK`, `RESULT`, or `FULL`; `MARKET` 与 `LIMIT` 订单默认为`FULL`, 其他默认为`ACK`。
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:[STP 模式](enums_CN.md#stpmodes)。
cancelRestrictions | ENUM | NO | 支持的值:
`ONLY_NEW` - 如果订单状态为 `NEW`,撤销将成功。
`ONLY_PARTIALLY_FILLED` - 如果订单状态为 `PARTIALLY_FILLED`,撤销将成功。 请参阅[关于 `cancelRestrictions`](#regarding-cancelrestrictions) 了解更多信息。
orderRateLimitExceededMode | ENUM | NO | 支持的值:
`DO_NOTHING`(默认值)- 仅在账户未超过未成交订单频率限制时,会尝试取消订单。
`CANCEL_ONLY` - 将始终取消订单。
pegPriceType | ENUM | NO | `PRIMARY_PEG` 或 `MARKET_PEG`。
参阅 关于挂钩订单参数的注意事项
pegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。
参阅 关于挂钩订单参数的注意事项
pegOffsetType | ENUM | NO | 仅支持 `PRICE_LEVEL`。
参阅 关于挂钩订单参数的注意事项
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
如同 `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 |
**响应:**
撤单和下单都成功,而且账户没有超出未成交订单计数时:
```javascript
{
"cancelResult": "SUCCESS",
"newOrderResult": "SUCCESS",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "DnLo3vTAQcjha43lAZhZ0y", // 请求的 cancelOrigClientOrderId
"orderId": 9,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "osxN3JXAtJvKvCqGeMWMVR", // 请求的 cancelNewClientOrderId
"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",
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"stopPrice": "0.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
},
"newOrderResponse": {
"symbol": "BTCUSDT",
"orderId": 10,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -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",
"workingTime": 1669277163808,
"fills": [],
"selfTradePreventionMode": "NONE",
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"stopPrice": "0.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
}
}
```
选择了 `STOP_ON_FAILURE` 而且账户没有超出未成交订单计数时, 撤单出现错误:
```javascript
{
"code": -2022,
"msg": "Order cancel-replace failed.",
"data": {
"cancelResult": "FAILURE",
"newOrderResult": "NOT_ATTEMPTED",
"cancelResponse": {
"code": -2011,
"msg": "Unknown order sent."
},
"newOrderResponse": null
}
}
```
选择 `cancelReplaceMode=ALLOW_FAILURE` 而且账户没有超出未成交订单计数时, 撤单和下单失败:
```javascript
{
"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."
}
}
}
```
撤单成功而且账户没有超出未成交订单计数时,下单失败:
```javascript
{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "BTCUSDT",
"origClientOrderId": "86M8erehfExV8z2RC8Zo8k", // 请求的 cancelOrigClientOrderId
"orderId": 3,
"orderListId": -1,
"clientOrderId": "G1kLo6aDv2KGNTFcjfTSFq", // 请求的 cancelNewClientOrderId
"transactTime": 1684804350068,
"price": "0.006123",
"origQty": "10000.000000",
"executedQty": "0.000000",
"origQuoteOrderQty": "0.000000",
"cummulativeQuoteQty": "0.000000",
"status": "CANCELED",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"selfTradePreventionMode": "NONE"
},
"newOrderResponse": {
"code": -2010,
"msg": "Order would immediately match and take."
}
}
}
```
选择 `ALLOW_FAILURE` 而且账户没有超出未成交订单计数时, 撤单出现错误:
```javascript
{
"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
}
}
}
```
选择 `orderRateLimitExceededMode=CANCEL_ONLY` 而且账户超出未成交订单计数时:
```javascript
{
"code": -2021,
"msg": "Order cancel-replace partially failed.",
"data": {
"cancelResult": "SUCCESS",
"newOrderResult": "FAILURE",
"cancelResponse": {
"symbol": "LTCBNB",
"origClientOrderId": "GKt5zzfOxRDSQLveDYCTkc", // 请求的 cancelOrigClientOrderId
"orderId": 64,
"orderListId": -1,
"clientOrderId": "loehOJF3FjoreUBDmv739R", // 请求的 cancelNewClientOrderId
"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."
}
}
}
```
选择 `orderRateLimitExceededMode=DO_NOTHING` 而且账户超出未成交订单计数时:
```javascript
{
"code": -1015,
"msg": "Too many new orders; current limit is 1 orders per 10 SECOND."
}
```
**注意:**
- 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
- 当仅发送 `orderId` 时,取消订单的执行(单个 Cancel 或作为 Cancel-Replace 的一部分)总是更快。发送 `origClientOrderId` 或同时发送 `orderId` + `origClientOrderId` 会稍慢。
### 修改订单并保留优先级 (TRADE)
```
PUT /api/v3/order/amend/keepPriority
```
由客户发送以减少其现有当前订单的原始数量。
这个请求将添加0个订单到 `EXCHANGE_MAX_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中。
请阅读 [保留优先权的修改订单常见问题](faqs/order_amend_keep_priority_CN.md) 了解更多信息。
**权重:**
4
**未成交的订单计数:**
0
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
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 | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
来自单个订单的响应:
```javascript
{
"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"
}
}
```
来自订单列表中单个订单的响应:
```javascript
{
"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",
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"stopPrice": "0.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
},
"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 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 发送新 OCO 订单 - 已弃用 (TRADE)
```
POST /api/v3/order/oco
```
发送新的 OCO。
- 价格限制:
- `SELL`: Limit price > 最后交易价格 > stop Price
- `BUY`: Limit price < 最后交易价格 < stop Price
- 数量限制:
- 两条腿的数量必须相同。
- 不过, `冰山` 交易的数量不一定相同
- `OCO` 将**2个订单**添加到 `EXCHANGE_MAX_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中。
**权重:**
1
**未成交的订单计数:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
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 | 用于使 `LIMIT_MAKER` 腿单成为冰山订单。
trailingDelta | LONG | NO |
stopClientOrderId | STRING | NO | 止损/止损限价单的唯一ID
stopPrice | DECIMAL | YES |
stopStrategyId | LONG | NO |
stopStrategyType | INT | NO | 不能低于 `1000000`
stopLimitPrice | DECIMAL | NO | 如果提供,须配合提交`stopLimitTimeInForce`
stopIcebergQty | DECIMAL | NO | 与 `STOP_LOSS_LIMIT` 腿单一起使用,使其成为冰山订单。
stopLimitTimeInForce | ENUM | NO | 有效值 `GTC`/`FOK`/`IOC`
newOrderRespType | ENUM | NO | JSON 响应格式。支持的数值:[订单返回类型](enums_CN.md#orderresponsetype)
selfTradePreventionMode | ENUM | NO | 允许的值取决于交易对的配置。支持的数值:[STP模式](enums_CN.md#stpmodes)
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
```javascript
{
"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"
}
]
}
```
### 新订单列表 - 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 会添加 **2个订单** 到 `EXCHANGE_MAX_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中。
**权重:**
1
**未成交的订单计数:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
listClientOrderId | STRING | NO | 整个 OCO order list 的唯一ID。 如果未发送则自动生成。 仅当前一个订单已填满或完全过期时,才会接受具有相同的`listClientOrderId`。 `listClientOrderId` 与 `aboveClientOrderId` 和 `belowClientOrderId` 不同。
side | ENUM | YES |
quantity | DECIMAL | YES | 两个订单的数量。
aboveType | ENUM | YES |
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)订单常见问题](faqs/trailing-stop-faq_CN.md)
aboveTimeInForce | ENUM | NO | 如果 `aboveType` 是 `STOP_LOSS_LIMIT` 或 `TAKE_PROFIT_LIMIT`,则为必填项。
aboveStrategyId | LONG | NO | 订单策略中上方订单的 ID。
aboveStrategyType | INT | NO | 上方订单策略的任意数值。小于 `1000000` 的值被保留,无法使用。
abovePegPriceType | ENUM | NO | `PRIMARY_PEG` 或 `MARKET_PEG`。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
abovePegOffsetType | ENUM | NO |
abovePegOffsetValue | INT | NO |
belowType | ENUM | YES | 支持值:`STOP_LOSS`, `STOP_LOSS_LIMIT`, `TAKE_PROFIT`, `TAKE_PROFIT_LIMIT`。
belowClientOrderId | STRING | NO | 下方订单的唯一ID。 如果未发送则自动生成。
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)订单常见问题](faqs/trailing-stop-faq_CN.md)
belowTimeInForce | ENUM | NO | 如果 `belowType` 是 `STOP_LOSS_LIMIT` 或 `TAKE_PROFIT_LIMIT`,则为必须配合提交的值。
belowStrategyId | LONG | NO | 订单策略中下方订单的 ID。
belowStrategyType | INT | NO | 下方订单策略的任意数值。小于 `1000000` 的值被保留,无法使用。
belowPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
belowPegOffsetType | ENUM | NO |
belowPegOffsetValue | INT | NO |
newOrderRespType | ENUM | NO | 响应格式可选值: `ACK`, `RESULT`, `FULL`。
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对上的配置。 支持值:[STP 模式](enums_CN.md#stpmodes)
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
```javascript
{
"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"
}
]
}
```
### 新订单列表 - 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
**未成交的订单计数:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 `listClientOrderId` 值的新订单列表。 `listClientOrderId` 与 `workingClientOrderId` 和 `pendingClientOrderId` 不同。
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: [订单返回类型](enums_CN.md#orderresponsetype)
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。参考 [STP 模式](enums_CN.md#stpmodes)
workingType | ENUM | YES | 支持的数值: `LIMIT`, `LIMIT_MAKER`
workingSide | ENUM | YES | 支持的数值: [订单方向](enums_CN.md#side)
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。
workingPrice | DECIMAL | YES |
workingQuantity | DECIMAL | YES | 用于设置生效订单的数量。
workingIcebergQty | DECIMAL | NO | 仅当 `workingTimeInForce` 为 `GTC` 或 `workingType` 为 `LIMIT_MAKER` 时,才能使用此功能。
workingTimeInForce | ENUM | NO | 支持的数值: [生效时间](enums_CN.md#timeinforce)
workingStrategyId | LONG | NO | 订单策略中用于标识生效订单的 ID。
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 `1000000` 的值被保留,无法使用。
pendingType | ENUM | YES | 支持的数值: [订单类型](enums_CN.md#ordertypes) 请注意,系统不支持使用 `quoteOrderQty` 的 `MARKET` 订单。
workingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
workingPegOffsetType | ENUM | NO |
workingPegOffsetValue | INT | NO |
pendingSide | ENUM | YES | 支持的数值: [订单方向](enums_CN.md#side)
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 | 支持的数值: [生效时间](enums_CN.md#timeinforce)
pendingStrategyId | LONG | NO | 订单策略中用于标识待处理订单的 ID。
pendingStrategyType | INT | NO | 用于标识待处理订单策略的任意数值。 小于 `1000000` 的值被保留,无法使用。
pendingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingPegOffsetType | ENUM | NO |
pendingPegOffsetValue | INT | NO |
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**根据 `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`|
**响应:**
```javascript
{
"orderListId": 0,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "yl2ERtcar1o25zcWtqVBTC",
"transactionTime": 1712289389158,
"symbol": "LTCBTC",
"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 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 新订单列表 - OTOCO (TRADE)
```
POST /api/v3/orderList/otoco
```
发送一个新的 OTOCO 订单。
- 一个 OTOCO 订单(One-Triggers-One-Cancels-the-Other)是一个包含了三个订单的订单列表。
- 第一个订单被称为**生效订单**,必须为 `LIMIT` 或 `LIMIT_MAKER` 类型的订单。最初,订单簿上只有生效订单。
- 生效订单的行为与此一致 [OTO](#order-list-oto)
- 一个OTOCO订单有两个待处理订单(pending above 和 pending below),它们构成了一个 OCO 订单列表。只有当生效订单**完全成交**时,待处理订单们才会被自动下单。
- 待处理上方(pending above)订单和待处理下方(pending below)订单都遵循与 OCO 订单列表相同的规则 [OrderList OCO](#order-list-oco)。
- `OTOCO` 在 `EXCHANGE_MAX_NUM_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器的基础上添加**3个订单**。
**权重:**
1
**未成交的订单计数:**
3
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
listClientOrderId | STRING | NO | 整个订单列表的唯一ID。 如果未发送则自动生成。 仅当前一个订单列表已填满或完全过期时,才会接受含有相同 `listClientOrderId` 值的新订单列表。 `listClientOrderId` 与 `workingClientOrderId`、`pendingAboveClientOrderId` 和 `pendingBelowClientOrderId` 不同。
newOrderRespType | ENUM | NO | 用于设置JSON响应的格式。 支持的数值: [订单返回类型](enums_CN.md#orderresponsetype)
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对上的配置。参考 [STP 模式](enums_CN.md#stpmodes)
workingType | ENUM | YES | 支持的数值: `LIMIT`, `LIMIT_MAKER`
workingSide | ENUM | YES | 支持的数值: [订单方向](enums_CN.md#side)
workingClientOrderId | STRING | NO | 用于标识生效订单的唯一ID。 如果未发送则自动生成。
workingPrice | DECIMAL | YES |
workingQuantity | DECIMAL | YES | 用于设置生效订单的数量。
workingIcebergQty | DECIMAL | NO | 仅当 `workingTimeInForce` 为 `GTC` 或 `workingType` 为 `LIMIT_MAKER` 时,才能使用此功能。
workingTimeInForce | ENUM | NO | 支持的数值: [生效时间](enums_CN.md#timeinforce)
workingStrategyId | LONG | NO | 订单策略中用于标识生效订单的 ID。
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数值。 小于 `1000000` 的值被保留,无法使用。
workingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
workingPegOffsetType | ENUM | NO |
workingPegOffsetValue | INT | NO |
pendingSide | ENUM | YES | 支持的数值: [订单方向](enums_CN.md#side)
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)订单常见问题](faqs/trailing-stop-faq_CN.md)
pendingAboveIcebergQty | DECIMAL | NO | 只有当 `pendingAboveTimeInForce` 为 `GTC` 或 `pendingAboveType` 为 `LIMIT_MAKER` 时才能使用。
pendingAboveTimeInForce | ENUM | NO | 如果 `pendingAboveType` 是 `STOP_LOSS_LIMIT` 或 `TAKE_PROFIT_LIMIT`,则为必填项。
pendingAboveStrategyId | LONG | NO | 订单策略中用于标识待处理上方订单的 ID。
pendingAboveStrategyType | INT | NO | 用于标识待处理上方订单策略的任意数值。 小于 `1000000` 的值被保留,无法使用。
pendingAbovePegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingAbovePegOffsetType | ENUM | NO |
pendingAbovePegOffsetValue | INT | NO |
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 | 参见 [追踪止盈止损(Trailing Stop)订单常见问题](faqs/trailing-stop-faq_CN.md)
pendingBelowIcebergQty | DECIMAL | NO | 只有当 `pendingBelowTimeInForce` 为 `GTC` 或 `pendingBelowType` 为 `LIMIT_MAKER` 时才能使用。
pendingBelowTimeInForce | ENUM | NO | 如果 `pendingBelowType` 是 `STOP_LOSS_LIMIT` 或 `TAKE_PROFIT_LIMIT`,则为必须配合提交的值。
pendingBelowStrategyId | LONG | NO | 订单策略中用于标识待处理下方订单的 ID。
pendingBelowStrategyType | INT | NO | 用于标识待处理下方订单策略的任意数值。 小于 `1000000` 的值被保留,无法使用。
pendingBelowPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingBelowPegOffsetType | ENUM | NO |
pendingBelowPegOffsetValue | INT | NO |
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**根据 `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` |
**响应:**
```javascript
{
"orderListId": 1,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "RumwQpBaDctlUu5jyG5rs0",
"transactionTime": 1712291372842,
"symbol": "LTCBTC",
"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 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 新订单列表 - OPOCO (TRADE)
```
POST /api/v3/orderList/opoco
```
发送一个 [OPOCO](faqs/opo_CN.md) 订单。
**权重:**
1
**未成交的订单计数:**
3
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
listClientOrderId | STRING | NO | 订单列表中的唯一 ID。如果未发送,则自动生成。只有当之前的同一 `listClientOrderId` 的订单列表已成交或完全过期后,才接受新的同一 `listClientOrderId` 的订单列表。`listClientOrderId` 与 `workingClientOrderId`、`pendingAboveClientOrderId` 和 `pendingBelowClientOrderId` 不同。
newOrderRespType | ENUM | NO | JSON 响应格式。支持的数值:[订单返回类型](enums_CN.md#orderresponsetype)
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对的配置。支持的数值:[STP模式](enums_CN.md#stpmodes)
workingType | ENUM | YES |
workingSide | ENUM | YES | 支持的数值:[订单方向](enums_CN.md#side)
workingClientOrderId | STRING | NO | 生效订单中挂单的任意唯一 ID。如果未发送,则自动生成。
workingPrice | DECIMAL | YES | 生效订单价格
workingQuantity | DECIMAL | YES | 设置生效订单的数量
workingIcebergQty | DECIMAL | NO | 仅当 `workingTimeInForce` 为 `GTC` 或 `workingType` 为 `LIMIT_MAKER` 时可用
workingTimeInForce | ENUM | NO | 支持的数值:[生效时间](enums_CN.md#timeinforce)
workingStrategyId | LONG | NO | 用于标识订单策略中生效订单的任意数字值
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数字值。小于 `1000000` 的值为保留值,不能使用。
workingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
workingPegOffsetType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
workingPegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingSide | ENUM | YES | 支持的数值:[订单方向](enums_CN.md#side)
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 | 详见 [追踪止盈止损常见问题](faqs/trailing-stop-faq_CN.md)
pendingAboveIcebergQty | DECIMAL | NO | 仅当 `pendingAboveTimeInForce` 为 `GTC` 或 `pendingAboveType` 为 `LIMIT_MAKER` 时可用。
pendingAboveTimeInForce | ENUM | NO | 如果 `pendingAboveType` 是 `STOP_LOSS_LIMIT` 或 `TAKE_PROFIT_LIMIT`,则为必填项。
pendingAboveStrategyId | LONG | NO | 用于标识订单策略中待处理上方订单的任意数字值。
pendingAboveStrategyType | INT | NO | 用于标识待处理上方订单策略的任意数字值。小于 `1000000` 的值为保留值,不能使用。
pendingAbovePegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingAbovePegOffsetType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingAbovePegOffsetValue | INT | NO | 用于挂钩的价格水平(最大值:100)。 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
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 | 详见 [追踪止盈止损常见问题](faqs/trailing-stop-faq_CN.md)
pendingBelowIcebergQty | DECIMAL | NO | 仅当 `pendingBelowTimeInForce` 为 `GTC` 或 `pendingBelowType` 为 `LIMIT_MAKER` 时可用。
pendingBelowTimeInForce | ENUM | NO | 支持的数值:[生效时间](enums_CN.md#timeinforce)
pendingBelowStrategyId | LONG | NO | 用于标识订单策略中待处理下方订单的任意数字值。
pendingBelowStrategyType | INT | NO | 用于标识待处理下方订单策略的任意数字值。小于 `1000000` 为保留值,不能使用。
pendingBelowPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingBelowPegOffsetType | ENUM | NO |
pendingBelowPegOffsetValue | INT | NO |
recvWindow | DECIMAL | NO | 该值不能大于 `60000`。支持最多三位小数精度(例如 6000.346),以便指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
```javascript
{
"orderListId": 2,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "bcedxMpQG6nFrZUPQyshoL",
"transactionTime": 1763000506354,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 9,
"clientOrderId": "OLSBhMWaIlLSzZ9Zm7fnKB"
},
{
"symbol": "BTCUSDT",
"orderId": 10,
"clientOrderId": "mfif39yPTHsB3C0FIXznR2"
},
{
"symbol": "BTCUSDT",
"orderId": 11,
"clientOrderId": "yINkaXSJeoi3bU5vWMY8Z8"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 9,
"orderListId": 2,
"clientOrderId": "OLSBhMWaIlLSzZ9Zm7fnKB",
"transactTime": 1763000506354,
"price": "102496.00000000",
"origQty": "0.00170000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1763000506354,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 10,
"orderListId": 2,
"clientOrderId": "mfif39yPTHsB3C0FIXznR2",
"transactTime": 1763000506354,
"price": "101613.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "STOP_LOSS_LIMIT",
"side": "SELL",
"stopPrice": "10100.00000000",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 11,
"orderListId": 2,
"clientOrderId": "yINkaXSJeoi3bU5vWMY8Z8",
"transactTime": 1763000506354,
"price": "104261.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "LIMIT_MAKER",
"side": "SELL",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}
```
**注意:** 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 取消订单列表 (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 | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**其他注意点:**
- 取消订单列表中的单个订单将取消整个订单列表.
- 当同时提供 orderListId 和 listClientOrderId 两个参数时,系统首先将会使用 orderListId 来搜索订单。然后, 查找结果中的 listClientOrderId 的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。
**响应:**
```javascript
{
"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", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"selfTradePreventionMode": "NONE"
},
{
"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",
"selfTradePreventionMode": "NONE"
}
]
}
```
### 下 SOR 订单 (TRADE)
```
POST /api/v3/sor/order
```
发送使用智能订单路由 (SOR) 的新订单。
这个请求会把1个订单添加到 `EXCHANGE_MAX_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中。
参阅 [智能订单路由 (SOR)](faqs/sor_faq_CN.md) 了解更多详情。
**权重:**
1
**未成交的订单计数:**
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 | 指定响应类型:
selfTradePreventionMode | ENUM | NO | 允许的 ENUM 取决于交易对的配置。支持的值有:[STP 模式](enums_CN.md#stpmodes)。
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**请注意:** `POST /api/v3/sor/order` 只支持 `限价` 和 `市场` 单, 并不支持 `quoteOrderQty`。
**响应:**
```javascript
{
"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|
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
computeCommissionRates | BOOLEAN | NO | 默认值: false。
symbol | STRING | YES |
side | ENUM | YES | 详见枚举定义:[订单方向](enums_CN.md#side)
type | ENUM | YES | 详见枚举定义:[订单类型](enums_CN.md#ordertypes)
timeInForce | ENUM | NO | 详见枚举定义:[生效时间](enums_CN.md#timeinforce)
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 模式](enums_CN.md#stpmodes)。
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。 支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存
**响应:**
没有 `computeCommissionRates`
```javascript
{}
```
有 `computeCommissionRates`
```javascript
{
// 订单交易的标准佣金率。
"standardCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// 订单交易的税率。
"taxCommissionForOrder": {
"maker": "0.00000112",
"taker": "0.00000114"
},
// 以BNB支付时的标准佣金折扣。
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.25000000"
}
}
```
### 新订单列表 - OPO (TRADE)
```
POST /api/v3/orderList/opo
```
发送一个新的 [OPO](faqs/opo_CN.md) 订单。
- OPO 会向 `EXCHANGE_MAX_NUM_ORDERS` 过滤器和 `MAX_NUM_ORDERS` 过滤器中添加 2 个订单。
**权重:**
1
**未成交的订单计数:**
2
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
listClientOrderId | STRING | NO | 订单列表中的唯一 ID。如果未发送,则自动生成。只有当之前的同一 `listClientOrderId` 的订单列表已成交或完全过期后,才接受新的同一 `listClientOrderId` 的订单列表。`listClientOrderId` 与 `workingClientOrderId` 和 `pendingClientOrderId` 不同。
newOrderRespType | ENUM | NO | JSON 响应格式。支持的数值:[订单返回类型](enums_CN.md#orderresponsetype)
selfTradePreventionMode | ENUM | NO | 允许的数值取决于交易对的配置。支持的数值:[STP模式](enums_CN.md#stpmodes)
workingType | ENUM | YES | 支持的数值:`LIMIT`,`LIMIT_MAKER`
workingSide | ENUM | YES | 支持的数值:[订单方向](enums_CN.md#side)
workingClientOrderId | STRING | NO | 生效订单中挂单的任意唯一 ID。如果未发送,则自动生成。
workingPrice | DECIMAL | YES | 生效订单价格
workingQuantity | DECIMAL | YES | 设置生效订单的数量
workingIcebergQty | DECIMAL | NO | 仅当 `workingTimeInForce` 为 `GTC` 或 `workingType` 为 `LIMIT_MAKER` 时可用
workingTimeInForce | ENUM | NO | 支持的数值:[生效时间](enums_CN.md#timeinforce)
workingStrategyId | LONG | NO | 用于标识订单策略中生效订单的任意数字值
workingStrategyType | INT | NO | 用于标识生效订单策略的任意数字值。小于 `1000000` 的值为保留值,不能使用。
workingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
workingPegOffsetType | ENUM | NO |
workingPegOffsetValue | INT | NO |
pendingType | ENUM | YES | 支持的数值:[订单类型](enums_CN.md#ordertypes)。注意,不支持使用 `quoteOrderQty` 的 `MARKET` 订单。
pendingSide | ENUM | YES | 支持的数值:[订单方向](enums_CN.md#side)
pendingClientOrderId | STRING | NO | 待处理订单中挂单的任意唯一 ID。如果未发送,则自动生成。
pendingPrice | DECIMAL | NO | 待处理订单价格
pendingStopPrice | DECIMAL | NO | 待处理订单止损价格
pendingTrailingDelta | DECIMAL | NO | 待处理订单跟踪止损差值
pendingIcebergQty | DECIMAL | NO | 仅当 `pendingTimeInForce` 为 `GTC` 或 `pendingType` 为 `LIMIT_MAKER` 时可用
pendingTimeInForce | ENUM | NO | 支持的数值:[生效时间](enums_CN.md#timeinforce)
pendingStrategyId | LONG | NO | 用于标识订单策略中待处理订单的任意数字值
pendingStrategyType | INT | NO | 用于标识待处理订单策略的任意数字值。小于 `1000000` 的值为保留值,不能使用。
pendingPegPriceType | ENUM | NO | 参阅 [关于挂钩订单参数的注意事项](faqs/pegged_orders_CN.md)
pendingPegOffsetType | ENUM | NO |
pendingPegOffsetValue | INT | NO |
recvWindow | DECIMAL | NO | 最大值: 60000。
该值不能大于 `60000`。支持最多三位小数精度(例如 6000.346),以便指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 撮合引擎
**响应:**
```javascript
{
"orderListId": 0,
"contingencyType": "OTO",
"listStatusType": "EXEC_STARTED",
"listOrderStatus": "EXECUTING",
"listClientOrderId": "H94qCqO27P74OEiO4X8HOG",
"transactionTime": 1762998011671,
"symbol": "BTCUSDT",
"orders": [
{
"symbol": "BTCUSDT",
"orderId": 2,
"clientOrderId": "JX6xfdjo0wysiGumfHNmPu"
},
{
"symbol": "BTCUSDT",
"orderId": 3,
"clientOrderId": "2ZJCY0IjOhuYIMLGN8kU8S"
}
],
"orderReports": [
{
"symbol": "BTCUSDT",
"orderId": 2,
"orderListId": 0,
"clientOrderId": "JX6xfdjo0wysiGumfHNmPu",
"transactTime": 1762998011671,
"price": "102264.00000000",
"origQty": "0.00060000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"workingTime": 1762998011671,
"selfTradePreventionMode": "NONE"
},
{
"symbol": "BTCUSDT",
"orderId": 3,
"orderListId": 0,
"clientOrderId": "2ZJCY0IjOhuYIMLGN8kU8S",
"transactTime": 1762998011671,
"price": "0.00000000",
"executedQty": "0.00000000",
"origQuoteOrderQty": "0.00000000",
"cummulativeQuoteQty": "0.00000000",
"status": "PENDING_NEW",
"timeInForce": "GTC",
"type": "MARKET",
"side": "SELL",
"workingTime": -1,
"selfTradePreventionMode": "NONE"
}
]
}
```
**注意:** 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
## 账户接口
### 账户信息 (USER_DATA)
```
GET /api/v3/account
```
获取当前账户信息。
**权重:**
20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
omitZeroBalances | BOOLEAN | NO | 默认值: false。
如果`true`,将隐藏所有零余额。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存 => 数据库
**响应:**
```javascript
{
"makerCommission": 15,
"takerCommission": 15,
"buyerCommission": 0,
"sellerCommission": 0,
"commissionRates": {
"maker": "0.00150000",
"taker": "0.00150000",
"buyer": "0.00000000",
"seller": "0.00000000"
},
"canTrade": true,
"canWithdraw": true,
"canDeposit": true,
"brokered": false,
"requireSelfTradePrevention": false,
"preventSor": false,
"updateTime": 123456789,
"accountType": "SPOT",
"balances": [
{
"asset": "BTC",
"free": "4723846.89208129",
"locked": "0.00000000"
},
{
"asset": "LTC",
"free": "4763368.68006011",
"locked": "0.00000000"
}
],
"permissions": [
"SPOT"
],
"uid": 354937868
}
```
### 查询订单 (USER_DATA)
```
GET /api/v3/order
```
查询订单状态
**权重:**
4
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
orderId | LONG | NO |
origClientOrderId | STRING | NO |
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存 => 数据库
- 至少需要发送 `orderId` 与 `origClientOrderId`中的一个。
- 当同时提供 `orderId` 和 `origClientOrderId` 两个参数时,系统首先将会使用 `orderId` 来搜索订单。然后, 查找结果中的 `origClientOrderId` 的值将会被用来验证订单。如果两个条件都不满足,则请求将被拒绝。
- 某些历史订单的 `cummulativeQuoteQty` 会 < 0, 表示当前暂无该数据。
**响应:**
```javascript
{
"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.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"time": 1499827319559, // 订单时间
"updateTime": 1499827319559, // 最后更新时间
"isWorking": true, // 订单是否出现在orderbook中
"workingTime": 1499827319559, // 订单添加到 order book 的时间
"selfTradePreventionMode": "NONE", // 如何处理自我交易模式
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
}
```
**注意:** 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 查看账户当前挂单 (USER_DATA)
```
GET /api/v3/openOrders
```
请小心使用不带symbol参数的调用
**权重:**
带 symbol: 6;不带 symbol: 80
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | NO |
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存 => 数据库
- 不带symbol参数,会返回所有交易对的挂单
**响应:**
```javascript
[
{
"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.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"time": 1499827319559,
"updateTime": 1499827319559,
"isWorking": true,
"workingTime": 1499827319559,
"selfTradePreventionMode": "NONE",
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
}
]
```
**注意:** 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 查询所有订单(包括历史订单) (USER_DATA)
```
GET /api/v3/allOrders
```
获取all 账户 订单; active, canceled, 或 filled.
**权重:**
20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
orderId | LONG | NO |
startTime | LONG | NO |
endTime | LONG | NO |
limit | INT | NO | 默认值: 500; 最大值: 1000。
recvWindow | DECIMAL | NO | 最大值为 `60000` 毫秒。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
- **注意:** * 如设置 `orderId` , 订单量将 >= `orderId`。否则将返回最新订单。
- 一些历史订单 `cummulativeQuoteQty` < 0, 是指数据此时不存在。
- 如果设置 `startTime` 和 `endTime`, `orderId` 就不需要设置。
- `startTime`和`endTime`之间的时间不能超过 24 小时。 **数据源:** 数据库
**响应:**
```javascript
[
{
"symbol": "LTCBTC",
"orderId": 1,
"orderListId": -1, // 除非此单是订单列表的一部分, 否则此值为 -1
"clientOrderId": "myOrder1",
"price": "0.1",
"origQty": "1.0",
"executedQty": "0.0",
"cummulativeQuoteQty": "0.0",
"status": "NEW",
"timeInForce": "GTC",
"type": "LIMIT",
"side": "BUY",
"stopPrice": "0.00000000", // 出现在 STOP_LOSS, TAKE_PROFIT, STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 订单中。
"icebergQty": "0.00000000", // 仅在请求中发送了 icebergQty 参数时出现。
"time": 1499827319559,
"updateTime": 1499827319559,
"isWorking": true,
"origQuoteOrderQty": "0.000000",
"workingTime": 1499827319559,
"selfTradePreventionMode": "NONE",
"preventedMatchId": 0, // 仅在因 STP 导致订单失效时出现。
"preventedQuantity": "1.200000", // 因 STP 导致订单失效的数量。
"strategyId": 1, // 仅在下单时提供了 strategyId 参数时出现。
"strategyType": 1000000, // 仅在下单时提供了 strategyType 参数时出现。
"trailingDelta": 10, // 订单激活前所需的价格变动。
"trailingTime": -1, // 追踪单被激活和跟踪价格变化的时间。
"usedSor": true, // 用于确定订单是否使用SOR的字段。
"workingFloor": "SOR", // 用以定义订单是通过 SOR 还是由订单簿成交的。
"pegPriceType": "PRIMARY_PEG", // 挂钩价格类型。仅用于挂钩订单。
"pegOffsetType": "PRICE_LEVEL", // 挂钩价格偏移类型。如若需要,仅用于挂钩订单。
"pegOffsetValue": 5, // 挂钩价格偏移值。如若需要,仅用于挂钩订单。
"peggedPrice": "87523.83710000", // 订单对应的当前挂钩价格。一旦确定,仅用于挂钩订单。
"expiryReason": "INSUFFICIENT_LIQUIDITY" // 订单过期的原因。当订单过期时出现。
}
]
```
**注意:** 上面的 payload 没有显示所有可以出现的字段,更多请看 [订单响应中的特定条件时才会出现的字段](rest-api_CN.md#conditional-fields-in-order-responses) 部分。
### 查询订单列表 (USER_DATA)
```
GET /api/v3/orderList
```
根据提供的可选参数检索特定的订单列表。
**权重:**
4
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
orderListId | LONG | NO | 通过 `orderListId` 获取订单列表。必须提供 `orderListId` 或 `origClientOrderId`。
origClientOrderId | STRING | NO | 通过 `listClientOrderId` 查询订单列表。`orderListId` 或 `origClientOrderId` 必须被提供。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**响应:**
```javascript
{
"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 | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**响应:**
```javascript
[
{
"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 | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存 => 数据库
**响应:**
```javascript
[
{
"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"
}
]
}
]
```
### 账户成交历史 (USER_DATA)
```
GET /api/v3/myTrades
```
获取某交易对的成交历史
**权重:**
条件| 权重|
---| ---
|没有 orderId|20|
|有 orderId|5|
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
orderId | LONG | NO | 必须要和参数`symbol`一起使用。
startTime | LONG | NO |
endTime | LONG | NO |
fromId | LONG | NO | 返回该fromId之后的成交,缺省返回最近的成交
limit | INT | NO | 默认值: 500; 最大值: 1000。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**备注:**
- 如果设置了 `fromId`, 会返回ID大于此 `fromId` 的交易. 不然则会返回最近的交易。
- `startTime` 和 `endTime` 设置的时间间隔不能超过24小时。
- 支持的所有参数组合:
- `symbol`
- `symbol` + `orderId`
- `symbol` + `startTime`
- `symbol` + `endTime`
- `symbol` + `fromId`
- `symbol` + `startTime` + `endTime`
- `symbol`+ `orderId` + `fromId`
**响应:**
```javascript
[
{
"symbol": "BNBBTC",
"id": 28457,
"orderId": 100234,
"orderListId": -1,
"price": "4.00000100",
"qty": "12.00000000",
"quoteQty": "48.000012",
"commission": "10.10000000",
"commissionAsset": "BNB",
"time": 1499865549590,
"isBuyer": true,
"isMaker": false,
"isBestMatch": true
}
]
```
### 查询未成交的订单计数 (USER_DATA)
```
GET /api/v3/rateLimit/order
```
显示用户在所有时间间隔内的未成交订单计数。
**权重:**
40
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存
**响应:**
```javascript
[
{
"rateLimitType": "ORDERS",
"interval": "SECOND",
"intervalNum": 10,
"limit": 50,
"count": 0
},
{
"rateLimitType": "ORDERS",
"interval": "DAY",
"intervalNum": 1,
"limit": 160000,
"count": 0
}
]
```
### 获取 Prevented Matches (USER_DATA)
```
GET /api/v3/myPreventedMatches
```
获取因 STP 而过期的订单列表。
这些是支持的组合:
- `symbol` + `preventedMatchId`
- `symbol` + `orderId`
- `symbol` + `orderId` + `fromPreventedMatchId` (`limit` 默认为 500)
- `symbol` + `orderId` + `fromPreventedMatchId` + `limit`
**权重:**
情况 | 权重
---- | -----
如果 `symbol` 不合法 | 2
通过 `preventedMatchId` 查询 | 2
通过 `orderId` 查询 | 20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
preventedMatchId | LONG | NO |
orderId | LONG | NO |
fromPreventedMatchId | LONG | NO |
limit | INT | NO | 默认值: 500; 最大值: 1000。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**响应:**
```javascript
[
{
"symbol": "BTCUSDT",
"preventedMatchId": 1,
"takerOrderId": 5,
"makerSymbol": "BTCUSDT",
"makerOrderId": 3,
"tradeGroupId": 1,
"selfTradePreventionMode": "EXPIRE_MAKER",
"price": "1.100000",
"makerPreventedQuantity": "1.300000",
"transactTime": 1669101687094
}
]
```
### 查询分配结果 (USER_DATA)
```
GET /api/v3/myAllocations
```
检索由 SOR 订单生成引起的分配结果。
**权重:**
20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
startTime | LONG | NO |
endTime | LONG | NO |
fromAllocationId | INT | NO |
limit | INT | NO | 默认值: 500; 最大值: 1000。
orderId | LONG | NO |
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
支持的参数组合:
参数 | 响应 |
------------------------------------------- | -------- |
`symbol` | 按从最旧到最新排序的分配 |
`symbol` + `startTime` | 从 `startTime` 开始的最旧的分配 |
`symbol` + `endTime` | 到 `endTime` 为止的最新的分配 |
`symbol` + `startTime` + `endTime` | 在指定时间范围内的分配 |
`symbol` + `fromAllocationId` | 从指定 `AllocationId` 开始的分配 |
`symbol` + `orderId` | 按从最旧到最新排序并和特定订单关联的分配 |
`symbol` + `orderId` + `fromAllocationId` | 从指定 `AllocationId` 开始并和特定订单关联的分配 |
**注意:** `startTime` 和 `endTime` 之间的时间不能超过 24 小时。
**响应:**
```javascript
[
{
"symbol": "BTCUSDT",
"allocationId": 0,
"allocationType": "SOR",
"orderId": 1,
"orderListId": -1,
"price": "1.00000000",
"qty": "5.00000000",
"quoteQty": "5.00000000",
"commission": "0.00000000",
"commissionAsset": "BTC",
"time": 1687506878118,
"isBuyer": true,
"isMaker": false,
"isAllocator": false
}
]
```
### 查询佣金费率 (USER_DATA)
```
GET /api/v3/account/commission
```
获取当前账户的佣金费率。
**权重:**
20
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**响应:**
```javascript
{
"symbol": "BTCUSDT",
// 订单交易的标准佣金率。
"standardCommission": {
"maker": "0.00000010",
"taker": "0.00000020",
"buyer": "0.00000030",
"seller": "0.00000040"
},
// 订单交易的特殊佣金率。
"specialCommission": {
"maker": "0.01000000",
"taker": "0.02000000",
"buyer": "0.03000000",
"seller": "0.04000000"
},
// 订单交易的税率。
"taxCommission": {
"maker": "0.00000112",
"taker": "0.00000114",
"buyer": "0.00000118",
"seller": "0.00000116"
},
// 使用BNB支付时的佣金折扣。
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.75000000" // 当用BNB支付佣金时,在标准佣金上按此比率打折
}
}
```
### 查询改单 (USER_DATA)
```
GET /api/v3/order/amendments
```
查询对一个订单的所有改单操作。
**权重:**
4
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
orderId | LONG | YES |
fromExecutionId | LONG | NO |
limit | LONG | NO | 默认值: 500; 最大值: 1000。
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 数据库
**响应:**
```javascript
[
{
"symbol": "BTCUSDT",
"orderId": 9,
"executionId": 22,
"origClientOrderId": "W0fJ9fiLKHOJutovPK3oJp",
"newClientOrderId": "UQ1Np3bmQ71jJzsSDW9Vpi",
"origQty": "5.00000000",
"newQty": "4.00000000",
"time": 1741669661670
},
{
"symbol": "BTCUDST",
"orderId": 9,
"executionId": 25,
"origClientOrderId": "UQ1Np3bmQ71jJzsSDW9Vpi",
"newClientOrderId": "5uS0r35ohuQyDlCzZuYXq2",
"origQty": "4.00000000",
"newQty": "3.00000000",
"time": 1741672924895
}
]
```
### 查询相关过滤器 (USER_DATA)
```
GET /api/v3/myFilters
```
用于检索一个账户上指定交易对的 [filters](filters_CN.md) 列表。这是唯一一个目前会显示账户是否应用了 [`MAX_ASSET`](filters_CN.md#max_asset) 过滤器的端点。
**权重:**
40
**参数:**
名称 | 类型 | 是否必须 | 描述
------------ | ------------ | ------------ | ------------
symbol | STRING | YES |
recvWindow | DECIMAL | NO | 最大值: 60000。
支持最多三位小数的精度(例如 6000.346),以便可以指定微秒。
timestamp | LONG | YES | 用于请求签名的 Unix 时间戳,单位为毫秒或微秒。该值必须反映客户端当前时间,并会在签名接口中由服务器进行校验。
**数据源:** 缓存
**响应:**
```javascript
{
"exchangeFilters": [
{
"filterType": "EXCHANGE_MAX_NUM_ORDERS",
"maxNumOrders": 1000
}
],
"symbolFilters": [
{
"filterType": "PRICE_FILTER",
"minPrice": "0.00000100",
"maxPrice": "100000.00000000",
"tickSize": "0.00000100"
}
],
"assetFilters": [
{
"filterType": "MAX_ASSET",
"limit": "100.00000000",
"asset": "BNB"
}
],
"rateLimits": [
{
"rateLimitType": "REQUEST_WEIGHT",
"interval": "MINUTE",
"intervalNum": 1,
"limit": 6000,
"count": 321
}
]
}
```