ExpBuySellSide
该EA基于ATRStops和StepUpDown双指标趋势跟踪系统进行交易。当两个指标同时发出上升趋势信号时开多仓,同时发出下降趋势信号时开空仓,可选追踪止损和反向信号平仓功能。资金管理支持固定手数和基于风险百分比的动态手数。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | +2.94% | +2.55% | 5.69% | 1 | 0.00% | — | — | — | — | 交易太少 |
| GBPUSD | -3.89% | -3.39% | 8.34% | 1 | 0.00% | — | — | — | — | 交易太少 |
| USDJPY | -2.85% | -2.48% | 7.59% | 1 | 0.00% | — | — | — | — | 交易太少 |
| XAUUSD | -91.61% | -87.09% | 94.00% | 2 | 0.00% | -0.45 | -0.97 | 2 | −$4,580.37 | 账户爆仓 |
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(趋势跟踪)在同一品种上有可信结果的 EA 相比:XAUUSD 好于 11%(共 96 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| XAUUSD | 0% | 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秒再平仓,在快速行情中可能导致平仓价格滑点
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
TimeFrames | PERIOD_H1 | 专家顾问运行的时间周期 |
RiskPercentage | 3.0 | 风险百分比,用于动态计算手数和止损 |
TPvsSLRatio | 3.0 | 止盈与止损的倍数比率 |
MoneyManagementType | DynamicLotSize | 资金管理类型:固定手数或动态手数 |
TradeLotSize | 0.1 | 固定手数模式下手动输入的手数大小 |
CloseByOppositeSignal | Yes | 是否在反向信号时平仓 |
UseTrailingStop | No | 是否使用追踪止损 |
Trailing_FixedPipsSL | 10 | 追踪止损值(以点为单位) |
Magic | 1234 | 专家顾问唯一标识ID(最多8位数字) |
同类 EA:趋势跟踪
回测是历史模拟,不代表未来收益,不构成投资建议。