EA-17138 · 趋势跟踪

ExpBuySellSide

该EA基于ATRStops和StepUpDown双指标趋势跟踪系统进行交易。当两个指标同时发出上升趋势信号时开多仓,同时发出下降趋势信号时开空仓,可选追踪止损和反向信号平仓功能。资金管理支持固定手数和基于风险百分比的动态手数。

打开交互版(权益曲线、切换品种)

基本信息

风险中等
爆仓风险高
评分★★☆☆☆
类型交易型 EA
周期M15, H1, H4, D1
指标ATR, SMA, SMMA, ATRStops
作者Roberto Jacobs (3rjfx) ~ By 3rjfx ~ Created: 2016/12/07

回测结果(H1,约 1 年)

品种盈亏年化最大回撤交易数胜率夏普恢复因子最长连亏每笔期望状态
EURUSD+2.94%+2.55%5.69%10.00%————交易太少
GBPUSD-3.89%-3.39%8.34%10.00%————交易太少
USDJPY-2.85%-2.48%7.59%10.00%————交易太少
XAUUSD-91.61%-87.09%94.00%20.00%-0.45-0.972−$4,580.37账户爆仓

由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。

和同类(趋势跟踪)在同一品种上有可信结果的 EA 相比:XAUUSD 好于 11%(共 96 个)

按月看

品种盈利月份占比最好的月份最差的月份
XAUUSD0%0.00% 2026-02-85.62% 2026-01

根据回测净值曲线计算(约每两天一个点),只统计可信结果。

爆仓风险: 高

  • 在我们的回测中爆仓(净值跌破 10%):XAUUSD

高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →

策略分析

该EA采用双指标确认的趋势跟踪策略,入场条件要求ATRStops和StepUpDown两个指标同时发出同方向信号才开仓。ATRStops指标基于ATR倍数(Kv=2.5)计算动态止损通道,当价格突破通道上轨时信号为多头(+1),突破下轨时为空头(-1)。StepUpDown指标通过快速SMA(周期2)和慢速SMMA(周期30)的交叉及背离判断趋势方向。出场条件包括:反向信号平仓(CloseByOppositeSignal)、追踪止损(TrailingStop)和StepUpDown反转时获利平仓。仓位管理支持固定手数和动态手数两种模式,动态模式根据账户余额、风险百分比和杠杆计算手数。止损和止盈通过CalculateSLTP函数根据资金风险和点值动态计算,TP为SL的TPvsSLRatio倍,最低止损为38个pip。同一小时内不重复开仓以避免过度交易。

优势

  • 双指标确认机制降低了假信号风险,要求ATRStops和StepUpDown同时确认才入场
  • 动态止损计算基于真实资金风险和点值,确保每笔交易的风险可控
  • 支持固定手数和动态手数两种资金管理模式,灵活适应不同交易需求
  • 同小时内不重复开仓的规则有效防止过度交易
  • ATRStops指标的自适应通道能根据市场波动性动态调整止损距离

劣势

  • 内存管理存在严重问题:每次OnTimer触发都new创建CTrade等对象但从不delete,导致持续内存泄漏
  • ModifySLTP函数中修改失败后直接break跳出循环,只能修改第一个符合条件的持仓
  • ClosePosition函数中PositionGetTicket调用位置不当,在循环外获取的持仓信息可能导致错误匹配
  • CalculateSLTP中leveragerisk计算方式不合理,将杠杆除以100并取整作为风险乘数,缺乏理论依据
  • 代码中存在冗余的iOpen/iHigh/iLow/iClose/iTime函数定义但未被使用

改进建议

  • 修复内存泄漏:将CTrade等对象改为OnInit中创建并复用,或在OnTimer结束时delete释放内存
  • 移除ModifySLTP中的break语句,允许遍历所有持仓进行修改,并将OrderSend移到条件判断外统一处理
  • 优化StepUpDown指标逻辑,当前循环中ups/dns变量被反复覆盖,只有最后一次迭代的值生效,可能不符合预期
  • 添加点差过滤和最大持仓数量限制,防止在高点差环境下频繁交易和过度持仓

风险评估

总体风险: 中等

  • 每次OnTimer触发都创建新对象但不释放,长时间运行会导致严重内存泄漏和性能下降
  • 追踪止损模式下修改失败后直接break,可能导致部分持仓无法及时调整止损
  • 动态手数计算中Opentotal变量使用了不直观的取值逻辑(最小为5),可能在高持仓时低估风险
  • 使用Sleep(1000)在开仓后等待1秒再平仓,在快速行情中可能导致平仓价格滑点

评估得分

代码质量2.0
策略逻辑3.0
风险管理3.0
稳健性2.0
创新性2.0
文档1.0
综合2.2

参数

参数默认值说明
TimeFramesPERIOD_H1专家顾问运行的时间周期
RiskPercentage3.0风险百分比,用于动态计算手数和止损
TPvsSLRatio3.0止盈与止损的倍数比率
MoneyManagementTypeDynamicLotSize资金管理类型:固定手数或动态手数
TradeLotSize0.1固定手数模式下手动输入的手数大小
CloseByOppositeSignalYes是否在反向信号时平仓
UseTrailingStopNo是否使用追踪止损
Trailing_FixedPipsSL10追踪止损值(以点为单位)
Magic1234专家顾问唯一标识ID(最多8位数字)

同类 EA:趋势跟踪

回测是历史模拟,不代表未来收益,不构成投资建议。

订阅每周 Arena 周报

每周一封邮件:排名变化、新信号和新研究。不发垃圾邮件,随时可以退订。