在 Hyperliquid 上搭建做市机器人
-
hyperliquid market maker
-
hl market maker tutorial
-
hyperliquid 做市机器人
-
链上永续合约做市
-
hyperliquid api 做市
locale: zh-CN
做市(Market Making)是金融市场中历史最悠久的交易策略之一:做市商在买卖两侧同时挂单,通过买卖价差(spread)赚取收益,同时为市场提供流动性。随着 Hyperliquid 这类链上永续合约交易所的崛起,独立开发者和小型量化团队也可以通过其开放 API 参与做市,无需机构背景。本文将系统介绍在 Hyperliquid 上构建做市机器人的完整思路,涵盖策略逻辑、技术架构、风险管理,以及如何用 OneKey 硬件钱包 保护机器人的签名密钥。
什么是永续合约上的做市
在传统现货市场,做市商持有实物库存;在永续合约市场,"库存"表现为净多头或净空头敞口。理想的做市商希望始终保持仓位中性(delta neutral),通过频繁刷新买卖挂单赚取价差,而不是押注价格方向。
Hyperliquid 的订单簿架构与中心化交易所类似,但结算在链上完成,资金由用户自托管。官方文档详细描述了订单类型、手续费结构和 API 规范,是做市机器人开发的必读材料。
做市机器人核心逻辑
价差计算
最简单的对称做市策略:在中间价(mid price)两侧各挂一定比例的价差:
买入价 = mid_price * (1 - spread / 2)
卖出价 = mid_price * (1 + spread / 2)
spread 的设置需要覆盖以下成本:
交易手续费(Taker fee)
预期的不利价格移动(Adverse selection 风险)
资金费率波动的对冲成本
参考 Hyperliquid 官方文档了解各市场的手续费层级,根据自身资金规模选择合适的 spread 基准。
订单刷新逻辑
价格持续变动,挂单需要定期刷新以保持合理报价。常见的刷新触发条件:
时间触发:每隔固定时间(如每 5 秒)刷新一次
价格偏移触发:当市场中间价偏离当前挂单价超过阈值时立即刷新
成交触发:有订单成交后立即重新下单补充流动性
实际生产中通常结合多种触发条件,避免频繁刷新浪费手续费,也避免报价滞后导致被套利。
库存风险管理
做市过程中难免出现库存积累(一侧持续成交而另一侧未成交),导致净仓位偏离中性。库存风险是做市的主要风险之一。
处理方式:
仓位倾斜(skewing):当持有净多头时,将买入价和卖出价均向下调整,鼓励卖出、抑制买入,被动地将仓位推回中性
硬性仓位限制:当净仓位超过阈值时,停止在偏离方向继续挂单,直至仓位回归
伪代码:基于净仓位的价格倾斜
position = get_net_position("BTC") # 正值为多头,负值为空头
skew_factor = -position * inventory_risk_param # inventory_risk_param 为可调参数
bid_price = mid_price * (1 - spread / 2) + skew_factor
ask_price = mid_price * (1 + spread / 2) + skew_factor
系统架构概览
一个完整的做市机器人由以下模块组成:
┌─────────────────────────────────────────────────────┐
│ 做市机器人主循环 │
├──────────────┬──────────────┬────────────────────────┤
│ 数据层 │ 策略层 │ 执行层 │
│ │ │ │
│ WebSocket │ 中间价计算 │ REST API 下单/撤单 │
│ 订单簿订阅 │ 价差计算 │ 批量订单管理 │
│ 成交回报 │ 库存倾斜 │ 签名(OneKey 硬件层) │
│ │ 仓位风控 │ │
└──────────────┴──────────────┴────────────────────────┘
│ │
市场数据输入 订单提交到 Hyperliquid
数据层通过 WebSocket 实时订阅订单簿快照和成交数据,参考 Hyperliquid 文档中的 WebSocket 章节
策略层根据最新数据计算新的报价
执行层通过 REST API 批量撤单并重新挂单,使用 EIP-712 结构化签名确保请求安全
技术实现要点
用 REST API 下单
批量下单接口可以在一次请求中同时提交买卖两侧订单,减少网络延迟:
def refresh_quotes(exchange, coin, bid_px, ask_px, order_size):
先批量撤销旧订单
open_orders = get_open_orders(coin)
if open_orders:
cancel_ids = [o["oid"] for o in open_orders]
exchange.bulk_cancel(coin, cancel_ids)
批量提交新报价
new_orders = [
build_limit_order(coin, is_buy=True, px=bid_px, sz=order_size),
build_limit_order(coin, is_buy=False, px=ask_px, sz=order_size),
]
return exchange.bulk_orders(new_orders)
用 WebSocket 监听成交
REST 轮询无法满足成交通知的实时需求,需要通过 WebSocket 订阅用户成交事件:
def on_user_fill(fill_data):
coin = fill_data["coin"]
side = fill_data["side"] # "B" 买入成交 / "A" 卖出成交
sz = fill_data["sz"]
px = fill_data["px"]
update_inventory(coin, side, sz, px)
trigger_quote_refresh(coin) # 成交后立即刷新报价
WebSocket 连接偶尔会断开,务必实现自动重连逻辑,并在重连后重新订阅所有频道、重置本地状态。
主要风险分析
做市不是"无风险套利",以下风险需要认真对待:
OneKey 硬件钱包:机器人密钥管理的最佳实践
做市机器人需要频繁签名交易,但频繁签名并不意味着要降低安全标准。OneKey 硬件钱包 将私钥存储在与网络完全隔离的安全芯片中,即使服务器被攻陷,攻击者也无法导出私钥。
推荐架构:
使用 Hyperliquid 的 API Agent 功能,为机器人创建一个独立的子账户钱包,并绑定到主账户
子账户钱包的私钥由 OneKey 硬件钱包 管理
机器人逻辑构建交易消息,通过本地签名服务发送到 OneKey 完成签名
签名后的请求提交到 Hyperliquid
这种架构下,即使机器人代码被注入恶意逻辑,也无法在不经过 OneKey 硬件审核的情况下转移资金。
性能优化建议
将撤单和重新下单合并为原子操作(Hyperliquid 支持 cancel-and-place 批量接口)
优先使用 Alo(仅挂单)订单类型,享受 Maker 手续费优惠
记录每笔成交的时间戳、价格、量,定期分析策略表现(盈亏归因:价差收益 vs 库存亏损)
实现熔断机制:当账户亏损超过日内阈值时自动停止机器人并发送报警
常见问题
Q1:在 Hyperliquid 上做市需要多少资金启动?
答:Hyperliquid 没有官方规定的最低做市资金,截至本文实际门槛取决于市场价格和最小下单量。建议先以极小规模测试策略逻辑,确认系统稳定后再逐步加大规模。
Q2:做市机器人的盈利来源是什么?
答:主要来源是买卖价差收益。每次一笔买单和一笔卖单在相近价位成交,机器人赚取两者之间的差额减去手续费。市场越活跃、成交量越高,潜在收益越大,但竞争也越激烈。
Q3:如何测试机器人而不冒真实资金风险?
答:Hyperliquid 提供测试网环境,参考 官方文档 中的测试网配置部分,将 API 端点切换到测试网即可进行无风险调试。
Q4:OneKey 硬件钱包是否会成为机器人的性能瓶颈?
答:OneKey 的签名速度能够满足绝大多数量化策略的需求。对于极高频(每秒数十次签名)的场景,可以考虑结合 API Agent 钱包架构,将高频操作委托给热钱包,同时用 OneKey 管理主账户和资金划转,实现安全与性能的平衡。
Q5:如何处理 API 限速?
答:Hyperliquid 对请求频率有限制,参考官方文档了解具体阈值。建议实现令牌桶算法控制请求频率,并在收到限速响应(HTTP 429)时自动退避重试。
结语
在 Hyperliquid 上搭建做市机器人是一项将量化金融、系统工程与区块链安全融为一体的挑战。从价差计算到库存管理,每一个环节都有优化空间;从软件私钥到 OneKey 硬件签名,每一层安全加固都值得投入。如果你还不想从零开发,OneKey Perps 提供了开箱即用的永续合约交易界面,让你先熟悉市场,再决定是否构建自动化策略。
访问 Hyperliquid App 开始体验,或查阅 Hyperliquid 官方文档 深入了解 API 细节。
风险提示:做市交易属于高风险量化策略,可能因市场波动、技术故障或策略失效而导致重大亏损,永续合约的杠杆特性会放大潜在损失。本文内容仅供技术学习参考,不构成任何投资或交易建议。请在全面评估自身风险承受能力后审慎决策,并遵守所在地区的法律法规。



