OpenPendingorderAfterPositionGetStopLoss
该EA使用随机指标(Stochastic)生成动量入场信号,当主线上穿或下穿其滞后值时放置Buy Stop或Sell Stop挂单。当持仓被止损平仓后,它会自动在反方向开立新的挂单,形成一个持续交易的循环。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | -0.64% | -0.56% | 0.80% | 144 | 46.20% | -1.29 | -0.80 | 7 | −$0.47 | 可靠 |
| GBPUSD | -1.08% | -0.94% | 1.32% | 143 | 39.90% | -1.77 | -0.82 | 10 | −$0.76 | 可靠 |
| USDJPY | -0.13% | -0.12% | 0.47% | 234 | 50.20% | -0.25 | -0.28 | 7 | −$0.05 | 可靠 |
| XAUUSD | -1.71% | -1.41% | 13.66% | 151 | 53.00% | -0.15 | -0.12 | 9 | −$1.13 | 可靠 |
在 4 个有可信结果的品种中,0 个盈利。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(动量)在同一品种上有可信结果的 EA 相比:EURUSD 好于 46%(共 68 个);GBPUSD 好于 55%(共 66 个);USDJPY 好于 57%(共 68 个);XAUUSD 好于 56%(共 75 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| EURUSD | 46% | +0.08% 2026-09 | -0.29% 2026-02 |
| GBPUSD | 23% | +0.27% 2026-07 | -0.33% 2026-05 |
| USDJPY | 54% | +0.19% 2026-08 | -0.19% 2026-01 |
| XAUUSD | 46% | +4.52% 2026-01 | -4.51% 2026-07 |
根据回测净值曲线计算(约每两天一个点),只统计可信结果。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
该EA的策略概念基于Stochastic动量指标判断趋势方向,当主线值低于2根K线前的值时判定为下跌动量并下Sell Stop挂单,当主线值高于2根K线前的值时判定为上涨动量并下Buy Stop挂单。入场条件为Stochastic主线的动量变化,挂单价格设在当前价加减止损距离之外,确保在突破后入场。出场条件为止损和止盈,同时支持固定点数的追踪止损。仓位管理使用固定手数(PriceVolume),限制最大持仓数为Maxposition。资金管理方面有CheckMoneyForTrade函数检查可用保证金,CheckVolumeValue函数验证手数合规性。特别之处在于OnTradeTransaction中检测止损成交事件(DEAL_REASON_SL),当持仓被止损平仓后立即在反方向放置新的挂单,形成一种止损后反转的循环交易逻辑。挂单有过期时间设置,Sell Stop和Buy Stop分别使用H4和用户指定的过期周期。
优势
- 止损后自动反转挂单,能在震荡行情中捕捉来回波动
- 包含完整的资金检查和手数验证,防止违规下单
- 使用挂单而非市价单入场,减少假突破风险
- 限制最大持仓数(Maxposition),控制风险敞口
- 有挂单过期机制,避免过期订单堆积
劣势
- 止损后无限制地反转挂单,可能在单边趋势中连续亏损
- Step和TargetProfit参数声明但未在核心逻辑中使用,存在冗余
- OnTick和OnTradeTransaction中挂单过期时间不一致(H4 vs Expirydate),逻辑不统一
- 止损反转条件(trans.price > trans.price_sl)逻辑可疑,止损价与成交价关系判断可能不正确
- 缺少新K线检测,每个tick都会重复检查指标并可能频繁下单
- SumPosition函数遍历从PositionsTotal()开始但索引最大值应为PositionsTotal()-1,存在越界风险
改进建议
- 添加连续止损次数限制,防止在强趋势中无限反转亏损
- 添加新K线检测逻辑,避免每个tick重复计算指标和下单
- 统一OnTick和OnTradeTransaction中的挂单过期时间逻辑,消除不一致性
- 修复SumPosition和CheckPendingOrder的索引越界问题(应从Total-1开始)
- 增加Step参数的实际使用,实现持仓间距控制
风险评估
总体风险: 需谨慎
- 止损后无限反转挂单机制可能在单边行情中造成连续亏损
- 缺少新K线检测导致每个tick都可能尝试下单,增加过度交易风险
- 数组索引越界bug(PositionsTotal()和OrdersTotal()遍历)可能导致运行时错误
- 止损反转条件中的价格比较逻辑可能有误,导致不该反转时反转
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
PriceVolume | 0.01 | 交易手数 |
PriceSL | 1000 | 止损点数(0=不使用) |
PriceTP | 900 | 止盈点数(0=不使用) |
trailingstoppoint | 200 | 追踪止损点数 |
Expirydate | PERIOD_D1 | 挂单过期时间周期 |
Step | 500 | 持仓间距 |
TargetProfit | 6 | 目标利润 |
RefreshTime | 60 | 刷新时间(秒) |
HistorySL | 7 | 历史止损查找天数 |
Slippate | 10 | 滑点容忍点数 |
KPeriod | 22 | Stochastic %K周期 |
DPeriod | 7 | Stochastic %D周期 |
STOPricemethod | STO_CLOSECLOSE | Stochastic价格计算方法 |
Slowing | 2 | Stochastic慢化周期 |
Maxposition | 1 | 最大持仓数量 |
同类 EA:动量
回测是历史模拟,不代表未来收益,不构成投资建议。