bobnaley
该EA在均线上升、价格高于均线且随机指标从超卖区域上升时开多仓;在均线下降、价格低于均线且随机指标从超买区域下降时开空仓。仓位大小根据可用保证金动态计算,最大手数上限为15手。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | +7.01% | +6.07% | 2.61% | 143 | 56.30% | 1.58 | 2.69 | 8 | +$4.70 | 可靠 |
| GBPUSD | +2.67% | +2.31% | 4.98% | 143 | 49.30% | 0.47 | 0.54 | 6 | +$1.71 | 可靠 |
| USDJPY | -1.92% | -1.67% | 4.90% | 143 | 47.90% | -0.38 | -0.39 | 5 | −$1.46 | 可靠 |
| XAUUSD | +58.82% | +46.55% | 44.92% | 151 | 51.30% | 1.35 | 1.31 | 6 | +$40.86 | 可靠 |
在 4 个有可信结果的品种中,3 个盈利。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(趋势跟踪)在同一品种上有可信结果的 EA 相比:EURUSD 好于 93%(共 95 个);GBPUSD 好于 68%(共 95 个);USDJPY 好于 33%(共 95 个);XAUUSD 好于 80%(共 96 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| EURUSD | 77% | +3.26% 2026-02 | -0.82% 2026-10 |
| GBPUSD | 54% | +3.74% 2026-02 | -1.89% 2026-03 |
| USDJPY | 46% | +1.62% 2026-09 | -1.65% 2026-08 |
| XAUUSD | 54% | +62.96% 2026-01 | -21.74% 2026-09 |
根据回测净值曲线计算(约每两天一个点),只统计可信结果。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
该EA采用均线与随机指标组合的趋势跟踪策略。入场条件:做多要求MA连续3根K线递增(maVal[0]<maVal[1]<maVal[2]表示索引0为最新值,但代码中maVal[0]<maVal[1]实际上表示MA下降,存在逻辑错误)、Ask价格高于MA最新值、随机指标从下方上升且主值低于超卖线30;做空要求MA连续3根递减、Bid价格低于MA、随机指标下降且主值高于超买线70。出场条件完全依赖固定止盈止损,做多止损为Ask-StopLoss、止盈为Ask+TakeProfit,做空反之。仓位管理使用Money_M()函数,根据账户可用保证金按公式(可用保证金/100000*50)计算手数,并限制在0.1至15手之间,根据手数大小进行不同精度的小数规范化。资金管理要求可用保证金大于5000才允许开仓,且仅允许同时持有一个品种的头寸。值得注意的是代码中存在明显逻辑错误:MA上升条件写成了maVal[0]<maVal[1](实际是MA下降),与注释描述完全相反。
优势
- 使用双重指标(MA+随机指标)过滤信号,减少假突破
- 动态仓位管理根据账户资金调整手数,有一定自适应能力
- 设有最大手数限制(15手)和最低保证金要求(5000),防止过度杠杆
- 仅允许单品种单持仓,避免同方向加仓风险
劣势
- MA方向判断存在严重逻辑错误:买入条件中maVal[0]<maVal[1]实际表示MA下降而非上升,与策略意图完全相反
- StopLoss和TakeProfit使用价格单位而非点数,在不同报价精度品种上可能失效
- 输入参数Lot=5完全未使用,Money_M()函数覆盖了手动设置,造成用户误解
- 缺少新K线检测,每个tick都可能触发信号判断,存在重复开仓隐患
- 未检查交易执行结果,PositionOpen返回值被忽略
- 止盈止损值硬编码为绝对价格偏移,未根据ATR或波动率动态调整
改进建议
- 修复MA方向判断逻辑错误:买入条件应改为maVal[0]>maVal[1]&&maVal[1]>maVal[2],卖出条件改为maVal[0]<maVal[1]&&maVal[1]<maVal[2]
- 将止盈止损改为点数单位并使用NormalizeDouble与品种点值适配,或改用ATR动态计算
- 添加新K线检测机制(如比较当前与上一根K线时间),避免每个tick重复计算和尝试开仓
- 检查PositionOpen返回值并处理交易失败情况,移除未使用的Lot输入参数或将其整合到资金管理逻辑中
风险评估
总体风险: 高风险
- MA方向判断逻辑与策略意图完全相反,可能导致逆势开仓,在上涨趋势中做空、下跌趋势中做多
- 止盈止损使用价格绝对值而非点数,在5位数报价或不同品种上可能产生极小或极大的实际止损范围
- 每tick执行信号判断而无新K线过滤,在快速行情中可能因PositionSelect判断延迟导致重复开仓
- 未检查交易执行结果,止损止盈设置可能因无效价格被服务器拒绝而无法成交
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
TakeProfit | 0.007 | 止盈距离(价格单位) |
StopLoss | 0.0035 | 止损距离(价格单位) |
MA_Period | 76 | 移动平均线周期 |
Stoch_OverSold | 30 | 随机指标超卖水平 |
Stoch_OverBought | 70 | 随机指标超买水平 |
Lot | 5 | 手数(未使用,实际由Money_M()计算) |
同类 EA:趋势跟踪
回测是历史模拟,不代表未来收益,不构成投资建议。