Logo
新用户订阅 RPC,首月享 6.5 折优惠查看优惠
OnFinality Learn
网络与协议指南12 分钟阅读

Hyperliquid 历史数据与市场数据 API:查询交易、OHLCV、资金费和订单簿历史

了解如何使用原生 /info API、WebSocket 订阅和文档化档案检索 Hyperliquid 历史市场数据,用于分析和回测。包含代码示例和故障排除。

TL;DR

本指南介绍如何访问 Hyperliquid 历史市场数据以进行分析和回测。涵盖用于近期数据的原生 /info HTTP API 和 WebSocket 订阅、用于更深层历史的独立历史档案,以及第三方转售商。包含请求/响应示例、代码片段和故障排除清单。

直接回答:如何获取 Hyperliquid 历史数据

要检索 Hyperliquid 历史市场数据以进行分析和回测,您需要使用两个互补的接口:原生 Hyperliquid API(HTTP POST 到 /info 和 WebSocket 订阅)用于实时和近期状态,以及单独发布的历史数据档案(交易、资金费和 OHLCV 文件)用于更深层的历史。原生 API 提供近期交易、K线、资金费和订单簿快照,但不提供完整的历史订单簿深度或非常旧的 K线;对于这些,您需要档案或第三方转售商。本指南将逐一介绍每个接口,展示具体的请求/响应示例,并提供决策清单。

本指南的主要来源是官方 Hyperliquid 文档:hyperliquid.gitbook.io。所有端点主机、请求字段和响应结构都在那里有文档说明;对于未记录的特定限制或保留窗口,文档说明它们会变化,因此本指南避免编造数字。

  • 原生 API:POST /info 获取交易、K线、资金费和订单簿快照;WebSocket 用于实时订阅。
  • 历史档案:公开的交易、资金费和 OHLCV 文件,定期更新,覆盖更长历史。
  • 第三方转售商:如 HypeRPC 和 QuickNode 等服务提供扩展数据 API 和 SQL 访问,但它们是独立参考,并非官方。

理解 Hyperliquid 数据 API 接口

Hyperliquid 的 API 分为两大类:直接与验证器通信的原生 API,以及单独生成和托管的历史数据档案。原生 API 进一步分为 HTTP 端点(POST /info)用于查询当前状态和近期历史,以及 WebSocket 端点(ws2 等)用于实时订阅。档案是包含历史交易、资金费率和 OHLCV 数据的文件(通常是压缩的),并按计划更新。

原生 API 非常适合需要最新状态或过去几小时或几天数据的应用程序。例如,您可以获取某个币的最后 500 笔交易、当前资金费率或订单簿最优买卖盘。然而,原生 API 不提供完整的历史订单簿深度(所有层级随时间变化)或早于特定时期的 K线(具体保留时间未记录;会变化)。对于深度回测,您需要档案。

档案由 Hyperliquid 发布,可供下载。它们涵盖所有永续合约和现货对的交易、资金费和 OHLCV。具体覆盖范围(开始日期、更新频率)在 Hyperliquid 文档页面 中有记录;建议查看该页面以获取最新详情。第三方转售商如 HypeRPC 和 QuickNode 也提供历史数据 API,但它们是独立的,可能具有不同的覆盖范围和定价。

  • 原生 API:POST /info(HTTP)和 WebSocket(ws2)用于实时和近期数据。
  • 档案:公开的交易、资金费、OHLCV 文件,定期更新。
  • 第三方:HypeRPC、QuickNode 等提供扩展 API,但并非官方。

使用原生 /info API 获取近期市场数据

/info 端点是一个 HTTP POST 端点,接受 JSON 请求对象。请求类型在 'type' 字段中指定。对于历史市场数据,最相关的请求类型是 'trades'、'candleSnapshot' 和 'fundingHistory'。响应是对象数组。

例如,要获取 BTC 的近期交易,您发送一个类型为 'trades' 且包含币种符号的请求。响应包含 'time'、'px'、'sz'、'side' 和 'tid' 等字段。对于 OHLCV,您使用 'candleSnapshot',参数包括 'req'(间隔)、'coin'、'startTime' 和 'endTime'。响应包含 't'、'o'、'h'、'l'、'c'、'v' 和 'n'(交易数量)。

确切的请求和响应结构在 Hyperliquid API 文档 中有记录。以下是交易和 K线的具体示例。

// 示例:获取 BTC 的近期交易(使用 Node.js fetch)
const response = await fetch('https://api.hyperliquid.xyz/info', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ type: 'trades', coin: 'BTC' })
});
const trades = await response.json();
console.log(trades);
// 预期输出:交易对象数组,例如:
// [{"time":1730000000000,"px":"65000.0","sz":"0.1","side":"B","tid":123456,"coin":"BTC"}]

// 示例:获取 BTC 在特定时间范围内的 1 小时 K线
const candlesResponse = await fetch('https://api.hyperliquid.xyz/info', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    type: 'candleSnapshot',
    req: { coin: 'BTC', interval: '1h', startTime: 1730000000000, endTime: 1730003600000 }
  })
});
const candles = await candlesResponse.json();
console.log(candles);
// 预期输出:K线对象数组,例如:
// [{"t":1730000000000,"o":"65000.0","h":"65100.0","l":"64900.0","c":"65050.0","v":"100.0","n":123}]

WebSocket 订阅实时和近期数据

对于实时市场数据,Hyperliquid 提供 WebSocket 端点。主要端点是 wss://api.hyperliquid.xyz/ws,您可以订阅 'trades'、'candle'、'l2Book' 和 'userFills' 等频道。这些订阅会在发生时推送更新,适用于实时监控,但不适用于历史回测。

