Appearance
交易对深度图接口文档
重要考虑:此接口建议考虑采用 WebSocket 的方式接入,以实现实时深度数据推送,减少 HTTP 轮询带来的性能开销和延迟。当前版本使用 HTTP 轮询方式,后续可优化为 WebSocket 实时订阅。
重要变更:接口参数已从 symbol(交易对标识符)改为 pool(池子地址)。请使用 Aptos 链上的完整池子地址作为参数,格式为 64 个字符的十六进制地址(如 0x51e883ba7c0b566a26cbc8a94cd33eb0abd418a77cc1e60ad22fd9b1f29cd2ab)。
接口概述
本文档提供交易对深度图接口规范,用于显示指定交易对的买卖盘深度。前期版本使用 HTTP 轮询方式获取数据,通过定期调用接口来更新数据。该接口主要用于深度图组件,通常显示在 K 线图表的右侧。
交易对深度图接口
接口信息
- 接口路径:
/api/pair/depth - 请求方法:
GET - 接口描述: 获取指定交易对的买卖盘深度数据,用于显示深度图。通过 HTTP 轮询此接口实现数据更新
请求参数
Query 参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| pool | string | 是 | 池子地址(Pool ID),Aptos 链上的完整地址,如 "0x51e883ba7c0b566a26cbc8a94cd33eb0abd418a77cc1e60ad22fd9b1f29cd2ab" |
| limit | number | 否 | 返回的深度层级数量,可选值:5、10、20、50、100、500、1000、5000,默认为 50 |
请求示例
bash
GET /api/pair/depth?pool=0x51e883ba7c0b566a26cbc8a94cd33eb0abd418a77cc1e60ad22fd9b1f29cd2ab&limit=50响应数据结构
响应格式
json
{
"code": 0,
"msg": "success",
"data": {
"lastUpdateId": 1027024,
"bids": [
["4.00000000", "431.00000000"],
["3.90000000", "12.00000000"],
["3.80000000", "25.50000000"]
],
"asks": [
["4.10000000", "2.00000000"],
["4.20000000", "10.00000000"],
["4.30000000", "15.30000000"]
]
}
}响应字段说明
data 对象字段
| 字段名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lastUpdateId | number | 是 | 最后更新的订单簿 ID,用于判断数据是否有更新 |
| bids | array | 是 | 买单深度数组,按价格从高到低排序,每个元素为 [价格, 数量]。价格表示 Token A / Token B,数量表示 Token A 的数量 |
| asks | array | 是 | 卖单深度数组,按价格从低到高排序,每个元素为 [价格, 数量]。价格表示 Token A / Token B,数量表示 Token A 的数量 |
bids/asks 数组项说明
每个数组项是一个包含两个元素的数组:
| 索引 | 类型 | 说明 |
|---|---|---|
| 0 | string | 价格(Token A / Token B),字符串格式的数字,保留足够的小数位数。例如:如果 coinTypeA 是 TokenA,coinTypeB 是 TokenB,则价格为 TokenA 相对于 TokenB 的价格 |
| 1 | string | 数量(Token A 的数量),字符串格式的数字,保留足够的小数位数 |
排序规则:
bids:按价格从高到低排序(最高买价在前)asks:按价格从低到高排序(最低卖价在前)
响应示例
json
{
"code": 0,
"msg": "success",
"data": {
"lastUpdateId": 1027024,
"bids": [
["4.00000000", "431.00000000"],
["3.90000000", "12.00000000"],
["3.80000000", "25.50000000"],
["3.70000000", "8.20000000"],
["3.60000000", "100.00000000"]
],
"asks": [
["4.10000000", "2.00000000"],
["4.20000000", "10.00000000"],
["4.30000000", "15.30000000"],
["4.40000000", "5.50000000"],
["4.50000000", "20.00000000"]
]
}
}轮询说明
实现方式:前端通过定时器定期调用此接口获取最新深度数据,实现数据更新。
- 轮询频率建议:每 1-3 秒轮询一次(深度数据变化较快,建议更频繁的更新)
- 接口应支持缓存,避免频繁查询数据库
- 建议对接口进行限流,防止过度请求
- 可以通过
lastUpdateId判断数据是否有更新,如果 ID 未变化,可以跳过渲染
前端渲染说明
深度图组件渲染
| 显示内容 | 数据来源 | 说明 |
|---|---|---|
| 买单深度(Bids) | data.bids | 按价格从高到低显示,每个条目显示价格(Token A / Token B)和数量(Token A) |
| 卖单深度(Asks) | data.asks | 按价格从低到高显示,每个条目显示价格(Token A / Token B)和数量(Token A) |
| 累计深度 | 前端计算 | 前端可以通过累加 bids 和 asks 的数量(Token A 数量)来计算累计深度,用于绘制深度图 |
| 最佳买价 | data.bids[0][0] | 最高买价(买单数组的第一个价格,表示 Token A / Token B) |
| 最佳卖价 | data.asks[0][0] | 最低卖价(卖单数组的第一个价格,表示 Token A / Token B) |
| 买卖价差 | asks[0][0] - bids[0][0] | 前端计算:最佳卖价减去最佳买价 |
| 买卖价差百分比 | (asks[0][0] - bids[0][0]) / bids[0][0] * 100 | 前端计算:价差除以最佳买价的百分比 |
深度图绘制建议:
- 使用
bids和asks数组绘制深度图 - 可以通过累加数量计算累计深度,用于绘制深度曲线
- 买单通常用绿色表示,卖单用红色表示
- 价格和数量建议格式化显示,提高可读性
注意事项
pool参数为必填项,为池子地址(Pool ID),Aptos 链上的完整地址,长度为 64 个字符(32 字节的十六进制表示)limit参数为可选,默认值为 50,建议根据前端显示需求选择合适的值- 价格和数量字段使用字符串格式,避免 JavaScript 数字精度问题
- 价格表示 Token A 相对于 Token B 的价格(Token A / Token B),数量表示 Token A 的数量
bids数组必须按价格从高到低排序,asks数组必须按价格从低到高排序lastUpdateId用于判断数据是否有更新,前端可以通过比较 ID 来判断是否需要更新 UI- 如果某个方向没有订单,对应的数组可以为空数组
[] - 响应格式遵循标准:
code为 0 表示成功,msg为状态消息 - 前端通过轮询此接口实现数据更新,建议轮询频率为每 1-3 秒一次
- 深度数据变化较快,建议使用较短的轮询间隔,但也要注意不要过度请求