返回风控与心理
风控与心理

合约交易成本怎么算?手续费、滑点与净盈亏

Trader Stan·2026.10.19·阅读时间 16 min

合约交易成本要按成交逐笔计费,再分开资金费与其他调整。USDT线性合约用数量乘价差算价格盈亏,不能用保证金当计费基数。已用成交价计入滑点,就不再扣同一段价差;预留资金费不等于实际扣款。价差减已核实费用才得到相应口径的结果;费用未齐只列部分结果。本文用BTC历史行情与假设成交示范对账,资料不齐时保留待查,不补成实盘净盈亏。

计划最多亏50 USDT,最后对账却出现三个数字:35.39、39.303305、40.303305。哪一个是这笔交易的损失?如果只挑最小的,费用可能漏掉;如果全部加起来,同一段滑点或一笔预留,又可能被算了两次。

我更在意的是,你能不能说清每个数字从哪里来。下面先分开价差、交易费与持仓成本,再沿同一段BTC行情,把一笔空单从等待入场算到退出。账算得清楚,才能知道问题出在事前预算、实际执行,还是资料根本没收齐。

合约交易成本先分清价差、费用与资金占用

价格盈亏、额外收费与保证金占用要分开记。 本篇只处理以USDT报价及结算、数量用BTC表示的线性永续合约;BTC是比特币,USDT是稳定币。以币作保证金及结算、采反向算式的币本位合约,计价不同,不直接套用下方全部算式。商品与仓位的完整顺序,可先接回永续合约入门流程。

毛盈亏、净盈亏与账户余额,不是同一个数字

这里把「数量乘进出价差」称为价格毛盈亏;再按归属加减交易费、资金费及其他已核实调整,才算该口径的净盈亏。Bybit官方《P&L Calculations》2026年8月12日版本区分未实现价格盈亏与含交易费、资金费的平仓结果,说明了只看浮盈为什么容易少算。实际对账前,仍要确认平台字段是否已含费,不能只按中文名称猜。

账户余额的变化则可能包含其他仓位、入出金、资金划转与延后入账项目。你转入100 USDT,余额增加,不代表这笔合约赚100。保证金解除占用也不是多赚一笔,不能把开仓时被占用、平仓后释放的资金再算进收益。

概念图分开价格毛盈亏、交易费、资金费收付及资金占用,保证金释放与账户余额不是本笔获利。

手续费看成交金额,Maker和Taker看实际角色

线性合约的每笔交易费,可先用「成交数量×成交价格×该笔适用费率」理解,开仓与平仓各算各的。OKX官方《合约交易手续费怎么计算?》2026年8月26日版本采成交价值乘费率,若平台用张数,还要带入合约面值与乘数;换成BTC数量后才对得上本文单位。保证金不是计费基数,同样数量只改杠杆,不能把交易费直接除以杠杆。

Maker是提供流动性的成交角色,Taker是取走既有流动性,不等于「限价一定便宜、市价一定贵」。限价若立即与已有委托撮合,也可能按Taker处理。Bybit《Post-Only Order》以可能立即成交就取消的方式说明这个差别:挂单意图不等于已成交,更不是所有退出都适合为了费率继续等。

滑点有两种记法,选一条路算到底

滑点可以单独分析,但不能重复扣除。 先固定比较的参考价,再记实际或假设成交价;若两者的差异已经进入价格盈亏,就只作执行偏差说明,不再多扣一次。资金费则另依结算资格与实际收付对账,不能和这段价差混成同一项。

已用成交价算盈亏,就不再扣同一段滑点

空单退出是买回,若计划78600退出,最后均价78620,这20 USDT/BTC就是相对该计划价的不利偏差。它不是额外出现在账单上的另一张20元收据。若入场价减掉78620已算过,就已承担这段价格差;若先按78600算计划盈亏,才需要另减数量乘20。两条路用相同费用和数量时,结果应相等。

参考价若换成送单时最佳报价、触发价或中间价,量到的偏差会不同。价差、流动性与行情移动也可能同时影响成交,不能把同一段偏差拆成几个名称后全部扣一遍。设定滑点容忍也不是成交保证;Bybit《Market Order with Slippage Tolerance》说明,范围内流动性不足时仍可能只成交部分,剩余量须另行处理。

资金费预留是预算,不是已发生的扣款

事前预留1 USDT,是替可能发生的持仓支出留空间;事后要填多少,仍要看当期费率、合资格持仓数量与账户流水。预留没用到,不必制造一笔支出;尚未核清,也不能为了凑出整齐总额直接填零。

资金费收入则要放对方向。若统一记「支付为正、收取为负」,净盈亏减去这个有符号金额,收到款项时就会增加结果。平台账单若用另一套正负号,先转成同一口径再加总。收付时间与数量的细节,可接续资金费率是什么?结算时间、支付方向与持仓成本。

BTC历史案例:把同一笔空单的成本接完整

