按下文欧易与 Bybit 的平均成本算法,同一合约、同方向仓位加仓后要重算均价,部分平仓则沿用原均价;这里先看没有发生结算重置的情况。加仓价与原均价不同时,新均价会向它靠近;平掉一部分,价差记入已实现盈亏。
先分清 USDT 线性合约与美元面值的反向合约,两者各用一条公式;同一算式中的数量必须使用相同单位。后面再看欧易交割合约和 Bybit USDC 永续的结算重置。下文自设算例以 USDT 计价,币本位例子以美元计价。
U 本位合约加仓后的开仓均价:按数量加权,不是两个价相加除以二
欧易帮助中心「交割合约盈亏计算规则」(更新于 2026 年 8 月 11 日)把 U 本位保证金合约的开仓均价写成:(当前持仓量 × 开仓均价 + 加仓量 × 加仓价格)÷(当前持仓量 + 加仓量)。页面自带的例子是 10 张多单、均价 100,000,再以 160,000 开多 5 张,新的均价 =(100,000 × 10 + 160,000 × 5)÷ 15 = 120,000。
Bybit 帮助中心「开仓均价(永续和交割合约)」(更新于 2026-08-19)对 USDT 合约给的是同一个意思:合约总价值 ÷ 合约总数量,总价值是每一笔的数量乘价格再相加。它的例子是 10,000 买入 1 BTC,之后 13,000 再买 2 BTC,均价 =(1 × 10,000 + 2 × 13,000)÷ 3 = 12,000。
两家的例子都在提醒同一件事:数量大的那笔权重更高。Bybit 那个例子里两个价的中点是 11,500,实际均价 12,000,因为 13,000 那笔买了两倍的量。
换一组往下加仓的数。假设你在 60,000 开多 0.2 BTC,跌到 57,000 又加了 0.1 BTC:
- 原仓位价值:0.2 × 60,000 = 12,000
- 新增仓位价值:0.1 × 57,000 = 5,700
- 新的开仓均价:(12,000 + 5,700)÷ 0.3 = 59,000
均价只从 60,000 降到 59,000,没有降到两个价的中点 58,500。想靠补仓把均价拉下来,加的量比原仓位小,拉不动多少。
减仓、部分平仓之后,开仓均价为什么没变
按平均成本计算,部分平仓带走的是相同比例的数量与开仓成本,因此剩余成本除以剩余数量,均价不变。这是对上述均价公式的推导。例如 0.3 BTC 对应 17,700 USDT 开仓成本,平掉三分之一后,剩余成本 11,800 USDT ÷ 0.2 BTC,仍是 59,000 USDT。
平掉的那部分去了哪,欧易同一页有另一条公式接着:U 本位多仓的平仓收益 = 面值 × 平仓量 × 合约乘数 ×(平仓价格 − 开仓均价)。平仓是拿成交价去和均价比,差额落进已实现收益,均价本身只是被拿来用了一下。
接着上面的仓位:0.3 BTC 多单,均价 59,000。假设价格回到 61,000,你平掉 0.1 BTC。
- 这次平仓的价差收益:0.1 ×(61,000 − 59,000)= 200 USDT
- 剩下 0.2 BTC,开仓均价仍是 59,000
容易想成这样:平掉的是 57,000 加的那 0.1,剩下的 0.2 应该回到 60,000 的成本。合约仓位不这么记。同一个合约、同一个方向只有一个仓位、一个均价,系统不区分哪 0.1 是哪次买的,你也没法指定「先平便宜的那笔」。
反过来,减仓也不能把均价往有利的方向挪。盈利时平掉一部分,剩下仓位的均价照旧,落袋的那部分记在已实现盈亏里。各家的已实现盈亏是否包含手续费和资金费,计算方式不一样,见已实现盈亏的三家算法对照。
欧易那句话里还有「反向开仓」。单向持仓下,反方向的单子数量超过现有仓位,多出来的部分会开成一个相反方向的新仓位。页面只说这种情况会改变开仓均价,没给算式;照均价的定义推,若新方向的开仓部分只按一个价格成交,均价就是该成交价;若分多笔、不同价格成交,则要对新开部分重新加权。点反方向到底是平仓还是另开一单,取决于单向持仓还是双向持仓。
币本位合约加仓,均价为什么比心算的低
币本位合约用的是另一条公式,照 U 本位那样乘完再除,结果会偏高。欧易同一页写的是:(当前持仓量 + 加仓量)÷(当前持仓量 ÷ 开仓均价 + 加仓量 ÷ 加仓价格)。例子是 10 张空单、均价 100,000,再以 80,000 开空 5 张:
(10 + 5)÷(10 ÷ 100,000 + 5 ÷ 80,000)= 15 ÷ 0.0001625 ≈ 92,307.69 美元
Bybit 对反向合约的写法一致:合约总数量 ÷ 合约总价值,总价值是每笔的数量除以价格再相加。它的例子是 10,000 买 50 张、15,000 再买 50 张,均价是 100 ÷(50 ÷ 10,000 + 50 ÷ 15,000)= 12,000。
把这两组数分别代进两条公式,结果保留两位小数,单位为美元:
| 两笔开仓 | 套 U 本位公式 | 币本位公式(按公式复算) | 相差 |
|---|---|---|---|
| 10 张 @ 100,000,加 5 张 @ 80,000 | 93,333.33 | 92,307.69 | 约 1,025.64 |
| 50 张 @ 10,000,加 50 张 @ 15,000 | 12,500 | 12,000 | 500 |
原因在面值。币本位合约每张对应的是固定金额的美元,用币结算;同样 50 张,价格低的时候折成的币更多。均价是按币的数量摊的,低价那一笔占的分量就更重,结果总是往低价一侧偏。数量和盈亏为什么都得倒过来算,U 本位与币本位合约的对照那篇有完整的例子。
没加仓也没减仓,开仓均价自己变了
两份官方页面各写了一种会把均价直接换掉的情况。
第一种是结算。欧易那一行的后半句:「结算时开仓均价会更新为结算价格」。同页的 U 本位多仓结算收益公式是面值 × 持仓量 × 合约乘数 ×(结算价格 − 开仓均价),已实现收益 = 平仓收益 + 结算收益 + 交易手续费。连起来读:结算那一刻,仓位按结算价把浮动的盈亏结成已实现的,然后均价改成结算价,之后的浮动收益从这个新价重新算起。这一页讲的是交割合约。
第二种是 Bybit 的 USDC 永续合约。Bybit 那页写的是:开仓均价是「当前结算周期内」的仓位加权平均价格,「在每个结算周期结束时,结算时的标记价格将成为新的开仓均价」;页面还注明,接口里对应的字段叫 sessionAvgPrice。同一页上 USDT 合约和反向合约的段落没有这句话。
碰上这两种合约,持仓栏的开仓均价回答的是「上次结算以来从哪个价起算」,不是「我当初多少钱买的」。均价跳了不等于钱少了,跳之前的浮动盈亏已经结进已实现那一栏。要找最初的成交价,得去翻成交记录。
币安仓位历史里的进场价格包含手续费吗
币安帮助中心「如何使用币安合约上的仓位记录功能」(发布于 2023-05-02)对【仓位历史】里的字段有两行说明:「进场价格:该仓位的平均进场价格」「平均平仓价格:该仓位平仓的平均价格」,并注明交易手续费没有被纳入计算。这里说的是仓位历史中的进场价格:它是平均数,不含交易手续费。
查成交记录时,要把仓位历史的平均进场价与当前持仓分开看。仓位历史记录一段持仓过程,后续已经减仓、再加仓时,不宜拿历史均价直接代替当前剩余仓位的开仓均价。
币安持仓栏上另有一个盈亏平衡价格,那个数才把手续费算了进去。两个价不一样是正常的。
开仓均价一变,持仓栏上哪些数跟着动
未实现盈亏最直接。欧易的浮动收益公式,U 本位多仓是面值 × 持仓量 × 合约乘数 ×(标记价格 − 开仓均价),均价是被减的那一头。
逐仓的预估强平价也在里面。欧易「合约盈亏计算规则」(更新于 2026 年 8 月 11 日)逐仓一节的预估强平价公式里,开仓均价和张数都在。加仓同时改了这两个量,强平价跟着重算;加完仓再看一眼强平价,比只盯着均价有用。强平为什么按标记价格触发,见强平价和标记价格。
手续费不看均价。每一笔成交按它自己的成交价和数量收,加仓、减仓各收各的。
加仓拉低均价之后,账面亏损变没变
加仓把开仓均价拉低了,亏损是不是就少了?
只有均价降低,不能说明亏损减少。假设 USDT 线性合约在 60,000 开多 0.2 BTC,标记价格到 57,000 时,浮亏为 0.2 ×(60,000 − 57,000)= 600 USDT;此时恰好以 57,000 加仓 0.1 BTC,且标记价格不变,新均价为 59,000,浮亏为 0.3 ×(59,000 − 57,000)= 600 USDT。这里未计手续费和资金费;若加仓成交价与标记价格不同,新增部分会立即产生相应浮盈亏。变的是仓位:从 0.2 变成 0.3,之后价格每动一步,盈亏的变化都是原来的 1.5 倍,回本需要的涨幅小了,继续下跌时亏得也更快。另外,加仓那一笔还要再付一次开仓手续费。