# 现货交易(做市商)

## API 介绍 <a href="#api-jie-shao" id="api-jie-shao"></a>

### **接入准备** <a href="#jie-ru-zhun-bei" id="jie-ru-zhun-bei"></a>

#### **交易对**

交易对由基础币种和报价币种组成。以交易对 BTC/USDT 为例，BTC 为商品币种，USDT 为计价币种。

#### **申请API Key**

创建成功后请务必记住以下信息：

* `Access Key` API 访问密钥
* `Secret Key` 签名认证加密所使用的密钥（仅申请时可见）

#### **接口鉴权**

公共接口可用于获取基础信息和行情数据。公共接口无需认证即可调用。

私有接口可用于交易管理和账户管理。每个私有请求必须使用您的API Key进行签名验证。

#### **接入URL**

**REST API**

<https://api.hibt0.com/open-api>

#### **签名认证**

API 请求在通过 internet 传输的过程中极有可能被篡改，为了确保请求未被更改，除公共接口（基础信息，行情数据）外的私有接口均必须使用您的 API Key 做加密处理，以校验参数或参数值在传输途中是否发生了更改。 每一个API Key需要有适当的权限才能访问相应的接口，每个新创建的API Key都需要分配权限。在使用接口前，请查看每个接口的权限类型，并确认你的API Key有相应的权限。

一个合法的请求所需要的内容：

* 方法请求地址：即访问服务器地址 <https://api.hibt0.com/open-api。>
* API 访问密钥（X-ACCESS-KEY）：您申请的 API Key 中的 Access Key。
* 必选和可选参数：每个方法都有一组用于定义 API 调用的必需参数和可选参数。可以在每个方法的说明中查看这些参数及其含义。
* 签名：加密计算得出的值，用于确保签名有效和未被篡改，**为了您 API Key 的安全，一次参数签名 5 分钟后会过期**。
* **签名必要参数\*\*：需要签名认证的接口，必须添加 reqTime 参数（传值为服务器最新时间，可通过`/v1/common/systemTime` 接口获取）。**

#### **加密方式**

规范要计算签名的请求 因为使用 HMAC 进行签名计算时，使用不同内容计算得到的结果会完全不同。所以在进行签名计算前，请先对请求进行规范化处理。下面以查询某订单详情请求为例进行说明：

下单请求URL

```
https://api.hibt0.com/open-api/v1/trade/order?amount=0.12&direction=ASK&price=7126.4285&symbol=BTC_USDT&reqTime=1672502400000
```

对参数按照ASCII码顺序进行排序

```
amount=0.12&direction=ASK&price=7126.4285&reqTime=1672502400000&symbol=BTC_USDT
```

将排完序的请求参数使用secretKey 进行HMAC SHA256进行加密，得到的结果

```
550ac73ace8c34372e0e1dd6631e890c7bd16697af8bb4e2908e966b50aba4e0
```

#### **构建 http 请求使用**

1. `使用 X-ACCESS-KEY 存储access key信息，并在 header 中进行参数传递`
2. `使用 X-SIGNATURE 存储生成的签名信息，并在 header 中进行参数传递`

#### **请求方式**

目前只有两种方法：GET和POST

* GET请求：所有的参数都在路径参数里
* POST请求，所有参数以form-data格式发送在请求主体（body）里

#### **返回格式**

所有的接口都是JSON格式。在JSON最上层有三个字段：`message`, `code` 和 `data`。前两个字段表示请求状态和信息，实际的业务数据在`data`字段里。

```
{
  "message": "success",
  "code": "0",
  "data": ""
}
```

### **常见错误码** <a href="#chang-jian-cuo-wu-ma" id="chang-jian-cuo-wu-ma"></a>

**1xxx（访问失败类）**

**2xxx（业务失败类）**

