部分平仓与移动止损并用:容易出错的环节与自查清单
目录 (5)
目录
结论:出问题的往往不是逻辑,而是“状态的传递”
部分平仓和移动止损,单独实现都不难。问题出在把两者同时作用于同一个持仓时。根据我们的开发经验,问题几乎都集中在以下3处:
- 剩余仓位管理:EA记不住“是否已经部分平仓过”
- 手数步长:平仓手数不符合券商的最小手数或步长
- SL重设顺序:部分平仓、保本移动、移动止损三者互相覆盖
这几类问题在回测中很难暴露,往往要到实盘运行时才会发现。
推荐经纪商比较 →
🎁 免费下载EA📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集
※ 严格保护隐私。可随时取消订阅。
为什么并用时容易出问题
剩余仓位不能依赖EA的“记忆”
在MT5中,部分平仓后持仓的订单号(ticket)不变,只有 POSITION_VOLUME 会减少。如果只用一个 bool 变量记录“已部分平仓”,那么EA重启、VPS重新连接、切换时间周期时,这个值都会丢失。随后的第一个tick,EA就会把剩下的仓位再平掉一半——这是典型的事故。
对此,我们的做法是用 HistorySelectByPosition() 回溯该持仓的成交历史,对比最初的建仓量与当前剩余量,据此判断部分平仓进行到哪一步。内存中的标志位只作为辅助。
手数要“向下取整”,而不是“四舍五入”
0.03手减半是0.015。在步长为0.01的账户上,四舍五入会平掉0.02手,比预期多出手。平仓手数应按 SYMBOL_VOLUME_STEP 向下取整,同时还要确认平仓后的剩余量不低于 SYMBOL_VOLUME_MIN。0.01手本来就无法拆分,必须在设计时明确是“不做部分平仓”还是“全部平仓”,否则EA会不断返回错误。
SL的写入要在最后统一一次完成
PositionModify() 是同时指定SL和TP的函数。如果移动止损处理给TP传入0,TP就会被清除。另外,如果部分平仓后把SL移到保本价的处理,与移动止损上移SL的处理在同一个tick里各自独立运行,后写入的一方会胜出。结果就是,已经上移到保本价的SL可能又被拉低。
我们采用的顺序如下:
- 发送部分平仓指令 → 重新选中持仓并确认剩余量
- 同时计算保本SL和移动止损SL两个候选值
- 只朝“比当前SL更有利的一侧”移动(多单取较高值,空单取较低值)
- 确认止损水平(Stop Level)和冻结水平(Freeze Level)后,TP重新传入当前值,只修改一次
实现与检查清单
| 检查项目 | 出问题时的症状 | 确认方法 |
|---|---|---|
| 是否根据成交历史判断部分平仓的阶段 | 重启后重复部分平仓 | 运行中重新挂载EA,观察剩余量变化 |
| 平仓手数是否按步长向下取整 | 平仓量超出预期,或出现报错 | 用最小手数建仓并查看日志 |
| 是否已决定最小手数时如何处理拆分 | 每个tick都平仓失败 | 用0.01手测试 |
| SL是否不会退回到不利方向 | 保本SL之后仍以亏损平仓 | 在日志中按时间顺序追踪SL的变化 |
| 修改SL时是否清除了TP | 止盈不生效 | 查看修改后持仓的TP栏 |
| 部分平仓失败时是否不移动SL | 剩余量与SL的前提不一致 | 在临近休市等时段下单,制造失败情形 |
| 是否没有在净头寸(Netting)账户上运行 | 与其他EA的持仓被合并 | 确认账户类型 |
站在使用者的角度,最快捷的自查方法是:在模拟账户上用最小手数运行,中途重新挂载EA,看行为是否发生变化。设置的基本方法请参见 EA设置方法。
局限与注意事项
策略测试器中的成交是即时的,订单只成交一部分的情况也几乎不会出现。因此,与部分平仓相关的问题,在回测数据中几乎看不出来。实盘中的成交方式(Filling Mode)差异,以及重新报价时的行为,说实话只能逐个券商去验证。
另外,加入部分平仓并不意味着绩效就会变好。对于胜率较低、靠少数大额盈利支撑整体的趋势跟踪型策略(例如 DONCHIAN ENGINE,回测胜率为34.5%),在利润扩大的阶段减少仓位,可能会拉低期望值。盈亏波动虽然会变小,但代价是什么,必须逐个EA验证才能知道。我们自己也没有验证过所有的组合。
如果要自行给 DONCHIAN ENGINE 这类策略后加部分平仓,请注意原有的验证结果将不再完全适用。
总结
- 部分平仓与移动止损并用时,容易出问题的不是逻辑,而是“状态的传递”
- 部分平仓的阶段要根据成交历史和剩余量来判断,而不是内存中的标志位
- 手数按步长向下取整,并确认剩余量不会低于最小手数
- SL修改集中在一处完成,只朝有利方向移动,且不要清除TP
- 回测中很难发现,所以要在模拟账户上做重新挂载测试
- 部分平仓会让盈亏波动变小,但也可能拉低期望值
其他实现上的注意事项,也整理在 EA・MT5知识库 中。
相关文章
📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集
※ 严格保护隐私。可随时取消订阅。