链上数据分析一直是区块链开发者与投资者的痛点,尤其在追踪 历史币价、铭文行情 或 链上价格回溯 时,如何准确、高速、低成本地拉取数据?本文将手把手教你调用 标准化钱包API,在几行代码内完成原生代币、ERC-20、BRC-20、Runes、ARC-20、SRC-20 等多类型资产的历史价格查询。无论你是做市机器人、量化策略还是行情面板搭建,读完即可落地。
API 核心能力总览
- 全品类覆盖:原生代币 + 智能合约代币 + 比特币铭文代币。
- 多链支持:包含 Bitcoin、Ethereum、Fractal Bitcoin、Polygon、Arbitrum、Optimism 等二十余条主流链。
- 时间粒度灵活:最短 1 分钟、最长 1 天,可按场景自定义。
- 分页请求:单次最多 200 条,超大区间也可流式拉取,避免一次性内存爆表。
请求接口(Endpoint)
GET https://web3.okx.com/api/v5/wallet/token/historical-price公网直达,零配置即可发起 HTTPS 请求。
👉 获取完整实例代码与鉴权示例,立刻上手!
参数解读与最佳实践
| 关键词 | 类型 | 必填 | 说明与示例 |
|---|---|---|---|
| chainIndex | String | 是 | 区块链唯一 ID。例:1(Ethereum)、0(Bitcoin)、2525(Fractal Bitcoin)。 |
| tokenAddress | String | 否 | 规则多但清晰: - 空字符串 "" → 原生代币;- 0xdAC...987 → USDT 合约地址;- btc-brc20-ordi → BRC-20 的 ORDI;- fbtc_fbrc20_babymusk → Fractal Bitcoin 上的 babymusk 铭文。 |
| period | String | 否 | 默认 1d(日线)。1m/5m/30m/1h/1d 按需切换。 |
| begin / end | long(ms) | 否 | Unix 毫秒时间戳。可用 end – 30 * 24 * 3600 * 1000 取最近 30 天。 |
| limit | int | 否 | 1–200,超量自动分批。 |
| cursor | String | 否 | 翻页字符串,响应中返回的 nextCursor 继续请求即可。 |
在实战中最常用的组合示例
curl -G 'https://web3.okx.com/api/v5/wallet/token/historical-price' \
-d 'chainIndex=1' \
-d 'tokenAddress=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' \
-d 'period=1h' \
-d 'limit=168' \
-d 'begin=1717200000000' \
-d 'end=1717804800000'向上取 168 个小时级 k 线,正好一周。
返回结构速查
{
"code": 0,
"msg": "",
"data": [
{
"prices": [
{
"time": "1717200000000",
"price": "912345000000000000"
},
...
]
}
]
}- price 保留 18 位精度,单位换算:
Value / 10^18。 - time 毫秒级 Unix,戳转日期
new Date(time)即得可读时间。
FAQ:开发者最常问到的 5 个问题
Q1:BRC-20 与 Runes 区别在参数里怎么体现?
A:BRC-20 用 btc-brc20-tick(name),Runes 用 btc-runesMain-tickId。示例已在上表列出,注意大小写敏感。
Q2:一次性想拉半年的日线,但每次最多 200 条怎么办?
A:先测条数 RANGE / period,如需 180 天即 180 根日线,单次即可满足;若 1m 粒度则需翻页,循环使用返回的 nextCursor 字段即可无感补全。
Q3:时间戳一定要毫秒的吗?
A:是的。Linux date +%s%3N 即时生成,Python 用 int(time.time() * 1000)。
Q4:如何判断 tokenAddress 填写正确?
A:链上浏览器确认首字符、长度即可;铭文类请核对空格和连字符,如 btc-runesMain-123456:1 与 btc-runes-main-123456:1 属于不同资源。
Q5:有请求频率限制吗?
A:免费套餐默认 120 次/分钟,商业付费可扩至 600 次/分钟。超过后返回 429,配合指数退避算法优雅重试即可。
使用场景与案例
场景 1:量化策略回填
- 高频 1m 数据:机器人拿到最新信号,可迅速回溯验证盘感。
- 组合多币篮子:循环调用多链 Token 列表,一次性落库。
场景 2:行情面板
- WebSocket 推送实时价,历史接口补全前几分钟缺口,保证蜡烛无缝衔接。
场景 3:铭文估值
- 比特币铭文发币初期无中心化交易所,往往需要估算公允价格,可用 API 拉取成交加权均价作为公允基线。
总结与下一步动作
通过本文,你已掌握如何 快速拉取链上历史币价,并适配 原生代币、ERC-20、BRC-20、Runes、ARC-20、SRC-20 等复杂资产类型。仅需一套 Wallet-as-a-Service(WaaS)API,即可避免自建节点、自建索引的巨大维护成本。下一步建议:
- 在 Sandbox 环境跑通示例 cURL;
- 用你最熟悉的语言(Python、Go、Node.js)封装 SDK;
- 结合任务调度/缓存策略,落地到产品排期。
祝你一路顺利,拥抱透明的链上数据时代!