下面用Binance USDⓈ-M Futures公开的Kline/Candlestick Data(合约K线),取2026年9月10日至11日BTCUSDT永续历史行情,示范怎么把价格事件接到成本账。时间采UTC(协调世界时),UTC+8时区加八小时;四小时与十五分钟K线都以开盘时刻命名,完整价格范围等收盘后才可确认。行情是真实历史,但下方数量、成交价、费率及预留全部是教学假设,没有实际下单或私人账单。

第一步:确认价格时序,再列成交假设

这份计划等四小时收盘低于9月8日已知日低77,600.1;9月10日12:00那根收77,218.5,到16:00才确认。确认后回查前六根已完成K线,最近的阳线是10日00:00那根,取其完整影线范围,固定观察区77,912.2至78,543.9,等待首次回测下缘做空,按最新成交价观察78,600.0止损,目标76,536.6。只等接下来六根四小时,到11日16:00前仍未触及就取消;入场前四小时若先收盘上破观察区上缘78,543.9,或下一段十五分钟开盘直接高于上缘,也取消。

历史十五分钟图中,11日12:30那根最低到76,000.3,最高却只有77,671.4,还没到入场价,不能把这个低点算作空单获利。12:45–13:00才首次包含77,912.2;之后各根未先到目标,到13:45–14:00才跨过78,600.0。这两段分属不同K线,能核对触价顺序,却不能证明委托已触发或成交,也不提供标记价格的路径。标记价格是平台用于估值与风险判定的参照,与最近一笔撮合的最新成交价不同。

现在另作明确假设:空单在77,912.2全数成交0.050 BTC,事前另设退出偏差20的压力情境,因此假设退出均价为78,620.0。这20属教学滑点设定,不是K线提供的成交回报;它位于该根高低范围内,也不因此变成可取得的保证价格。原数量如何同时受风险与资金占用限制,可看止损距离与仓位大小。

BTCUSDT15分钟历史图:12:30低点在入场前、12:45首次触及77912.2、13:45跨78600;后续遮蔽,78620另标假设。

第二步:逐笔算开仓与平仓费

假设两端费率各为0.05%,且费用都以USDT计,不代表交易所现行报价或个人等级。百分比要先换成0.0005,不能把0.05直接乘进去。开仓名义成交额为0.050×77,912.2=3,895.61,开仓费1.947805 USDT;平仓名义成交额为0.050×78,620.0=3,931.00,平仓费1.9655。两端合计3.913305。

开仓和平仓价格不同,不能只把开仓费乘二代替;这次差额虽小,数量或价差放大后仍会累积。若实际分成几笔,每笔按自己的价格、数量与适用费率计算,再合计。这份假设账只有一笔完整入场与一笔完整退出,所以先确认两侧数量同为0.050,才继续结算。

教学0.050BTC按77912.2与78620双边0.05%计费,开仓1.947805、平仓1.9655,合3.913305USDT。

第三步:用两条路核对滑点没有扣两次

第一条路直接使用假设成交价:价格毛盈亏是0.050×(77,912.2-78,620.0)=−35.39 USDT,再扣交易费3.913305,得到−39.303305 USDT。这个数字只完成了价格与交易费,尚未包括未核清的资金费与其他调整。

第二条路从计划退出价开始:0.050×(77,912.2-78,600.0)=−34.39。相对计划的不利滑点为0.050×20=1,再扣同一笔3.913305交易费,结果仍是−39.303305。两条路对上,表示这一段退出偏差没有漏算,也没有重复扣。用78600计算的平仓费会不同,因此对照时两条路都采78620的同一假设成交费。

计算路径价格盈亏USDT另扣同段滑点交易费USDT未含资金费等的结果
成交价路径−35.39不再扣3.913305−39.303305
计划价路径−34.391.003.913305−39.303305
错误重扣示范−35.39又扣1.003.913305−40.303305,重复计费
完整比较表:成交价路径与计划价路径同得−39.303305,错误重扣得−40.303305;均未含未知资金费与调整。

第四步:资金费未知,就先保留未完成的结算

原计划另外预留1 USDT资金费,所以事前把35.39、3.913305与1相加,成本情境预算是40.303305 USDT。它恰好和上表错误重扣的绝对值相同,意义却不同:一个是在做预算,一个是把已计入的滑点再扣一遍。只看总数,找不到这个差别。

这个短时段模型按假设在当日下午结束,但账户是否参与结算、是否有延后入账与其他费用,仍未取得私人记录。资金费栏填「待对账」,预留栏另记1。不能因为想让电子表格显示最终答案,就宣布资金费已扣1或确定为零;−39.303305也不能改名为账户最终净盈亏。

若之后核实资金费支付0.4、没有其他调整,同一套算式才得到−39.703305;若反而收取0.4,则是−38.903305。两者都只是另外设的对账情境,不是这组教学情境的已知结果。补来的每笔费用还要核商品、账户、资产与期间,不能把别笔仓位的一次扣款塞进来。

这份记录可以先标成「假设价格与交易费已算、其他费用待查」,不用强迫每一列都显示已结算。若0.050完全没有成交,应记未成交计划,不能沿用这笔损失;若只有部分成交,就按已确认数量重做,剩余委托另查取消状态。账算到哪一层,要和证据齐到哪一层一致。

