Hyperliquid 历史数据指南 2026:K 线、资金费率与 S3
获取 Hyperliquid 历史数据:candleSnapshot K 线及 5,000 根限制、每小时资金费率历史、成交记录、S3 归档、速率限制和导出 CSV 的 Python 脚本。
Hyperliquid 历史数据指南 2026:K 线、资金费率历史与 S3 归档
简要结论:Hyperliquid 的历史数据来自三个地方。公开的 info API 提供 K 线(
candleSnapshot,每个周期只保留最近约 5,000 根)、资金费率历史(fundingHistory,每次响应 500 行)以及你自己的成交和订单。S3 存储桶hyperliquid-archive和hl-mainnet-node-data保存 L2 订单簿快照、资产上下文、成交记录和浏览器区块,但传输费用由下载方承担,而且没有 K 线。其他数据只能自己记录。下面给出准确的请求体、每个周期能回溯多远、分页方法、速率限制,以及一个把 K 线导出为 CSV 的 Python 脚本。
Hyperliquid 历史数据在哪里
| 来源 | 内容 | 限制 |
|---|---|---|
Info API candleSnapshot | 永续、现货和 HIP-3 市场的 OHLCV K 线 | 每个币种和周期只有最近约 5,000 根 |
Info API fundingHistory | 某个永续合约每小时的资金费率和溢价 | 每次响应 500 行;用 startTime 分页 |
Info API userFillsByTime、historicalOrders | 你(或任意地址)的成交和订单 | 每次响应 2,000 条;只能取到最近 10,000 笔成交;最近 2,000 个订单 |
S3 hyperliquid-archive | 每小时 L2 订单簿快照(market_data)和每日资产上下文(asset_ctxs) | 大约每月上传一次,不保证完整;下载方付费 |
S3 hl-mainnet-node-data | 按区块的成交、浏览器区块、L1 交易、其他事件(转账、质押、资金费) | 原始大文件;下载方付费 |
官方文档写得很清楚:S3 没有 K 线,也没有现货资产数据,"你可以用 API 自己记录其他历史数据集"。这句话基本解释了下文的所有内容。
K 线:candleSnapshot 接口
向 https://api.hyperliquid.xyz/info 发送 POST 请求,无需 API 密钥:
{"type": "candleSnapshot",
"req": {"coin": "BTC", "interval": "1h",
"startTime": 1789974000000, "endTime": 1792306800000}}
每根 K 线是一个使用短字段名的对象:t 开盘时间、T 收盘时间(毫秒时间戳),o/h/l/c 价格,v 以基础资产计的成交量(BTC,而不是美元),n 成交笔数,s 币种,i 周期。价格和成交量都是字符串,计算前要先转换。
支持的周期有 1m、3m、5m、15m、30m、1h、2h、4h、8h、12h、1d、3d、1w 和 1M。HIP-3(由 builder 部署)市场需要在币种前加上 DEX 名称,例如 xyz:XYZ100。
能回溯多远?
文档说只提供最近 5,000 根 K 线。不同周期对应的时间跨度差别很大:
| 周期 | 约 5,000 根覆盖 |
|---|---|
| 1m | 约 3.5 天 |
| 5m | 约 17 天 |
| 15m | 约 52 天 |
| 1h | 约 208 天 |
| 4h | 约 2.3 年 |
| 1d 及以上 | 足够你用 |
我们在 2026 年 10 月 18 日约 07:06 UTC 实测:请求 10 天的 BTC 1 分钟 K 线,API 返回了 5,167 根,从 10 月 14 日 17:00 UTC 开始。较早的 startTime 并不会报错,API 只是返回它还保留的数据。所以如果你的回测需要一年的 1 分钟 K 线,单靠 API 做不到。要么换更大的周期,要么从今天开始自己记录 1 分钟 K 线(WebSocket 的 candle 订阅或定时任务)。
还有两点容易出错:响应中的最后一根 K 线通常还在形成中(我们测试时,07:00 UTC 的小时 K 线开盘几分钟只有 4.08 BTC 成交量,而 30 天下载中前两个完整小时分别是 1,568 和 2,139 BTC);另外 v 是基础资产成交量,想要美元成交量需要乘以价格。
资金费率历史:fundingHistory
Hyperliquid 的资金费每小时结算一次,每个永续合约的完整历史都可以获取:
{"type": "fundingHistory", "coin": "BTC",
"startTime": 1787640000000}
每一行包含 coin、fundingRate(小时费率)、premium 和 time。一次响应最多 500 行,按每小时一条约等于 20.8 天。要获取更多数据,取最后一个 time 加 1 毫秒作为下一次的 startTime;这是文档为所有时间区间接口给出的通用分页规则。
真实例子:截至 2026 年 10 月 18 日的最近 60 天 BTC 资金费率共返回 1,440 条小时数据(三页)。平均小时费率为 0.00001044,按 24 × 365 年化约为 9.15%。正费率表示多头向空头付费。如果你想知道资金费对你自己的盈亏有什么影响,而不是对市场,可以对你的地址使用 userFunding,或阅读我们的资金费率与盈亏指南。
你自己的交易历史:成交与订单
对于一个地址,userFillsByTime 每次最多返回 2,000 笔成交,并且总共只能取到最近 10,000 笔。historicalOrders 最多返回最近 2,000 个订单。活跃交易者和机器人很快就会碰到 10,000 笔的上限,所以税务和交易日志工具都建议定期导出。Hyperliquid 文档还提到了 Enigma 团队开发的第三方导出界面(trade-export.hypedexer.com),可以导出更早的历史;它由第三方独立维护,请自行判断。CSV 导出的详细步骤见如何导出 Hyperliquid 交易历史。
S3 归档(高级用户)
做市场微观结构研究需要用到 S3 存储桶。你需要 AWS CLI 和 LZ4,并且由于是 requester-pays 存储桶,传输费用由你承担:
aws s3 cp s3://hyperliquid-archive/market_data/20230916/9/l2Book/SOL.lz4 /tmp/SOL.lz4 --request-payer requester
unlz4 --rm /tmp/SOL.lz4
head /tmp/SOL
- 订单簿:
s3://hyperliquid-archive/market_data/[date]/[hour]/l2Book/[coin].lz4 - 资产上下文:
s3://hyperliquid-archive/asset_ctxs/[date].csv.lz4,每日的各资产上下文文件。在 API 中,资金费率、未平仓量和标记价格都属于资产上下文,所以这里是查找历史未平仓量的官方来源;API 本身只返回当前值(见我们的未平仓量指南)。 - 成交:
s3://hl-mainnet-node-data/node_fills_by_block(与 API 格式相同);更早的数据在node_fills和node_trades中,其中node_trades格式不同。 - 链上历史:
hl-mainnet-node-data中的explorer_blocks、replica_cmds(L1 交易)和misc_events_by_block(转账、质押、资金费)。
归档大约每月更新一次,不保证及时,文档也提醒数据可能缺失。不要搭建任何假设"昨天的文件已经存在"的流程。
你一定会碰到的速率限制
REST 请求按 IP 共享每分钟 1,200 的权重额度。大多数 info 请求权重为 20。此外,candleSnapshot 每返回 60 根 K 线增加权重,fundingHistory、userFillsByTime、historicalOrders 等接口每返回 20 条增加权重。实际做法:分页时每次调用之间稍作停顿,缓存已下载的数据,只需要最新一根时不要每分钟重新拉取 5,000 根。实时数据用 WebSocket 订阅比轮询更便宜也更快。
Python 脚本:导出 K 线到 CSV 并汇总资金费率
不需要 SDK 和密钥,只用标准库。它会把 30 天的 BTC 小时 K 线下载到 btc_1h.csv,并计算 60 天资金费率的平均值。我们在 2026 年 10 月 18 日运行,得到 721 根小时 K 线和 1,440 条资金费率数据。
import csv, json, time, urllib.request
API = "https://api.hyperliquid.xyz/info"
def post(body):
req = urllib.request.Request(API, json.dumps(body).encode(),
{"Content-Type": "application/json"})
with urllib.request.urlopen(req) as r:
return json.load(r)
def candles(coin, interval, start_ms, end_ms):
out, cursor = [], start_ms
while cursor < end_ms:
batch = post({"type": "candleSnapshot", "req": {
"coin": coin, "interval": interval,
"startTime": cursor, "endTime": end_ms}})
if not batch:
break
out += [c for c in batch if not out or c["t"] > out[-1]["t"]]
if batch[-1]["t"] + 1 <= cursor:
break
cursor = batch[-1]["t"] + 1
time.sleep(0.5)
return out
def funding(coin, start_ms, end_ms):
out, cursor = [], start_ms
while cursor < end_ms:
batch = post({"type": "fundingHistory", "coin": coin,
"startTime": cursor, "endTime": end_ms})
if not batch:
break
out += batch
if len(batch) < 500:
break
cursor = batch[-1]["time"] + 1
time.sleep(0.5)
return out
if __name__ == "__main__":
now = int(time.time() * 1000)
day = 86_400_000
rows = candles("BTC", "1h", now - 30 * day, now)
with open("btc_1h.csv", "w", newline="") as f:
w = csv.writer(f)
w.writerow(["open_time_utc", "open", "high", "low", "close", "volume", "trades"])
for c in rows:
w.writerow([time.strftime("%Y-%m-%d %H:%M", time.gmtime(c["t"] / 1000)),
c["o"], c["h"], c["l"], c["c"], c["v"], c["n"]])
fr = funding("BTC", now - 60 * day, now)
avg = sum(float(x["fundingRate"]) for x in fr) / len(fr)
print(f"{len(rows)} hourly candles, {len(fr)} funding prints, "
f"avg hourly funding {avg:.8f} ({avg * 24 * 365:.2%} annualised)")
把 "BTC" 换成任意永续合约("ETH"、"HYPE"),K 线也可以换成 HIP-3 名称如 "xyz:XYZ100"。如果要覆盖很多市场,就定时运行并只追加新行,而不是每次重新下载全部:这也是建立 API 不再提供的历史数据的方法。
使用 Hyperliquid 历史数据的常见错误
- 以为
startTime一定生效。短周期会被静默截断到最近约 5,000 根。请检查实际收到的第一个时间戳。 - 把
v当成美元。它以基础资产计。 - 回测中包含正在形成的 K 线。除非收盘时间
T已经过去,否则丢弃最后一根。 - 按 8 小时结算来年化资金费率。Hyperliquid 资金费按小时结算,应为 费率 × 24 × 365。
- 依赖 API 获取早期成交。超过 10,000 笔后,最早的成交会从 API 中消失。尽早导出。
- 混用时区。所有时间戳都是 UTC 毫秒时间戳。
查看自己的投资组合,不必写脚本
原始 K 线和资金费率数据很适合做研究,但如果你想看的是自己的历史(持仓、扣除手续费和资金费后的真实盈亏、每笔交易的表现),就不需要维护数据管道。Hyperfolio 是免费、只读的 PWA:粘贴一个 Hyperliquid 地址,就能看到持仓、包含手续费和资金费的盈亏以及 Smart Money 钱包,无需密钥,无需签名。市场概况(标记价格、资金费率、未平仓量)在 Markets 中心,例如 BTC。如果你要开 Hyperliquid 账户,推荐码 HYPERFOLIO 可享 4% 交易手续费折扣(详见推荐码指南)。更多 API 用法请从我们的 Hyperliquid API Python 指南开始。
常见问题
Hyperliquid 有历史数据 API 吗?
有。公开的 info 接口(https://api.hyperliquid.xyz/info)无需 API 密钥即可返回 K 线、资金费率历史以及各地址的成交和订单。它有深度限制:每个周期约 5,000 根 K 线,每个地址最近 10,000 笔成交。
如何从 Hyperliquid 获取超过 5,000 根 K 线?
在同一周期下无法通过 API 获取。可以换更大的周期,从现在开始自己记录(WebSocket 或定时脚本),或者用 S3 的成交数据重建 K 线。
S3 上有 Hyperliquid 的 K 线吗?
没有。文档说明 S3 提供 L2 订单簿快照和资产上下文,以及节点成交和区块,但没有 K 线和现货资产数据。
Hyperliquid 资金费多久结算一次?
每小时一次。fundingHistory 每小时返回一行小时费率,年化时用 24 × 365。
可以下载历史未平仓量吗?
info API 不行,它只返回当前值。hyperliquid-archive 存储桶中的 asset_ctxs 文件是官方历史来源,你也可以自己保存快照。
Hyperliquid 历史数据要付费吗?
API 在速率限制内免费。S3 存储桶是 requester-pays,AWS 会按你传输的数据量收费。
免费试用 Hyperfolio
实时追踪 Hyperliquid 投资组合,包含盈亏、Smart Money、Markets、Perp Calculator、多 venue 投资组合和推送提醒。
HYPERLIQUID
-4% fees在 Hyperliquid 交易 · 手续费 4% 折扣
Hyperfolio 是独立应用 — 无广告、无佣金、无赞助。推荐码是我们唯一的资金来源;非常感谢您通过我们的链接交易。
对您免费 · 让 Hyperfolio 持续运行
相关文章
Hyperliquid 未平仓量指南 2026:OI 解读、上限与 API
Hyperliquid 未平仓量是什么、如何换算成美元、如何结合价格和资金费率解读 OI、为什么在未平仓量上限时订单被拒、HIP-3 上限,以及从公开 API 获取 OI 的 Python 脚本。
指南Hyperliquid 测试网指南 2026:水龙头、API、Chain ID
如何使用 Hyperliquid 测试网:领取 1,000 测试 USDC(需主网充值)、解决邮箱登录地址问题、切换 API 与 Python SDK、添加 HyperEVM 测试网(chain ID 998)。
指南Hyperliquid 止盈止损 TP/SL 指南 2026
Hyperliquid TP/SL 如何运作:mark 触发、市价约 10% 滑点、限价出场、挂仓位 vs 父单(OCO)、API grouping,以及常见成交问题。
指南Hyperliquid TWAP 订单指南 2026:时长、滑点与 API
Hyperliquid TWAP 如何运作:5 分钟至 7 天、最低 100 美元、间隔最短 30 秒、子单滑点上限 3%、±20% 随机、追赶规则,以及 twapOrder / twapCancel API。
指南Hyperliquid 滑点与价格冲击指南
了解 Hyperliquid 上滑点和价格冲击的成本,如何通过订单簿估算,以及哪些订单类型(限价、IOC、TWAP)可以降低它们。
指南Hyperliquid Builder Codes 与 Builder Fee 指南 2026
什么是 Hyperliquid builder code,机器人、钱包和前端如何收取 builder fee(永续最高 0.1%、现货 1%),每月成本多少,以及如何检查和撤销授权。