期货交易中的滑点与执行成本:如何测量与降低
什么是滑点,点差、流动性、新闻和延迟如何影响你实际拿到的价格,以及如何在自己的交易日志中测量并降低执行成本。
从回测转到实盘的人都熟悉这一刻:策略本该在某个价位入场,成交回报却是另一个价格。这个差距,加上佣金和交易所费用,就是你的执行成本——它是悄无声息地侵蚀业绩的力量之一。本文把执行成本拆解成各个组成部分,说明如何测量,以及可以做些什么来降低它。
什么是滑点
滑点是你预期的价格与订单实际成交价格之间的差额。如果策略在 NQ 报 20,000.00 时发出买单,而成交在 20,000.75,你就产生了三个 tick 的不利滑点。滑点也可能对你有利,但在快速行情中使用市价单时,它往往是负的。
重要的是要明白,滑点并不是“故障”,而是订单簿运作方式的自然结果:每个价位上挂着的合约数量是有限的。当你要求立即成交时,你只能吃掉现有的挂单;如果第一档太薄,或者价格在你的订单到达前就动了,你就会拿到另一个价格。
订单类型及其对执行的影响
订单类型是决定你要承受多少滑点的第一个选择。
- 市价单:保证成交,不保证价格。当必须立刻进场或离场时很有用,但完全暴露在市场带来的任何滑点之下。
- 限价单:保证你的价格或更优,不保证成交。没有负滑点,但价格可能触及后迅速跑开而不给你成交,或者只成交一部分。
- 止损单:价格触及该价位后变成市价单。这就是为什么在剧烈波动中,止损可能在远超你设定价位的地方成交。
- 止损限价单:触发后限制成交价格,但在极端行情中可能根本不成交,这在平掉亏损仓位时尤其危险。
不存在唯一“正确”的订单类型。突破策略通常需要成交的确定性,而回调到某个价位入场的策略可能适合用限价单。这个选择应当是经过考虑并有记录的,而不是默认设置。
点差、流动性与市场冲击
买卖价差(点差)是买方愿意支付的最高价与卖方愿意接受的最低价之间的差距。在 ES 或 NQ 这类流动性好的合约中,主交易时段的点差通常是一个 tick,但在夜盘、开盘前后或较冷门的合约中,点差可能扩大。
流动性是指当前价格附近可交易的合约数量。你的订单相对于流动性越大,它“吃掉”的价位就越多,这叫市场冲击。对于只交易一两手 MNQ 的交易者,大多数时候这种影响可以忽略不计;但如果你同时把订单复制到多个账户,实际上就相当于下了一张更大的单,这时影响就开始显现了。
流动性在一天中不断变化。了解期货交易时段很有必要,也要记住,凌晨三点的市场与常规时段开盘后的前半小时表现截然不同。
新闻、波动与延迟
在重大经济数据公布前后,订单簿可能在不到一秒内被抽空。买卖双方撤单,点差扩大,价格一次跳过好几档。此时发出的市价单或止损单可能在离预期很远的地方成交。因此,许多交易者以及一些自营交易公司会避免在重要数据公布前后的几分钟内新开仓。请到你所在公司的官方帮助中心查看相关规则。
延迟是指从信号产生到订单抵达交易所所经历的时间。一条自动化链路包含多个环节:生成警报、发送 webhook、处理订单以及连接券商。每个环节都会增加时间,而在快速行情中,每一毫秒都是价格变动的机会。这也是一些交易者选择在靠近交易所的地区用自己的服务器运行策略的原因之一。
佣金与交易所费用
除了滑点,每笔交易还有直接成本:券商佣金、交易所费用、清算费用,有时还有平台或数据费用。按每手计算这些都不多,但一天交易很多次的策略会明显感受到。计算每个来回(入场加出场)的总成本,并把它纳入每一次历史测试。
一个假设的例子:假设每个来回的全部成本是固定金额 X,策略每天交易十次。一个约二十个交易日的月份就是两百笔交易,成本为 200X,这还没算一个 tick 的滑点。如果回测中每笔交易的平均利润接近 X,那么实盘中这个策略可能只是盈亏平衡甚至亏损。
如何在自己的日志中测量滑点
无法衡量的东西就无法改进。下面是一个简单的流程:
- 对每笔交易,记录信号“意图”的价格:产生信号的那根 K 线的收盘价,或者限价、止损价位。
- 从券商结单中记录实际成交价格。
- 计算以 tick 为单位的差值并带上正负号:对你有利为正,对你不利为负。
- 记录时间、订单类型、仓位大小以及附近是否有新闻公布。
- 积累几十笔交易后,按一天中的时段和订单类型计算平均滑点。
结果可能会显示,例如,开盘时的入场比盘中入场成本更高,或者止损的成交比止盈离得更远。这些都是你可以据此采取行动的信息。把同样的数字回填到你的测试中;更多内容见回测与实盘交易一文。
降低执行成本的方法
- 选择适合策略的订单类型,而不是出于习惯使用的那种。看看是否有些入场可以改用限价单。
- 避免在流动性稀薄的时段或新闻前后交易,除非策略本就是为此设计的。
- 使用微型合约以获得更精细的仓位控制,必要时拆分大单。
- 缩短执行链路:环节越少,等待越少,服务器也要稳定。
- 在测试中计入滑点和费用,作为保守假设,让预期保持现实。
- 定期复盘数据,因为市场条件会变,今天成立的结论半年后未必依然成立。
要点总结
- 滑点是交易中固有的一部分,不是程序错误。它源于流动性、市场速度和订单类型。
- 市价单和止损单面临滑点,限价单面临无法成交。
- 新闻和低流动性时段会扩大点差,增加远离预期成交的风险。
- 在高频策略中,佣金和交易所费用会迅速累积。
- 在日志中按时段和订单类型测量滑点,并把数字回填到你的测试中。
WeCore 直接在你的券商或自营交易公司账户上执行来自 TradingView 或你自己策略的信号,交易引擎也可以运行在你自己账户下的云服务器上。一个明智的第一步是使用模拟模式,在转入实盘账户之前先对比成交价格与信号价格。