Hyperfolio
指南

Hyperliquid Tick Size 与 Lot Size 2026:szDecimals 详解

Hyperliquid tick size 与 lot size:5 位有效数字、szDecimals、10 美元最低下单额、BTC/ETH/HYPE 实时数值及避免订单被拒的 Python 工具。

2026年10月22日10 分钟

简要结论:在 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。

永续合约标记价格szDecimalsLot sizeTick sizeTick 占价格比例10 美元对应最小数量
BTC82,453.150.0000110.0012%0.00013
ETH2,430.4540.00010.10.0041%0.0042
SOL104.4320.010.010.0096%0.10
HYPE78.61920.010.0010.0013%0.13
XRP1.3395010.00010.0075%8
DOGE0.079639010.0000010.0013%126
kPEPE0.004486010.0000010.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 脚本。