Skip to content

交易对深度图接口文档

重要考虑:此接口建议考虑采用 WebSocket 的方式接入,以实现实时深度数据推送,减少 HTTP 轮询带来的性能开销和延迟。当前版本使用 HTTP 轮询方式,后续可优化为 WebSocket 实时订阅。

重要变更:接口参数已从 symbol(交易对标识符)改为 pool(池子地址)。请使用 Aptos 链上的完整池子地址作为参数,格式为 64 个字符的十六进制地址(如 0x51e883ba7c0b566a26cbc8a94cd33eb0abd418a77cc1e60ad22fd9b1f29cd2ab)。

接口概述

本文档提供交易对深度图接口规范,用于显示指定交易对的买卖盘深度。前期版本使用 HTTP 轮询方式获取数据,通过定期调用接口来更新数据。该接口主要用于深度图组件,通常显示在 K 线图表的右侧。


交易对深度图接口

接口信息

  • 接口路径: /api/pair/depth
  • 请求方法: GET
  • 接口描述: 获取指定交易对的买卖盘深度数据,用于显示深度图。通过 HTTP 轮询此接口实现数据更新

请求参数

Query 参数

参数名类型必填说明
poolstring池子地址(Pool ID),Aptos 链上的完整地址,如 "0x51e883ba7c0b566a26cbc8a94cd33eb0abd418a77cc1e60ad22fd9b1f29cd2ab"
limitnumber返回的深度层级数量,可选值: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 对象字段
字段名类型必填说明
lastUpdateIdnumber最后更新的订单簿 ID,用于判断数据是否有更新
bidsarray买单深度数组,按价格从高到低排序,每个元素为 [价格, 数量]。价格表示 Token A / Token B,数量表示 Token A 的数量
asksarray卖单深度数组,按价格从低到高排序,每个元素为 [价格, 数量]。价格表示 Token A / Token B,数量表示 Token A 的数量
bids/asks 数组项说明

每个数组项是一个包含两个元素的数组:

索引类型说明
0string价格(Token A / Token B),字符串格式的数字,保留足够的小数位数。例如:如果 coinTypeA 是 TokenA,coinTypeB 是 TokenB,则价格为 TokenA 相对于 TokenB 的价格
1string数量(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)
累计深度前端计算前端可以通过累加 bidsasks 的数量(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前端计算:价差除以最佳买价的百分比

深度图绘制建议

  1. 使用 bidsasks 数组绘制深度图
  2. 可以通过累加数量计算累计深度,用于绘制深度曲线
  3. 买单通常用绿色表示,卖单用红色表示
  4. 价格和数量建议格式化显示,提高可读性

注意事项

  1. pool 参数为必填项,为池子地址(Pool ID),Aptos 链上的完整地址,长度为 64 个字符(32 字节的十六进制表示)
  2. limit 参数为可选,默认值为 50,建议根据前端显示需求选择合适的值
  3. 价格和数量字段使用字符串格式,避免 JavaScript 数字精度问题
  4. 价格表示 Token A 相对于 Token B 的价格(Token A / Token B),数量表示 Token A 的数量
  5. bids 数组必须按价格从高到低排序,asks 数组必须按价格从低到高排序
  6. lastUpdateId 用于判断数据是否有更新,前端可以通过比较 ID 来判断是否需要更新 UI
  7. 如果某个方向没有订单,对应的数组可以为空数组 []
  8. 响应格式遵循标准:code 为 0 表示成功,msg 为状态消息
  9. 前端通过轮询此接口实现数据更新,建议轮询频率为每 1-3 秒一次
  10. 深度数据变化较快,建议使用较短的轮询间隔,但也要注意不要过度请求