然而,WebSocket 订阅也可用于随时间累积数据。例如,您可以订阅 'candle' 频道来构建自己的 OHLCV 历史。订阅消息格式在 Hyperliquid WebSocket 文档 中有记录。以下是一个使用 'ws' 包的简单 Node.js 示例。

// Node.js WebSocket 示例(需要 'ws' 包:npm install ws)
const WebSocket = require('ws');
const ws = new WebSocket('wss://api.hyperliquid.xyz/ws');

ws.on('open', () => {
  // 订阅 BTC 的交易
  ws.send(JSON.stringify({ method: 'subscribe', subscription: { type: 'trades', coin: 'BTC' } }));
});

ws.on('message', (data) => {
  const msg = JSON.parse(data);
  if (msg.channel === 'trades') {
    console.log('交易:', msg.data);
    // 每笔交易包含 time、px、sz、side、tid 等字段
  }
});

ws.on('error', (err) => console.error('WebSocket 错误:', err));

访问历史档案以获取深层历史

当您需要比原生 API 提供的数据更旧的数据,或需要完整的订单簿深度时,您必须使用历史档案。Hyperliquid 在公共 URL 上发布这些档案(在 Hyperliquid 文档 中有记录)。档案通常是压缩文件(例如 .csv.gz),您可以下载并在本地处理。

档案包括交易数据、资金费率和 OHLCV 数据。确切的文件命名和更新计划在 Hyperliquid 文档页面有记录。例如,交易档案可能按日期和币种组织。要使用它们,您需要下载相关文件并解析。

第三方转售商如 HypeRPC 和 QuickNode 也提供历史数据 API,可能通过 SQL 或 REST 提供更便捷的访问。这些是独立服务,可能具有不同的覆盖范围和定价;请务必查看其文档。

  • 查看官方 Hyperliquid 文档以获取档案 URL 和格式。
  • 下载并解析文件以进行本地回测。
  • 考虑第三方转售商以方便使用,但验证其数据质量。

决策清单:根据数据需求选择接口

要选择合适的 API 接口,请考虑您需要的数据类型和年龄。下表将常见数据需求映射到推荐的接口。

对于近期交易(最近几分钟),使用原生 API 或 WebSocket。对于 K线,原生 API 提供近期 K线,但对于更旧的 K线,请使用档案。资金费历史可通过原生 API 获取近期数据,但对于长期资金费分析,请使用档案。订单簿最优买卖盘可通过原生 API 获取,但完整深度历史不可用;如果可用,请使用档案或转售商。

  • 近期交易(最近几分钟):原生 API(类型 'trades')或 WebSocket。
  • 历史交易(数天/数周):档案。
  • 近期 OHLCV K线:原生 API(类型 'candleSnapshot')。
  • 历史 OHLCV:档案。
  • 资金费历史:原生 API(类型 'fundingHistory')获取近期;档案获取长期。
  • 订单簿最优买卖盘:原生 API(类型 'l2Book')或 WebSocket。
  • 完整订单簿深度历史:原生 API 不可用;检查档案或第三方。

常见故障与故障排除

在使用 Hyperliquid 数据 API 时,您可能会遇到速率限制、请求格式错误或数据缺失等问题。以下是常见故障及解决方法。

速率限制:Hyperliquid API 具有速率限制,因端点和订阅类型而异。如果您收到 HTTP 429 或 WebSocket 断开,您可能超出了限制。请参阅 Hyperliquid API 速率限制指南 了解详情和最佳实践。

无效请求:确保您的请求 JSON 符合文档中的模式。例如,'candleSnapshot' 请求需要 'req' 对象,包含 'coin'、'interval',以及可选的 'startTime' 和 'endTime'。缺少字段或类型错误将导致错误。

未找到数据:如果您请求不存在的币种或没有数据的时间范围的交易,API 可能返回空数组。请检查币种符号和时间范围。

WebSocket 连接问题:如果您的 WebSocket 连接断开,请实现具有指数退避的重连逻辑。此外,确保发送正确的订阅消息格式。

  • HTTP 429:放慢请求速度并遵守速率限制。
  • 无效 JSON:根据文档验证您的请求。
  • 空响应:检查币种符号和时间范围。
  • WebSocket 断开:实现重连逻辑。

权衡与限制

原生 API 快速且易于使用,但有其局限性:它仅提供有限数量的历史数据(具体保留时间未记录),并且不提供完整的订单簿深度历史。档案提供深层历史,但需要下载和处理大型文件,这可能耗时且需要大量存储。

第三方转售商可能提供更便捷的访问,但它们是独立的,可能具有不同的数据质量、覆盖范围和定价。尽可能验证官方来源的数据。

对于生产应用程序,请考虑组合使用:使用原生 API 获取实时数据,使用档案进行历史回测。对于高频数据需求,您可能需要使用 WebSocket 订阅构建自己的数据收集系统。

后续步骤与进一步阅读

既然您了解了 Hyperliquid 数据 API 接口,您可以开始构建自己的数据管道。有关 Hyperliquid 基础设施的更多背景,请参阅 Hyperliquid 网络概述。如果您对 RPC 端点感兴趣,请查看 Hyperliquid RPC 端点(RPC Assistant)。相关指南请参阅 Hyperliquid WebSocket 订阅Hyperliquid RPC 延迟Hyperliquid API 速率限制

有关一般 API 服务信息,请访问 API 服务页面RPC 定价。浏览 OnFinality Learn 中心 获取更多教程和指南。

  • 探索官方 Hyperliquid 文档以获取最新 API 详情。
  • 查看第三方转售商如 HypeRPC 和 QuickNode 以获取扩展数据服务。
  • 加入 Hyperliquid 社区以获取支持和讨论。

永远不用担心基础设施

OnFinality 消除了 DevOps 的繁重工作,让您能够更聪明、更快地构建。

开始