事前预算40.303305含固定1预留;事后价格费用部分−39.303305,资金费等未知,不能记成最终净盈亏。

第五步:改数量或费率,另存一份情境

只把数量减半成0.025 BTC,其他价格与费率不变,价格损失变17.695,交易费变1.9566525,两项合计19.6516525。若仍保留固定1 USDT,预算为20.6516525,而不是把40.303305全部除二。固定金额与随成交量变动的费用,缩放方式不同。

另一份情境保持0.050 BTC,只把两端费率加倍为0.10%,交易费变7.82661,含同一笔1 USDT预留的预算为44.21661。价格盈亏不因此改变,费率降低也不会使一笔先止损的交易变成看对行情。每次只改指定条件,保留原结果,才知道差异从哪里来。

基准、数量减半及双边费率加倍的独立情境预算分别40.303305、20.6516525、44.21661;固定预留不跟数量缩放。

成本对不上,先查字段再改公式

先确认每项费用属于哪一笔成交、哪种资产和哪个期间,再核算式。 少了费用币别、把部分成交当全数退出,或将平台已含费的结果再扣费,算得再多位小数也不会更准。遇到这些缺口,先停止完整净盈亏计算,保留已核清的部分。

分批成交与不同费用币别,逐笔归属

每笔至少记成交识别码、时间与时区、方向、价格、数量、交易费及费用币别。分批均价用价格乘数量的总和除以该侧总数量,不能拿最后一笔价格代表全部。出入数量未对齐,就先找未成交余单、剩余仓位或漏掉的成交,不硬把两边当成已结束交易。

费用若不是USDT,先保留原币数量,再记换算时点、汇率及来源。没有换算依据,就只列各资产原额与待查项,不把USDT与另一种代币直接相加。这是统一对账单位,不表示所有平台都用其他币收这笔合约费;实际收费资产仍以记录为准。

平台已含费的结果,不能再扣一轮

OKX《交易手续费规则常见问题》将合约已实现结果与交易、资金费放在一起解释;Bybit的平仓结果也有自己的费用归属口径。若画面给的是已扣相关费用的数字,再减一次开平仓费,就不是更完整,而是重复扣。反过来,原始成交表中的价差栏也不能只凭「已实现」三字就认定全部含费。

还要留意费用后到或跨日的情况。第一次对账未齐,可以保留「暂结、待资金费」;补齐后再更新,留下调整来源。不要一面用账户余额差核总额,一面又把同一笔已在余额扣过的费用减掉,最后误以为平台多收。

把成本放回事前计划与复盘

成本记录的用途,是让下一份预算更接近可能遇到的情境,并保留超支原因。完整记录价格偏差、费率与未知项,比只把最高杠杆调低一格更能指出问题;但任何预留都不能保证实际最大损失,行情与执行条件仍可能超出设定。

降费与保护退出,各有取舍

如果只为了Maker费率而等待,价格可能先离开,退出也可能没有完成。若采市价或带价格限制的委托,则要知道流动性不足时如何处理余量。费用优化必须放在原先风险与退出条件内比较,不能先把必须退出的规则取消,再说自己省下一笔费用。

后续学习与使用范围

把计划价、假设成交价、实际成交价和费用分栏,可沿用交易日志的字段与模板。合约止盈止损怎么设?触发价格、成交与只减仓,接续处理退出委托;资金费则按前述方向与结算逐期记,不拿预留替代账单。先把这一笔算得回去,再扩大到整批交易,会比只看一个胜率更有用。

本文仅供合约机制与历史计算练习,不构成投资建议。历史价格不证明可取得的成交,所有示例费率、滑点与账户设定均为假设;真实交易可能有未成交、因保证金不足被强制平仓,以及额外成本。

常见问题

Q1. 合约手续费是用保证金乘费率吗?

本文USDT线性合约按每笔成交数量、价格与适用费率计算。若以张数表示,须先核面值及乘数;保证金占用不是同一个计费基数。

Q2. 限价单一定按Maker费率收费吗?

不一定。立即与既有委托撮合的限价单也可能是Taker。Post-only可能因会立即成交而取消,不能把挂单意图当成已成交。

Q3. 已经用成交价算盈亏,还要扣滑点吗?

不再扣同一段已包含的偏差。可以另列滑点作执行分析,或从计划价路径扣一次;两条路应使用同一数量及交易费。

Q4. 预留1 USDT资金费,可以直接记成支出吗?

不能。预留属事前预算,实际支付或收取仍按账户流水。未知时填待对账,不填1或零来凑最终结果。

Q5. 不同币别的交易费怎么加总?

先保留原币数量,再记换算时点、汇率与来源。缺少换算依据就保留待查,不能把不同资产的数字直接相加。

Q6. 为什么成本表对不上平台显示的净盈亏?

先核字段是否已含费,再查成交数量、费用资产、资金费、期间与延后入账。账户余额还可能包含其他交易及划转,不直接等于本笔结果。

合约交易成本合约手续费滑点净盈亏Maker Taker资金费永续合约风险管理