SampleCheckPendingOrder
该EA在每个tick检查是否存在同类型挂单,若不存在则同时放置BuyStop和SellStop挂单,采用突破式入场逻辑,买入止损单挂在当前卖价上方,卖出止损单挂在当前买价下方,均设置固定止损止盈及当日到期时间。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| GBPUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| USDJPY | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
| XAUUSD | 0.00% | 0.00% | 0.00% | 0 | — | — | — | — | — | 暂不支持转换 |
这个 EA 从未交易的原因:转换后没有留下任何开仓规则。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
该EA采用突破挂单策略,核心概念是在当前价格上下方同时放置止损挂单,等待价格突破后成交。入场条件为:当前不存在同方向同品种的挂单时,在当前Ask价上方放置BuyStop单,在当前Bid价下方放置SellStop单。出场条件通过固定点数的止损(300点)和止盈(900点)实现,止盈是止损的3倍,体现了1:3的风险收益比设计。仓位管理仅使用固定的手数输入参数(0.01),并通过CheckVolumeValue函数验证手数是否符合品种的最小/最大手数和手数步长要求。资金管理方面,通过CheckMoneyForTrade函数检查可用保证金是否足够开仓,不足则跳过本次tick。挂单设有每日到期时间(PERIOD_D1),过期未成交则自动取消。然而策略缺乏对市场趋势、波动率或任何技术指标的判断,属于纯机械式双向挂单。
优势
- 1:3的风险收益比设计合理,符合趋势跟踪和突破策略的常见比例
- 具备完整的资金检查机制,包括保证金充足性验证和手数合法性验证
- 挂单设有到期时间,避免过期挂单长期占用保证金或在不合适的时点成交
- 每次仅维持一个方向的挂单,避免重复下单导致仓位失控
劣势
- 缺少任何市场方向判断,每个tick都试图双向挂单,在震荡行情中容易两面挨打
- BuyStop直接放在当前Ask价、SellStop直接放在当前Bid价,实际几乎会立即成交而非等待突破
- OnTick中存在重复代码:IsCheckMoneySell和IsCheckMoneyBuy各检查了两次(第59-69行)
- OrdersTotal()循环从OrdersTotal()开始而非OrdersTotal()-1,存在越界访问风险
- 没有新K线检查机制,每次tick都可能尝试下单,增加服务器负载和被券商限制的风险
改进建议
- 将BuyStop价格设在Ask上方一定距离(如ATR的倍数),SellStop设在Bid下方一定距离,实现真正的突破策略而非即时成交
- 添加新K线检测机制,避免每个tick重复执行逻辑,减少不必要的资源消耗
- 加入趋势过滤指标(如均线方向或ADX),避免在震荡行情中双向挂单两面亏损
- 修复OrdersTotal()循环的越界bug,应从OrdersTotal()-1开始遍历
风险评估
总体风险: 中等
- BuyStop/SellStop定价与当前市价几乎相同,挂单会立即成交,实际效果等同于市价单而非突破单
- 没有新K线检查,高频tick环境下可能频繁尝试下单增加券商限制风险
- OrdersTotal()循环越界访问可能导致检查遗漏,使得重复挂单防护失效
- 双向同时挂单在震荡行情中可能连续止损
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
PriceVolume | 0.01 | 每笔交易的手数 |
PriceSL | 300 | 止损点数(以_Point为单位) |
PriceTP | 900 | 止盈点数(以_Point为单位) |
同类 EA:突破
回测是历史模拟,不代表未来收益,不构成投资建议。