Skip to main content
结算路径上的每一个数都是整数。任何能影响余额的地方都没有浮点数——因为两台机器计算同一个浮点表达式,可能在最后一位上不一致,而在共识执行路径上,最后一位的不一致就是一次分叉。 所以价格和数量都按固定的整数单位保存;你输入的值和协议存下来的值之间,每一次转换都有规定好的舍入方向。

最小价格变动单位与最小数量单位

两者都按市场设定,公布在合约规格里。不符合的订单会被拒,不会被悄悄调整——一个偷偷替你把价格取整的场所,等于没打招呼就改了你的订单。

舍入是一个风险决策

舍入方向不是排版偏好。每一个舍入选择都把一小部分误差分配给了某个人,而规则是一致的:误差会制造风险的地方,保守地舍入;误差会构成系统性转移的地方,公平地舍入。

朝对账户不利的方向保守舍入

规律是:凡是回答这个账户还能承担多少的量,都朝对账户不利的方向舍。保证金要求向下舍掉一个零头,在整个场所的每一个仓位上重复一遍,就成了对风险的系统性低估——单次很小,而且恰好是那种只在要紧关头才冒出来的误差。

公平地舍入

在这些字段上,固定一个方向就成了转移,而不是安全边际。总是向上舍的手续费是隐性加价,总是向下舍的手续费是补贴。四舍五入让哪一边都占不到系统性的便宜。 有一个例外:会舍成零的手续费改为向上舍。一笔一分手续费都不付的交易,比一笔付了最小可表示金额的交易更糟。
这就是为什么你看到的仓位价值、保证金占用和盈亏,可能和你自己算的差一个最小单位。这个差不是错——那是那个字段的舍入规则被有意执行的结果。

实践中意味着什么

  • 提交前先对齐 tick size 和 lot size:价格不合最小变动单位,是最常见、也最容易避免的拒单原因。
  • 别下满到最后一个单位:可用保证金资产向下舍,保证金要求向上舍,所以一笔正好按可用余额算出来的订单可能被拒。留一点余量。
  • 显示上有细微差异是正常的:想精确复现一个数,就得拿同样的整数输入套同样的舍入规则,而不是用浮点重算一遍。
  • 从整数重建:程序化对账就在协议的单位下算。转成十进制类型再转回来,等于把整数本来要消除的那种歧义又请了回来。

后续阅读

市场

各市场的最小价格变动单位、最小数量单位与合约规格。

IntentionKernel

为什么定点算术是共识层面的硬性要求。

保证金模式

保守舍入在你的可用余额上体现在哪里。

手续费

费用如何计算与舍入。