订单簿数据流示例 (JavaScript)

quiknode-labs 发布于 2026-07-19 阅读 14

本文介绍了如何使用JavaScript通过QuickNode gRPC端点流式接收Hyperliquid订单簿数据,支持L2聚合、L4逐单、BBO、L2差异、类型化L4更新和TP/SL触发订单等多种模式,并提供了详细的命令示例和自动重连功能。

设置

npm install

设置托管的 QuickNode 端点和 Token:

export GRPC_ENDPOINT="your-endpoint.hype-mainnet.quiknode.pro:10000"
export AUTH_TOKEN="YOUR_QUICKNODE_TOKEN"

用法

流式 L2 订单簿(聚合层级)

## 默认:BTC,20 个层级
node orderbook_stream_example.js --mode=l2 --coin=BTC

## ETH,50 个层级
node orderbook_stream_example.js --mode=l2 --coin=ETH --levels=50

## 带价格分桶(合并相近价格层级以减少数据量)
node orderbook_stream_example.js --mode=l2 --coin=BTC --sig-figs=5 --mantissa=1

## 或者使用 npm 脚本
npm run l2

流式 L4 订单簿(逐笔订单)

## 流式 L4 数据,币种 BTC
node orderbook_stream_example.js --mode=l4 --coin=BTC

## 或者使用 npm 脚本
npm run l4

L4 流保留了 ALO 优先费队列顺序,不改变公共响应结构。在常规差异更新后,它可能再次发送完整快照。示例中将该消息标记为 reset=replacement;请丢弃整个本地 L4 订单簿,并按照发出的顺序重建 bidsasks

流式 BBO(最优买卖报价)

## BTC 最优买卖报价
node orderbook_stream_example.js --mode=bbo --coin=BTC

## 多个币种
node orderbook_stream_example.js --mode=bbo --coin=BTC,ETH,SOL

## 所有币种
node orderbook_stream_example.js --mode=bbo --all

## 或者使用 npm 脚本
npm run bbo

流式 L2 订单簿差异更新

## BTC L2 价格层级变化,默认 20 个层级
node orderbook_stream_example.js --mode=l2-diff --coin=BTC

## 多个币种
node orderbook_stream_example.js --mode=l2-diff --coin=BTC,ETH

## 所有币种
node orderbook_stream_example.js --mode=l2-diff --all

## 跳过初始快照,仅接收未来变化
node orderbook_stream_example.js --mode=l2-diff --coin=BTC --skip-initial-snapshot

## 或者使用 npm 脚本
npm run l2-diff

流式类型化 L4 更新

## BTC 类型化订单层级变化
node orderbook_stream_example.js --mode=l4-updates --coin=BTC

## 所有币种
node orderbook_stream_example.js --mode=l4-updates --all

## 或者使用 npm 脚本
npm run l4-updates

流式 TP/SL 更新

## BTC 触发订单生命周期更新
node orderbook_stream_example.js --mode=tpsl --coin=BTC

## 所有永续合约币种
node orderbook_stream_example.js --mode=tpsl --all

## 或者使用 npm 脚本
npm run tpsl

选项

  • --mode=<l2|l4|bbo|l2-diff|l4-updates|tpsl>:流式模式
  • --coin=<COIN[,COIN...]>:币种符号,或逗号分隔的多个币种符号
  • --all:在多币种流中订阅所有符合条件的币种
  • --levels=<N>:L2 价格层级数量(默认:20)
  • --sig-figs=<N>:L2 价格分桶的有效数字(2-5)
  • --mantissa=<N>:L2 价格分桶的尾数(1、2 或 5)
  • --skip-initial-snapshot:对于 l2-diff,跳过初始快照
  • --max-messages=<N>:接收到 N 条消息后停止

自动重连

示例包括当服务器返回 DATA_LOSS 时的自动重连,并采用指数退避策略。对于 l4-updatestpsl,客户端应在重连后从下一个 snapshot=true 消息重建本地状态。

类型化的 l4-updates 流通过 snapshot=true 采用相同的重置契约:在应用该更新前清除本地订单状态。

  • 原文链接: github.com/quiknode-labs...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~

相关文章

0 条评论