RangeBreakout
该EA实现了周期性区间突破策略,在每周指定日期和时段确定价格区间中心,当价格突破计算区间时入场交易。结合ATR指标计算区间范围,并采用马丁格尔仓位恢复系统来弥补累计亏损,止盈止损基于区间大小设定。
打开交互版(权益曲线、切换品种)基本信息
回测结果(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是一种周期性区间突破策略,在用户指定的星期和小时,以前一小时的收盘价作为区间中心,结合ATR指标或价格百分比计算突破范围。入场条件:当Ask价格突破上轨(pHighStop)时开多单,当Bid价格跌破下轨(pLowStop)时开空单,每次只开一个方向的单。出场条件:通过止盈(pHighProfit/pLowProfit)和止损(pHighLoss/pLowLoss)自动平仓,止盈止损距离基于Range乘以百分比系数计算。仓位管理:采用马丁格尔系统,亏损后手数翻倍(kLot *= 2),盈利后重置为1倍手数,同时计算累计亏损补偿值(comLoss)调整止盈止损。资金管理:入场前检查自由保证金是否充足(要求大于1000*Lot),但该检查未考虑kLot倍数放大后的实际保证金需求,存在风险低估。整体策略逻辑清晰但马丁格尔机制风险极高,可能在小账户上迅速爆仓。
优势
- 策略概念清晰,区间突破逻辑简洁明了,易于理解和调优
- 使用ATR指标动态计算突破范围,能够自适应市场波动率变化
- 参数输入校验完善,对所有百分比参数和周末日期都有边界检查和默认值处理
- 仓位规范化处理到位,SetVolume函数正确处理了最小/最大手数和手数步长对齐
劣势
- 马丁格尔系统风险极高,连续亏损时手数指数增长,极易导致账户爆仓
- 保证金检查存在严重bug:使用1000*Lot而非1000*Lot*kLot,在马丁格尔倍增时严重低估实际保证金需求
- 没有持仓状态同步机制,依赖PositionSelectByTicket判断平仓,在网络异常或重启后可能丢失交易状态
- comLoss补偿机制不安全,亏损后将止盈设为comLoss值同时增大止损,导致风险收益比严重恶化
- 缺少点差过滤,在低流动性时段突破可能因大点差而虚假触发
改进建议
- 移除或限制马丁格尔系统,改为固定仓位或基于波动率的仓位管理(如ATR比例缩仓),避免指数级风险增长
- 修复保证金检查bug,将1000*Lot改为1000*Lot*kLot以正确反映实际保证金需求
- 增加持仓状态持久化机制(如全局变量或文件存储),确保EA重启或断线后能正确恢复交易状态
- 增加点差过滤和最小波动阈值,避免低流动性时段的虚假突破信号
- 增加最大连续亏损次数限制和最大手数上限,防止马丁格尔系统失控
风险评估
总体风险: 危险
- 马丁格尔仓位倍增系统在连续亏损时手数指数增长,可迅速耗尽账户资金
- 保证金检查使用基础手数而非实际倍增手数,可能允许超出账户承受能力的大额交易
- comLoss补偿机制在亏损后扩大止损同时调整止盈,使单笔风险随亏损累积而急剧增加
- EA无断线恢复机制,交易状态丢失后可能重复开仓或遗漏平仓
- 双分号语法错误(return;;)虽不影响编译但暗示代码审查不足
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
inDay | MONDAY | 每周触发设置的星期几 |
inHour | H00 | 每周触发设置的起始小时 |
inPerPrice | 1 | 价格百分比(0.3%-3%),用于ATR失败时的替代区间计算 |
inPerATR | 100 | ATR百分比(10%-200%),用于缩放ATR值作为突破范围 |
inPerProfit | 100 | 止盈百分比(10%-200%),基于Range计算止盈距离 |
inPerLoss | 100 | 止损百分比(10%-200%),基于Range计算止损距离 |
inLot | 0.1 | 基础交易手数 |
同类 EA:突破
回测是历史模拟,不代表未来收益,不构成投资建议。