| 错误码  | 描述                   |
| ---- | -------------------- |
| 0    | 成功                   |
| 1001 | 接口请求限流               |
| 1101 | API Key鉴权失败          |
| 1102 | 密钥解密失败               |
| 1103 | 访问 IP 不在白名单内         |
| 2001 | 参数为空                 |
| 2002 | 时间范围错误               |
| 2003 | 请求时间参数为空             |
| 2004 | 请求时间已过期              |
| 2101 | 账户不存在                |
| 2102 | API Key不存在           |
| 2103 | 交易对不存在               |
| 2201 | 用户 API Key 被禁用       |
| 2202 | IP 被禁用               |
| 9999 | 其他异常，具体参照 message 内容 |

## **现货接口** <a href="#xian-huo-jie-kou" id="xian-huo-jie-kou"></a>

### **基础信息接口** <a href="#ji-chu-xin-xi-jie-kou" id="ji-chu-xin-xi-jie-kou"></a>

#### **服务器时间**

**HTTP 请求**

**GET** `/v1/common/systemTime`

**鉴权：否**

**限流：50次/1秒**

**请求参数**

此接口不接受任何参数。

**返回字段**

```json
{
  "message": "success",
  "code": "0",
  "data": 1672502400000
}
```

#### **所有交易对信息**

**HTTP 请求**

**GET** `/v1/common/symbols`

**鉴权：否**

**限流：5次/1秒**

**请求参数**

此接口不接受任何参数。

**返回字段**

| 字段名称          | 数据类型    | 描述              |
| ------------- | ------- | --------------- |
| symbol        | string  | 交易对             |
| baseCoinScale | integer | 计价币数量精度         |
| coinScale     | integer | 商品币数量精度         |
| priceScale    | integer | 价格精度            |
| baseSymbol    | string  | 基础币             |
| coinSymbol    | string  | 计价币             |
| minTurnover   | decimal | 最小挂单成交额         |
| minVolume     | decimal | 最小下单量           |
| maxVolume     | decimal | 最大下单量           |
| enable        | integer | 是否支持交易（0-否；1-是） |

```json
{
  "message": "success",
  "code": "0",
  "data": [
    {
      "symbol": "BTC/USDT", // 交易对
      "baseCoinScale": 4, // 计价币数量精度
      "coinScale": 4, // 商品币数量精度
      "priceScale": 2, // 价格精度
      "baseSymbol": "USDT", // 计价币种
      "coinSymbol":"BTC", // 商品币种
      "minTurnover": 10, // 最小挂单成交额
      "minVolume": 0.001, // 最小下单量
      "maxVolume": 50, // 最大下单量
      "enable":  1 // 是否启用
    },
    {
      "symbol": "ETH/USDT",
      "baseCoinScale": 4,
      "coinScale": 4,
      "baseSymbol": "USDT",
      "coinSymbol":"ETH",
      "minTurnover": 10,
      "minVolume": 0.01,
      "maxVolume": 500,
      "enable": 1
    }
  ]
}
```

### **行情接口** <a href="#hang-qing-jie-kou" id="hang-qing-jie-kou"></a>

#### **最新成交价**

此接口提供交易对当前最新成交价

**HTTP 请求**

**GET** `/v1/market/ticker/price`

**鉴权：否**

**限流：10次/1秒**

**请求参数**

| 参数     | 数据类型   | 是否必须 | 描述  |
| ------ | ------ | ---- | --- |
| symbol | string | true | 交易对 |

**返回字段**

| 字段名称        | 数据类型    | 描述    |
| ----------- | ------- | ----- |
| tickerPrice | decimal | 最新成交价 |

```json
{
  "message": "success",
  "code": "0",
  "data": {
      "tickerPrice": 40000
    }
}
```

#### **深度数据**

此接口返回指定交易对的当前深度数据。

**HTTP 请求**

**GET** `/v1/market/depth`

**鉴权：否**

**限流：2次/1秒**

**请求参数**

| 参数     | 数据类型    | 是否必须 | 描述      | 取值范围    |
| ------ | ------- | ---- | ------- | ------- |
| symbol | string  | true | 交易对     |         |
| depth  | integer | true | 返回深度的数量 | 最大 50 档 |

**返回字段**

| 字段名称      | 数据类型     | 描述     |
| --------- | -------- | ------ |
| symbol    | string   | 交易对    |
| bids      | array    | 买盘深度列表 |
| asks      | array    | 买盘深度列表 |
| timestamp | datetime | 时间     |

