EA-60961 · 趋势跟踪
TuyulUncensored
该EA利用ZigZag指标摆动点结合快慢EMA交叉判断趋势方向,然后在最近ZigZag波动的57%斐波那契回撤位挂限价单。未成交的挂单会在可配置的K线数量后自动删除,并包含星期几的交易过滤功能。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | +0.97% | +0.84% | 1.71% | 1 | 0.00% | — | — | — | — | 交易太少 |
| GBPUSD | +0.83% | +0.72% | 2.06% | 1 | 0.00% | — | — | — | — | 交易太少 |
| USDJPY | +0.72% | +0.63% | 2.07% | 1 | 0.00% | — | — | — | — | 交易太少 |
| XAUUSD | +0.28% | +0.23% | 49.46% | 1 | 0.00% | — | — | — | — | 交易太少 |
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于ZigZag摆动点与EMA趋势方向结合的斐波那契回撤入场。当快EMA在慢EMA之上且ZigZag出现新高点时,在57%回撤位挂Buy Limit单;当快EMA在慢EMA之下且ZigZag出现新低点时,在57%回撤位挂Sell Limit单。止损设在ZigZag极值点(买单止损在低点,卖单止损在高点),止盈为止损距离乘以TPFromSLMultiplier倍数。仓位管理使用固定手数InitialLot,无加仓或减仓逻辑。资金管理通过CheckMargin函数检查可用保证金是否充足,并在PendingOrders中验证手数符合经纪商的最小/最大/步长限制。挂单在WaitNewSignalZigZagBarCount根K线后若未成交则自动删除,等待下一个信号。
优势
- 策略逻辑清晰,结合趋势判断(EMA交叉)与关键回撤位(斐波那契57%)入场,具有较高的盈亏比设计
- 包含完整的止损止盈逻辑,止损设在ZigZag极值点具有技术依据,止盈通过倍数关系保证正期望
- 实现了挂单超时删除机制,避免过期信号导致不利入场,同时包含交易日过滤和保证金检查
- 使用限价单而非市价单入场,寻求更优的入场价格,符合趋势回撤交易理念
劣势
- GetLastZigZagPoints函数逻辑混乱:前半部分从索引5开始搜索并设置lastZigZagHigh/Low,后半部分又从索引0遍历覆盖了前面的结果,导致前半部分代码完全无效
- 仅允许同时持有一个仓位(PositionSelect检查),且不区分EA实例,在多品种运行时会互相干扰
- BreakoutDistancePips参数已声明但未使用,属于冗余代码;变量命名混用印尼语和英语,可读性差
- 没有点差过滤、滑点保护或市场波动率检查,在高波动或大点差环境下可能产生不利成交
- onTick中使用TimeCurrent()==lastCheck限制每秒仅执行一次,但新K线检测应使用Bars或iBars来判断而非时间戳
改进建议
- 修复GetLastZigZagPoints函数:移除重复遍历逻辑,明确区分最近和前一个ZigZag点的获取,确保prevZigZagHigh/Low正确更新
- 添加点差过滤和波动率检查(如ATR),避免在大点差或极端波动时入场;使用IsNewBar函数替代当前的时间戳判断方式
- 移除未使用的BreakoutDistancePips参数,统一变量命名为英语,添加对多实例运行的支持(通过MagicNumber和Symbol组合过滤)
- 增加追踪止损或移动止盈功能以保护浮盈,同时添加最大回撤限制和每日亏损限制等资金管理保护机制
风险评估
总体风险: 中等
- GetLastZigZagPoints函数存在逻辑缺陷,可能导致错误的ZigZag点位识别从而在错误位置挂单
- 没有点差过滤,大点差环境下限价单可能在不利价格成交
- 单一持仓限制且使用PositionSelect(_Symbol)不考虑MagicNumber,可能与其他EA冲突
- 固定手数无动态调整,没有最大回撤或连续亏损保护机制
评估得分
代码质量2.0
策略逻辑3.0
风险管理3.0
稳健性2.0
创新性2.0
文档1.0
综合2.2
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
MagicNumber | 9291 | EA魔术编号,用于标识本EA的订单 |
InitialLot | 0.03 | 初始下单手数 |
TPFromSLMultiplier | 1.2 | 止盈与止损距离的倍数比率 |
ZigZagDepth | 12 | ZigZag指标深度参数 |
ZigZagDeviation | 5 | ZigZag指标偏差参数 |
ZigZagBackstep | 3 | ZigZag指标回步参数 |
ZigZagReadBarCount | 100 | 读取ZigZag指标的K线数量 |
WaitNewSignalZigZagBarCount | 12 | 挂单未成交后等待删除的K线数量 |
BreakoutDistancePips | 10 | 突破距离(点数),已声明但未在策略中使用 |
FastEMA | 9 | 快速EMA周期 |
FastEMAMethod | MODE_EMA | 快速EMA计算方法 |
FastEMAPrice | PRICE_CLOSE | 快速EMA应用价格 |
SlowEMA | 21 | 慢速EMA周期 |
SlowEMAMethod | MODE_EMA | 慢速EMA计算方法 |
SlowEMAPrice | PRICE_CLOSE | 慢速EMA应用价格 |
AllowMonday | true | 是否允许周一交易 |
AllowTuesday | true | 是否允许周二交易 |
AllowWednesday | true | 是否允许周三交易 |
AllowThursday | true | 是否允许周四交易 |
AllowFriday | true | 是否允许周五交易 |
同类 EA:趋势跟踪
回测是历史模拟,不代表未来收益,不构成投资建议。