Hyperliquid Tick Size 与 Lot Size 2026:szDecimals 详解
Hyperliquid tick size 与 lot size:5 位有效数字、szDecimals、10 美元最低下单额、BTC/ETH/HYPE 实时数值及避免订单被拒的 Python 工具。
简要结论:在 Hyperliquid 上,价格最多 5 位有效数字,永续合约最多
6 − szDecimals位小数(现货为8 − szDecimals)。整数价格始终有效。数量的小数位不能超过szDecimals。此外,订单价值至少为 10 美元。任何一条不满足,交易所就会返回 "Price must be divisible by tick size" 或 "Order must have minimum value of $10"。
与许多中心化交易所不同,Hyperliquid 并没有为每个市场公布固定的 tick size。tick 由两条规则和当前价格共同决定,因此当币价跨越 10 的整数次幂时,tick 会随之变化。这常常让编写交易机器人或通过 API 下单的人措手不及。本文根据官方文档解释这些规则,展示我们在 2026 年 10 月 22 日(约 UTC 07:05)从 API 获取的实时数值,列出常见错误,并提供一个能正确取整价格和数量的 Python 小工具。如果你只想查看某个钱包的订单、持仓和盈亏,Hyperfolio 以只读方式展示,无需 API 密钥。
szDecimals 从哪里来
每个资产都有一个 szDecimals 值。永续合约在 info 请求 meta(或 metaAndAssetCtxs)的 universe 数组中;现货则在 spotMeta 的每个代币上,以交易对的基础代币为准。szDecimals 同时决定两条规则:它就是 lot size(数量步长为 10^−szDecimals),也限制价格可以有多少位小数。
在我们的快照中,主 DEX 上 178 个活跃永续合约的分布为:98 个 szDecimals = 0(只能交易整数单位),51 个为 1,22 个为 2,5 个为 3,ETH 为 4,BTC 为 5。也就是说,大多数永续合约按整币交易,而高价币按很小的份额交易。
规则一:价格(tick size)
根据 Hyperliquid API 文档,价格在以下情况下有效:
- 最多 5 位有效数字,并且
- 小数位不超过
MAX_DECIMALS − szDecimals,其中永续合约的MAX_DECIMALS为 6,现货为 8; - 例外:整数价格始终有效,不论有效数字有几位。
123456有效,而12345.6无效。
因此实际 tick 取两个步长中较大的一个:当前价格下 5 位有效数字允许的步长,以及 10^−(MAX_DECIMALS − szDecimals)。价格高于 100,000 美元时,tick 就是 1 美元,因为只能用整数。
文档示例(永续合约)
1234.5有效,1234.56无效(6 位有效数字)。0.001234有效,0.0012345无效(超过 6 位小数)。- 当
szDecimals = 1时,0.01234有效,0.012345无效(超过 6 − 1 = 5 位小数)。
规则二:数量(lot size)
数量按资产的 szDecimals 取整。szDecimals = 3 时,1.001 有效,1.0001 无效。szDecimals = 0 时只能交易整数单位:8 个 XRP 可以,8.5 个不行。
规则三:10 美元最低订单价值
文档的错误列表中有 MinTradeNtl("Order must have minimum value of $10"),现货则为 MinTradeSpotNtl("Order must have minimum value of 10 {quote_token}")。由于数量要按步长取整,最小有效订单通常略高于 10 美元。应向上取整而不是向下,价格波动时再留一点余量。
实时数值:2026 年 10 月 22 日快照
标记价格来自约 UTC 07:05 的 metaAndAssetCtxs。tick 一栏按上述规则在该价格下计算,最小数量为按步长取整后、按标记价格计算价值不低于 10 美元的最小数量。我们用实时 l2Book 核对了 tick:BTC 档位为 82,465、82,462、82,461;ETH 为 2,430.9、2,430.8;HYPE 为 78.637、78.636;kPEPE 为 0.004487、0.004486;XRP 为 1.3399、1.3398。
| 永续合约 | 标记价格 | szDecimals | Lot size | Tick size | Tick 占价格比例 | 10 美元对应最小数量 |
|---|---|---|---|---|---|---|
| BTC | 82,453.1 | 5 | 0.00001 | 1 | 0.0012% | 0.00013 |
| ETH | 2,430.45 | 4 | 0.0001 | 0.1 | 0.0041% | 0.0042 |
| SOL | 104.43 | 2 | 0.01 | 0.01 | 0.0096% | 0.10 |
| HYPE | 78.619 | 2 | 0.01 | 0.001 | 0.0013% | 0.13 |
| XRP | 1.3395 | 0 | 1 | 0.0001 | 0.0075% | 8 |
| DOGE | 0.079639 | 0 | 1 | 0.000001 | 0.0013% | 126 |
| kPEPE | 0.004486 | 0 | 1 | 0.000001 | 0.022% | 2,230 |
有两点值得注意。第一,kPEPE 的 tick 受 6 位小数上限约束,而不是有效数字,所以相对较粗(约 2.2 个基点)。第二,tick 随价格变化:如果 XRP 跌破 1 美元,5 位有效数字允许 0.99999,tick 会从 0.0001 缩小到 0.00001;如果 ETH 涨破 10,000 美元,tick 会从 0.1 变为 1。不要在代码中写死 tick,应根据价格计算。
计算示例
- BTC 价格 82453.5:6 位有效数字且不是整数,被拒。应发送
82453或82454。 - ETH 价格 2430.45:6 位有效数字,被拒。应发送
2430.4或2430.5。 - HYPE 价格 78.6197:被拒。取 5 位有效数字为
78.620,发送78.62。 - kPEPE 价格 0.0044865:7 位小数,被拒。应发送
0.004486或0.004487。 - SOL 数量 1.234:
szDecimals = 2,被拒。应发送1.23。 - XRP 数量 7:步长有效,但 7 × 1.3395 = 9.38 美元,低于 10 美元下限。应发送 8。
szDecimals = 2的现货代币:价格最多 8 − 2 = 6 位小数,同时仍受 5 位有效数字限制。
市价单、止盈止损和滑点价格同样需要取整
Hyperliquid 的市价单实际上是带价格上限的激进限价单(见我们的订单类型指南)。这个限价同样要遵守上述规则。官方 Python SDK 的市价单函数就是这样做的:先按滑点调整中间价,再取 5 位有效数字,并按永续 6 − szDecimals(现货 8)位小数取整。如果你自己计算滑点价或触发价,例如 mid × 1.03,发送前也要同样取整。止盈止损的触发价也一样(止盈止损指南)。
末尾零与浮点数陷阱
签名文档把末尾零列为签名错误的常见原因,tick size 页面也说明应去掉末尾零。应发送 "78.62",而不是 "78.620"。SDK 的 float_to_wire 会以 8 位小数格式化数值,如果这改变了数值就报错,并去掉末尾零。另外两个好习惯:
- 先按规则取整,再格式化。像
0.1 + 0.2这样的二进制浮点数并不精确,构造发送值时应经由字符串或Decimal转换。 - 启动时缓存
meta中的szDecimals,并定期刷新,因为会有新币上线,数值也可能变化。每次调用meta都会消耗请求权重(见速率限制)。
Python 工具脚本
该脚本读取 metaAndAssetCtxs,为几个币种计算 tick、步长和 10 美元最低数量,并包含可复用的 round_px 和 round_sz 函数。它只读取公开数据。若要下真实订单,请先在测试网上试,并参考我们的 Hyperliquid API Python 指南。
import math
import requests
INFO = "https://api.hyperliquid.xyz/info"
def post(body):
return requests.post(INFO, json=body, timeout=10).json()
def tick_size(px, sz_decimals, is_spot=False):
"""Smallest valid price step at this price level."""
max_dec = (8 if is_spot else 6) - sz_decimals
if px >= 1e5: # integer prices are always allowed
return 1.0
sig_step = 10 ** (math.floor(math.log10(px)) - 4) # 5 significant figures
return max(sig_step, 10 ** -max_dec)
def round_px(px, sz_decimals, is_spot=False):
if px >= 1e5:
return float(round(px))
max_dec = (8 if is_spot else 6) - sz_decimals
return round(float(f"{px:.5g}"), max_dec)
def round_sz(sz, sz_decimals):
return round(sz, sz_decimals)
def min_size(px, sz_decimals, min_notional=10.0):
step = 10 ** -sz_decimals
return math.ceil(min_notional / px / step) * step
if __name__ == "__main__":
meta, ctxs = post({"type": "metaAndAssetCtxs"})
for a, c in zip(meta["universe"], ctxs):
if a["name"] in ("BTC", "ETH", "SOL", "HYPE", "XRP", "DOGE", "kPEPE"):
px, d = float(c["markPx"]), a["szDecimals"]
print(f'{a["name"]:6} px={px:<12} szDecimals={d} lot={10**-d:g} '
f'tick={tick_size(px, d):g} min_size_$10={min_size(px, d):.{d}f}')
2026 年 10 月 22 日 UTC 07:04 的输出:
BTC px=82453.1 szDecimals=5 lot=1e-05 tick=1 min_size_$10=0.00013
ETH px=2430.45 szDecimals=4 lot=0.0001 tick=0.1 min_size_$10=0.0042
SOL px=104.43 szDecimals=2 lot=0.01 tick=0.01 min_size_$10=0.10
DOGE px=0.079639 szDecimals=0 lot=1 tick=1e-06 min_size_$10=126
kPEPE px=0.004486 szDecimals=0 lot=1 tick=1e-06 min_size_$10=2230
XRP px=1.3395 szDecimals=0 lot=1 tick=0.0001 min_size_$10=8
HYPE px=78.619 szDecimals=2 lot=0.01 tick=0.001 min_size_$10=0.13
一个细节:把价格取整到最近的 tick 时,要有意识地选择方向。被动买单应向下取整,以免意外穿越价差(会立即成交的 post-only 订单会以 BadAloPx 被拒)。激进的买入限价单应向上取整,确保限价至少和你原本的意图一样宽松。
订单簿聚合不等于 tick size
l2Book 请求和 WebSocket 订单簿推送支持可选参数 nSigFigs(2 到 5),用于合并档位。在我们的测试中,nSigFigs = 3 时 BTC 档位显示为 82,400、82,300、82,200。这只是展示上的分组,可交易的 tick 仍是 1 美元。订单簿推送详见 WebSocket API 指南。
为什么这不只关乎机器人,也关乎交易者
- 穿越成本:像 kPEPE 这样 tick 较粗的市场,最小价差约 2.2 个基点,会叠加在手续费和滑点之上。
- 小账户:10 美元下限和整数步长决定了你能开的最小仓位,用仓位计算器确定仓位时要考虑这一点。
- 网格与做市机器人:不是 tick 整数倍的网格间距会被拒绝,或被你的代码悄悄取整。参见做市指南。
常见问题
Hyperliquid 的 tick size 是多少?
没有固定表格。价格最多 5 位有效数字,永续最多 6 − szDecimals 位小数(现货 8 − szDecimals),整数始终有效。2026 年 10 月 22 日,BTC 为 1 美元,ETH 为 0.1 美元,HYPE 为 0.001 美元。
"Price must be divisible by tick size" 是什么意思?
你的价格对该资产来说有效数字或小数位过多。先取 5 位有效数字,再按 6 − szDecimals(现货 8 − szDecimals)位小数取整,并去掉末尾零。
Hyperliquid 的最小下单量是多少?
订单价值至少 10 美元(现货为 10 个计价代币),且数量必须是步长 10^−szDecimals 的整数倍。BTC 约 82,450 美元时为 0.00013 BTC。
在哪里找到 szDecimals?
永续合约在 info 响应 meta 的 universe 数组中,现货在 spotMeta 的每个代币上。
tick size 会变吗?
会,随价格变化。币价跨越 10 的整数次幂时,5 位有效数字规则会给出不同的步长。例如 ETH 高于 10,000 美元时 tick 会变为 1 美元。
在 Hyperliquid 官方应用里交易需要关心这些吗?
应用会自动取整。当你使用 API、机器人或第三方前端,或者想知道限价为什么被调整时,这些规则才重要。
看看你的订单实际执行得如何。把任意钱包粘贴到 Hyperfolio,即可在一个只读视图中免费追踪持仓、成交和盈亏。在 Hyperliquid 交易?使用邀请码 HYPERFOLIO 可享 4% 手续费折扣(邀请码说明)。
免费试用 Hyperfolio
实时追踪 Hyperliquid 投资组合,包含盈亏、Smart Money、Markets、Perp Calculator、多 venue 投资组合和推送提醒。
HYPERLIQUID
-4% fees在 Hyperliquid 交易 · 手续费 4% 折扣
Hyperfolio 是独立应用,免费使用,无需订阅。我们的资金来自 Hyperliquid 推荐、广告位和捐赠;非常感谢您通过我们的链接交易。
对您免费 · 让 Hyperfolio 持续运行
相关文章
Hyperliquid 清算地图:真实清算价位(2026)
用真实链上持仓而非估算热力图构建 Hyperliquid 清算地图。以 2026 年 11 月 2 日账户价值最大的 300 个账户为例,讲解如何解读清算集群与集中度,并附 Python 脚本。
指南Hyperliquid 最佳交易时间:按小时与星期(2026)
基于 672 根小时 K 线(2026 年 10 月 4 日至 11 月 1 日),按 UTC 小时和星期统计 Hyperliquid 上 BTC、ETH、HYPE、SOL 的成交量与波动率高峰,及其对滑点、止损和资金费率的影响,附 Python 脚本。
指南Hyperliquid 多空比:解读交易者持仓(2026)
为什么 Hyperliquid 全市场多空比永远是 1,如何用公开数据计算一组钱包的多空比,排行榜前 100 交易者的带日期案例,以及 Python 脚本。
指南Hyperliquid 夏普比率:风险调整后收益指南(2026)
用公开 portfolio 接口计算任意 Hyperliquid 钱包或金库的夏普比率和索提诺比率:充值提现陷阱、带日期的排行榜与 HLP 示例,以及 Python 脚本。
指南Hyperliquid 相关性与 beta:加密永续合约对冲指南(2026)
用公开 K 线 API 计算 Hyperliquid 的相关性和 beta:BTC、ETH、HYPE、SOL、XRP 和 DOGE 带日期的 30 日与 90 日矩阵、三个组合与对冲示例,以及 Python 脚本。
指南Hyperliquid 波动率与 ATR:止损、仓位与杠杆(2026)
用公开 K 线 API 自己计算 Hyperliquid 波动率:带日期快照中 BTC、ETH、HYPE、SOL、XRP 和 DOGE 的已实现波动率与 ATR,附止损、仓位和杠杆示例及 Python 脚本。