```json
{
  "message": "success",
  "code": "0",
  "data": {
      "symbol" : "BTC/USDT",
      "timestamp" : "2023-11-22 10:00:00",
      "bids" : [ [ "36074.99", "0.27225537" ], [ "36074.81", "0.00967628" ] ],
      "asks" : [ [ "36075.06", "0.55858424" ], [ "36075.24", "0.22475193" ] ]
  }
}
```

#### **K线数据**

此接口返回指定交易对的历史K线数据。

**HTTP 请求**

**GET** `/v1/market/kline`

**鉴权：否**

**限流：2次/1秒**

**请求参数**

<table><thead><tr><th>参数</th><th>数据类型</th><th>是否必须</th><th width="135.05615234375">描述</th><th width="247.8958740234375">取值范围</th></tr></thead><tbody><tr><td>symbol</td><td>string</td><td>true</td><td>交易对</td><td></td></tr><tr><td>period</td><td>string</td><td>true</td><td>k线周期</td><td>分钟:1min;5min;15min;30minx小时:1hour;4hour 天:1day 周:1week 月:1month</td></tr><tr><td>from</td><td>long</td><td>true</td><td>开始时间</td><td>毫秒</td></tr><tr><td>to</td><td>long </td><td>false</td><td>结束时间</td><td>毫秒，不填表示为当前时间</td></tr><tr><td>limit</td><td>integer</td><td>false</td><td>返回条数</td><td>不填默认500，最大1000</td></tr></tbody></table>

**返回字段**

```json
{
  "data": [
    [
      "1765555200000", // 开盘时间
      "89926.2", // 开盘价
      "90050.0", // 最高价
      "89785.5", // 最低价
      "89959.9", // 收盘价
      "30.8345", // 成交量
      "2773034.7896", // 计价货币成交额
      "2209" //成交笔数
    ],
    [
      "1765555260000",
      "89960",
      "90031.5",
      "89863.9",
      "89911.9",
      "19.8816",
      "1788283.7845",
      "1808"
    ]
  ],
  "code": 0,
  "message": "SUCCESS",
  "success": true
}
```

#### 历史成交记录

