在 MT5 中看到某个价格触发,不代表订单一定以同一个价格成交。黄金 EA 的执行至少受到 Bid、Ask、点差和滑点四个因素影响。
Bid 和 Ask 分别是什么
- Bid:市场买入价,通常用于卖出开仓和买单平仓。
- Ask:市场卖出价,通常用于买入开仓和空单平仓。
- 点差:Ask 减去 Bid。
因此,BUY 往往按 Ask 成交,却按 Bid 计算当前平仓价值;SELL 往往按 Bid 成交,却需要按 Ask 平仓。这也是订单刚开出时常见小额浮亏的原因。
滑点不是固定点差
点差是同一时刻 Bid 和 Ask 的距离。滑点是请求价格与实际成交价格之间的偏差。两者不能混为一谈。
在流动性不足、重要数据公布、开收盘或快速跳价时,滑点可能扩大。不同订单方向的滑点也不一定对称。
为什么不能简单“预减滑点”
未来滑点在下单前并不是确定值。把一个历史平均滑点固定减到买价或加到卖价,可能让触发逻辑提前或延后,却不能保证最终成交回到理论网格。
更可靠的方法是:
- 记录信号时间、信号价、请求价和成交价;
- 分方向统计实际偏差;
- 按交易时段、点差区间和行情速度分组;
- 在回测或模拟中使用保守成本假设;
- 对超过容忍阈值的环境暂停新周期,而不是伪造“精确成交”。
回测应如何处理
使用固定低点差会高估高频或小止盈策略。应尽量使用真实 Tick 和可变点差数据,并单独增加佣金与保守滑点压力测试。
如果策略的单笔目标只有很小价格距离,交易成本占比会非常高。此时即使方向判断正确,也可能因点差和滑点失去优势。
实盘观察字段
建议每笔订单记录:
- EA 版本和参数摘要;
- 信号方向与信号类型;
- 信号 Bid、Ask 与点差;
- 请求价格和实际成交价格;
- 请求到成交的耗时;
- 经纪商返回码;
- 平仓时的对应数据。
有了这些记录,才能区分策略逻辑问题、点差问题、滑点问题和网络执行问题。