EA-1598 · 突破

NarrowestRangeSignal EA

该EA基于NarrowestRangeSignal指标识别窄幅价格区间后,在区间高低点两侧设置止损挂单(买止损和卖止损)。当一侧挂单成交后,删除另一侧挂单,实现窄幅整理后的OCO突破策略。

打开交互版(权益曲线、切换品种)

基本信息

分类突破
风险中等
爆仓风险低
评分★★☆☆☆
类型交易型 EA
周期M15, H1, H4
指标NarrowestRangeSignal (Custom)
作者Rone.

回测结果(H1,约 1 年)

品种盈亏年化最大回撤交易数胜率夏普恢复因子最长连亏每笔期望状态
EURUSD0.00%0.00%0.00%0—————暂不支持转换
GBPUSD0.00%0.00%0.00%0—————暂不支持转换
USDJPY0.00%0.00%0.00%0—————暂不支持转换
XAUUSD0.00%0.00%0.00%0—————暂不支持转换

这个 EA 从未交易的原因:转换后没有留下任何开仓规则。

由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。

爆仓风险: 未发现爆仓模式

代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。

高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →

策略分析

策略概念基于窄幅整理突破,当NarrowestRangeSignal指标检测到指定周期内出现最窄K线范围时发出信号。入场条件为指标发出信号后,在区间最高价加上indent偏移处挂买止损单,在区间最低价减去indent偏移处挂卖止损单,形成双向突破挂单。出场条件依靠止盈参数平仓,止损设在区间对侧(买止损单的止损在最低价下方,卖止损单的止损在最高价上方)。仓位管理支持固定手数和固定百分比两种模式,百分比模式根据可用保证金和杠杆计算手数。资金管理方面,CalculateLot函数会检查最小最大手数限制并规范化手数精度,但缺少止损的独立风险控制,且没有追踪止损或移动止损机制。

优势

  • 窄幅整理突破策略逻辑清晰,利用市场低波动期蓄势后的突破捕捉趋势
  • OCO挂单机制合理,一侧成交后自动删除对侧挂单,避免双向持仓风险
  • 支持固定手数和固定百分比两种仓位管理模式,灵活性较好

劣势

  • 缺少追踪止损和保本机制,盈利仓位可能大幅回撤后才被止损出场
  • 止损设在区间对侧但减去了indent偏移,实际止损可能过小或过大,未考虑ATR等动态指标
  • DeletePendingOrders函数中使用static变量做新K线检查与CheckOrders中的逻辑重复且可能冲突,每tick都创建新的CTrade对象效率低下

改进建议

  • 增加基于ATR的动态止损和追踪止损机制,替代固定偏移和固定止盈,使策略适应不同市场波动环境
  • 优化代码结构,将CTrade对象声明为全局变量避免重复创建,统一新K线检查逻辑避免static变量冲突

风险评估

总体风险: 中等

  • 止损计算不够稳健,区间对侧减去indent可能导致止损过窄容易被假突破打掉
  • 没有最大持仓数量限制和单日最大亏损控制,连续信号可能频繁开仓造成资金损失
  • DeletePendingOrders和CheckOrders中的static prev_time可能导致新K线判断不同步,存在逻辑漏洞

评估得分

代码质量3.0
策略逻辑3.0
风险管理2.0
稳健性3.0
创新性2.0
文档2.0
综合2.5

参数

参数默认值说明
InpBarsInRange3窄幅区间内的K线数量
InpCheckPeriod10检查最窄范围的周期
InpIndent50挂单距离高低点的偏移点数
InpTakeProfit500止盈点数
InpMmModeFIXED_LOT资金管理模式:固定手数或固定百分比
InpVolume1.0交易量(手数或百分比)

同类 EA:突破

回测是历史模拟,不代表未来收益,不构成投资建议。

订阅每周 Arena 周报

每周一封邮件:排名变化、新信号和新研究。不发垃圾邮件,随时可以退订。