此接口返回指定交易对的成交记录(倒序查询）

**HTTP 请求**

**GET** `/v1/market/historicalTrades`

**鉴权：否**

**限流：2次/1秒**

**请求参数**

<table><thead><tr><th>参数</th><th>数据类型</th><th>是否必须</th><th width="135.05615234375">描述</th><th width="247.8958740234375">说明</th></tr></thead><tbody><tr><td>symbol</td><td>string</td><td>true</td><td>交易对</td><td></td></tr><tr><td>beforeId</td><td>string</td><td>false</td><td>查询开始id</td><td>查询该id之前的交易记录，不传按最新成交id向前查询</td></tr><tr><td>limit</td><td>integer</td><td>false</td><td>返回条数</td><td>不填默认100，最大100</td></tr></tbody></table>

**返回字段**

```json
{
  "data" : [ {
    "id" : "693d3d73453ac877d3233e55", // 成交id
    "price" : "90487.8", // 成交价
    "qty" : "0.0024", // 成交量
    "quoteQty" : "217.170912", // 计价货币成交额
    "time" : 1765621107203, // 成交时间
    "side" : "SELL" // 成交方向,买(BUY),卖(SELL)
  }, {
    "id" : "693d3d72453ac877d3233e14",
    "price" : "90487.8",
    "qty" : "0.0026976",
    "quoteQty" : "244.10013216",
    "time" : 1765621106245,
    "side" : "BUY"
  } ],
  "code" : 0,
  "message" : "SUCCESS",
  "success" : true
}
```

### **账户接口** <a href="#zhang-hu-jie-kou" id="zhang-hu-jie-kou"></a>

#### **账户余额**

此接口返回指定交易对的当前深度数据。

**HTTP 请求**

**POST** `/v1/account/balance`

**鉴权：是**

**限流：5次/1秒**

**请求参数**

| 参数   | 数据类型   | 是否必须  | 描述 |
| ---- | ------ | ----- | -- |
| coin | string | false | 币种 |

**返回字段**

| 字段名称          | 数据类型    | 描述   |
| ------------- | ------- | ---- |
| coin          | string  | 币种   |
| balance       | decimal | 余额   |
| frozenBalance | decimal | 冻结余额 |
| isLock        | string  | 是否锁定 |

```json
{
  "message": "success",
  "code": "0",
  "data": [
    {
      "coin": "USDT",
      "balance": 1000,
      "frozenBalance": 1000,
      "isLock": "IS_FALSE"
    },{
      "coin": BTC,
      "balance": 1,
      "frozenBalance": 0.01,
      "isLock": "IS_TRUE"
    }
  ]
}
```

### **交易接口** <a href="#jiao-yi-jie-kou" id="jiao-yi-jie-kou"></a>

#### **未完成挂单**

**HTTP 请求**

**POST** `/v1/trade/openOrder`

**鉴权：是**

**限流：10次/1秒**

**请求参数**

<table><thead><tr><th width="152">参数</th><th>数据类型</th><th width="153">是否必须</th><th>描述</th></tr></thead><tbody><tr><td>symbol</td><td>string</td><td>true</td><td>交易对</td></tr><tr><td>direction</td><td>integer</td><td>true</td><td>订单方向（0-买；1-卖）</td></tr></tbody></table>

**返回字段**

<table><thead><tr><th width="207.1788330078125">字段名称</th><th width="148.6419677734375">数据类型</th><th>描述</th></tr></thead><tbody><tr><td>orderId</td><td>string</td><td>挂单 ID</td></tr><tr><td>price</td><td>decimal</td><td>订单价格</td></tr><tr><td>avgPrice</td><td>decimal</td><td>成交均价</td></tr><tr><td>amount</td><td>decimal</td><td>买盘深度列表</td></tr><tr><td>tradedAmount</td><td>decimal</td><td>已成交数量</td></tr><tr><td>turnover</td><td>decimal</td><td>交易额（已成交数量*成交价格）</td></tr><tr><td>symbol</td><td>string</td><td>交易对</td></tr><tr><td>baseSymbol</td><td>string</td><td>计价币种</td></tr><tr><td>coinSymbol</td><td>string</td><td>商品币种</td></tr><tr><td>direction</td><td>enum</td><td>方向（BUY-买；SELL-卖）</td></tr><tr><td>status</td><td>enum</td><td>状态（TRADING-交易中；COMPLETED-完成；CANCELED-取消；OVERTIMED-超时；PARTLY-部分成交；）</td></tr><tr><td>type</td><td>enum</td><td>类型（MARKET_PRICE-市价；LIMIT_PRICE-限价；）</td></tr><tr><td>completedTime</td><td>long</td><td>订单完成时间(委托中订单为null)</td></tr><tr><td>canceledTime</td><td>long</td><td>订单取消时间(委托中订单为null)</td></tr><tr><td>time</td><td>long</td><td>订单创建时间</td></tr></tbody></table>

```json
{
  "message": "success",
  "code": "0",
  "data": [
    {
      "orderId": "E1677194831589408768",
      "price": 35000,
      "avgPrice": 0,
      "amount": 0.1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "BTC/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "BTC",
      "direction": "BUY",
      "status": "TRADING",
      "type": "LIMIT_PRICE",
      "completedTime": null,
      "canceledTime": null,
      "time": 1672502400000
    },{
      "orderId": "E1677269378757951488",
      "price": 2000,
      "avgPrice": 0,
      "amount": 1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "ETH/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "ETH",
      "direction": "BUY",
      "status": "TRADING",
      "type": "LIMIT_PRICE",
      "completedTime": null,
      "canceledTime": null,
      "time": 1672502400000
    }
  ]
}
```

#### **历史挂单（最大返回1000条）**

**HTTP 请求**

**POST** `/v1/trade/history`

**鉴权：是**

**限流：10次/1秒**

**请求参数**

| 参数        | 数据类型   | 是否必须 | 描述       |
| --------- | ------ | ---- | -------- |
| symbol    | string | true | 交易对      |
| startTime | long   | true | 开始时间（ms） |
| endTime   | long   | true | 结束时间（ms） |

**返回字段**

<table><thead><tr><th width="207.1788330078125">字段名称</th><th width="148.6419677734375">数据类型</th><th>描述</th></tr></thead><tbody><tr><td>orderId</td><td>string</td><td>挂单 ID</td></tr><tr><td>price</td><td>decimal</td><td>订单价格</td></tr><tr><td>avgPrice</td><td>decimal</td><td>成交均价</td></tr><tr><td>amount</td><td>decimal</td><td>买盘深度列表</td></tr><tr><td>tradedAmount</td><td>decimal</td><td>已成交数量</td></tr><tr><td>turnover</td><td>decimal</td><td>交易额（已成交数量*成交价格）</td></tr><tr><td>symbol</td><td>string</td><td>交易对</td></tr><tr><td>baseSymbol</td><td>string</td><td>计价币种</td></tr><tr><td>coinSymbol</td><td>string</td><td>商品币种</td></tr><tr><td>direction</td><td>enum</td><td>方向（BUY-买；SELL-卖）</td></tr><tr><td>status</td><td>enum</td><td>状态（TRADING-交易中；COMPLETED-完成；CANCELED-取消；OVERTIMED-超时；PARTLY-部分成交；）</td></tr><tr><td>type</td><td>enum</td><td>类型（MARKET_PRICE-市价；LIMIT_PRICE-限价；）</td></tr><tr><td>completedTime</td><td>long</td><td>订单完成时间</td></tr><tr><td>canceledTime</td><td>long</td><td>订单取消时间</td></tr><tr><td>time</td><td>long</td><td>订单创建时间</td></tr></tbody></table>

```json
{
  "message": "success",
  "code": "0",
  "data": [
    {
      "orderId": "E1677194831589408768",
      "price": 35000,
      "avgPrice": 0,
      "amount": 0.1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "BTC/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "BTC",
      "direction": "BUY",
      "status": "TRADING",
      "type": "LIMIT_PRICE",
      "completedTime": null,
      "canceledTime": null,
      "time": 1672502400000
    },{
      "orderId": "E1677269378757951488",
      "price": 2000,
      "avgPrice": 0,
      "amount": 1,
      "tradedAmount": 0,
      "turnover": 0,
      "symbol": "ETH/USDT",
      "baseSymbol": "USDT",
      "coinSymbol": "ETH",
      "direction": "BUY",
      "status": "TRADING",
      "type": "LIMIT_PRICE",
      "completedTime": null,
      "canceledTime": null,
      "time": 1672502400000
    }
  ]
}
```

#### **下单**

**HTTP 请求**

**POST** `/v1/trade/order`

**鉴权：是**

**限流：20次/1秒**

**请求参数**

| 参数        | 数据类型    | 是否必须 | 描述                                                |
| --------- | ------- | ---- | ------------------------------------------------- |
| symbol    | string  | true | 交易对                                               |
| price     | decimal | true | 价格（市价单传 0 即可）                                     |
| amount    | decimal | true | 数量（市价买单：表示 需要买入的交易额，以USDT 为单位；市价卖单：表示需要卖出的商品币数量；） |
| direction | integer | true | 方向（0-买；1-卖）                                       |
| type      | integer | true | 类型（0-市价；1-限价）                                     |

**返回字段**

| 字段名称 | 数据类型   | 描述    |
| ---- | ------ | ----- |
| data | string | 挂单 ID |

```json
{
  "message": "success",
  "code": "0",
  "data": "E1677226372826791936"
}
```

#### **撤销**

**HTTP 请求**

**POST** `/v1/trade/cancel`

**鉴权：是**

**限流：20次/1秒**

**请求参数**

| 参数      | 数据类型   | 是否必须 | 描述    |
| ------- | ------ | ---- | ----- |
| symbol  | string | true | 交易对   |
| orderId | string | true | 订单 ID |

**返回字段**

```json
{
  "message": "success",
  "code": "0",
  "data": ""
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidoc.hibt.co/hibt-openapi-cn/xian-huo-jiao-yi-zuo-shi-shang.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
