首页 / 交易学院 / 自定义追踪止损类封装(SAR/NRTR)
自定义追踪止损类封装(SAR/NRTR)
🛡️

自定义追踪止损类封装(SAR/NRTR)

用指标算止损位,封装成可换子类、零改主逻辑的追踪止损

EA 开发实战 难度 · 进阶 2026-07-15 11 分钟阅读
#EA#追踪止损#SAR#NRTR#OOP

价格朝盈利方向移动时,定期把止损拉近,锁定利润、减少回吐。MT5 内置标准追踪,本文教你用指标(SAR/NRTR)算更聪明的止损位,封装成可复用类。

一、追踪止损解决什么问题

MT5 内置标准追踪只在达收支平衡后按固定距离跟;自定义可用 SAR/NRTR 等跟随趋势,趋势反转前就把止损推到更合理的位置。

二、基类 CTrailingStop 设计

三、两个子类

四、集成到 EA 的七步

包含 .mqh → 声明参数 → 建实例 → OnInit 里 Init/SetParameters/StartTimer/On → OnTimer 调 Refresh → OnTick 调 DoStoploss → OnDeinit 调 Deinit。

✦ 换指标零改主逻辑
把追踪止损做成类,EA 里只调 DoStoploss(),换指标(SAR→NRTR→自己写的)只需换子类,主逻辑一行不改。

五、技术细节与回测

⚠ 卖单止损加点点差
卖单止损加点点差这一步极易漏——漏了修改会被拒或平在错误价;用 MathMin/MathMax 把止损夹在允许区间内。

常见问题

内置只在达收支平衡后按固定距离跟;自定义可用 SAR/NRTR 等跟随趋势,趋势反转前就把止损推到更合理的位置。
基类管通用流程,子类只管指标怎么给止损价,换指标零改主逻辑;还能多品种多策略同时挂不同追踪类。
卖单按买价(Bid)平仓,而止损价挂在卖价侧,两者差一个 spread;不加的话止损位会偏,触发异常或被拒。
每 tick 改止损既耗资源又可能因最小距离限制被拒;文中有每 tick / 每 bar 两种模式,震荡市用每 bar 更稳。
文中样例 SAR 版盈利改善更明显,NRTR 接近但偏弱;但结论依赖具体品种与时段,换市场要重测,别当成铁律。