Impulse Continuation Engine [ICE_Pro]
该EA检测冲动蜡烛形态(高成交量、强实体、方向性收盘)并在冲动方向入场交易,使用基于ATR的止损/止盈以及自适应的时段/成交量/波动率过滤器。它配备了智能追踪止损系统,包含保本、固定ATR、动态ATR和混合模式来管理持仓。
打开交互版(权益曲线、切换品种)基本信息
回测结果(H1,约 1 年)
| 品种 | 盈亏 | 年化 | 最大回撤 | 交易数 | 胜率 | 夏普 | 恢复因子 | 最长连亏 | 每笔期望 | 状态 |
|---|---|---|---|---|---|---|---|---|---|---|
| EURUSD | -0.59% | -0.51% | 6.07% | 140 | 46.00% | -0.09 | -0.10 | 6 | −$0.66 | 可靠 |
| GBPUSD | -8.13% | -7.10% | 9.84% | 140 | 41.00% | -1.30 | -0.83 | 9 | −$6.02 | 可靠 |
| USDJPY | +0.65% | +0.56% | 4.62% | 171 | 46.80% | 0.17 | 0.14 | 10 | +$0.38 | 可靠 |
| XAUUSD | +21.70% | +17.62% | 90.37% | 145 | 53.10% | 0.95 | 0.24 | 8 | +$14.97 | 可靠 |
在 4 个有可信结果的品种中,2 个盈利。
由 MQL5 自动转换为 Python,所有 EA 使用同一套规则回测:按 MT5 手数计仓(外汇每手 10 万单位、黄金每手 100 盎司),1:100 杠杆,同一时间只有一张挂单,净值跌破初始资金 10% 时强平。夏普比率按权益曲线计算。标为不可靠的结果仅供参考。
和同类(动量)在同一品种上有可信结果的 EA 相比:EURUSD 好于 47%(共 68 个);GBPUSD 好于 17%(共 66 个);USDJPY 好于 66%(共 68 个);XAUUSD 好于 64%(共 75 个)
按月看
| 品种 | 盈利月份占比 | 最好的月份 | 最差的月份 |
|---|---|---|---|
| EURUSD | 62% | +1.43% 2026-10 | -3.70% 2026-04 |
| GBPUSD | 38% | +1.05% 2026-06 | -4.48% 2026-04 |
| USDJPY | 62% | +2.47% 2026-02 | -2.26% 2025-12 |
| XAUUSD | 62% | +159.80% 2026-03 | -72.00% 2026-02 |
根据回测净值曲线计算(约每两天一个点),只统计可信结果。
爆仓风险: 未发现爆仓模式
代码里没有发现常见的爆仓模式,回测中账户也没有爆仓。但这不是保证,任何 EA 都可能亏钱。
高:回测中爆仓,或使用马丁/网格加仓且不设止损。偏高:马丁或网格加仓但有止损,或不设止损且可同时持有多个仓位。 标签的含义和我们的发现 →
策略分析
策略概念基于'冲动延续'——当市场出现异常放量的方向性蜡烛时,认为动量将延续并顺势入场。入场条件要求当前bar的成交量超过均量的自适应倍数(伦敦/纽约时段0.9倍,亚洲/太平洋时段1.3倍)、实体比率超过自适应阈值、收盘位置在蜡烛范围的60%以上、范围扩展大于前一根bar的5%,且价格必须与50周期MA方向一致(斜率确认)。出场条件包括ATR倍数止损(1.2倍)和止盈(1.8倍),以及四种追踪止损模式:无追踪、保本、固定ATR追踪、动态ATR追踪和混合模式。仓位管理基于账户余额的风险百分比(默认0.1%)计算手数。资金管理包含最低净值检查、保证金水平检查、亏损后降低风险比例的功能,以及61.8%斐波那契回撤的冲动衰减监控机制。此外还有自适应时段过滤、低成交量过滤和点差过滤等安全机制。
优势
- 多层级自适应过滤系统(时段、成交量、波动率、点差)有效减少虚假信号
- 完整的资金管理体系:净值检查、保证金水平检查、亏损后风险降低、ATR止损
- 四种追踪止损模式(保本/固定ATR/动态ATR/混合)提供灵活的持仓管理
- 61.8%斐波那契回撤衰减监控比简单的bar计数更科学地判断冲动失效
- MA斜率+位置双重趋势确认防止逆势入场
劣势
- IsGoodTradingSession()函数内部每次调用都创建iATR句柄(handle_long)但从未释放,会造成严重的资源泄漏
- CheckTradingConditions()中存在重复检查:第6步和第7步重复检查了点差和交易时段
- 大量注释掉的替代代码块(三个ProcessNewBar版本、两个IsImpulseDecayed版本等)使代码臃肿难维护
- 缺少对已有持仓的检查逻辑,可能重复开仓导致过度暴露
- 冲动衰减检查中使用的iOpen基于start_bar索引,但start_bar在ProcessNewBar中递增,可能导致引用错误的bar数据
改进建议
- 修复IsGoodTradingSession()中的指标句柄泄漏:将长周期ATR句柄移至OnInit()创建并在OnDeinit()释放
- 删除所有注释掉的替代代码块,使用版本控制系统管理代码变体,保持源文件整洁
- 添加持仓检查逻辑,防止同一冲动信号重复开仓,限制同方向最大持仓数
- 在CheckTradingConditions()中移除重复的点差和时段检查(第6-7行与第3-5行重复)
- 为InpUseVolatilityAdjust参数添加实际实现逻辑,当前声明了但未在追踪计算中使用
风险评估
总体风险: 中等
- IsGoodTradingSession()每次调用创建新ATR句柄但不释放,长期运行会导致内存/句柄耗尽
- 缺少持仓数量检查,可能在同一冲动上重复开仓导致风险敞口过大
- 冲动衰减判断中的start_bar索引管理不一致,可能在特定条件下引用错误的历史数据
评估得分
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
InpTradingMode | TRADING_MODE_DEMO | 交易模式选择(实盘/演示/禁用) |
InpTradeSymbol | 交易品种(空=当前图表品种) | |
InpMagicNumber | 888888 | 订单识别的唯一魔术号 |
InpTradeComment | Ritz-ICE-Pro | 终端和历史中显示的交易注释 |
InpDebugMode | true | 启用详细调试日志 |
InpEnableAdaptive | true | 启用基于市场条件的自适应逻辑 |
InpLookbackPeriod | 20 | ICE形态检测使用的历史bar数 |
InpVolumeMultiplier | 1.3 | 确认冲动的最小成交量倍数 |
InpMinBodyRatio | 0.5 | 最小蜡烛实体与范围比率(冲动强度) |
InpClosePosition | 0.6 | 蜡烛范围内最小收盘位置(0-1) |
InpMinImpulseBars | 2 | 有效冲动的最少bar数 |
InpMaxImpulseBars | 5 | 冲动序列允许的最大bar数 |
InpUseSessionFilter | true | 仅允许在活跃交易时段交易 |
InpRiskPerTrade | 0.1 | 每笔交易风险占账户余额百分比 |
InpReduceAfterLoss | false | 亏损后是否降低风险 |
InpReductionFactor | 0.2 | 亏损后风险降低因子(0.2=-20%) |
InpMinEquityToTrade | 10.0 | 继续交易的最低资金(USD) |
InpMinMarginLevel | 110.0 | 最低保证金水平(%) |
InpATRMultiplierSL | 1.2 | 基于ATR倍数的止损距离 |
InpATRMultiplierTP | 1.8 | 基于ATR倍数的止盈距离 |
InpSlippagePoints | 30 | 最大允许滑点(点) |
InpImmediateEntry | true | 检测到冲动后立即入场 |
InpMaxEntryBars | 3 | 检测后等待入场的最大bar数 |
InpTrailingMode | TRAIL_ATR_FIXED | 追踪止损模式(固定/ATR/混合) |
InpBreakevenAt | 0.5 | 达到TP的50%时移动SL到保本 |
InpTrailATRMulti | 1.0 | 追踪止损距离的ATR倍数 |
InpTrailActivation | 0.3 | 激活追踪逻辑所需利润百分比 |
InpUseVolatilityAdjust | true | 根据波动率动态调整追踪 |
InpMaxSpread | 40.0 | 最大允许点差(点) |
InpMinATRPoints | 50 | 最小ATR波动率过滤器(约5点) |
InpMaxATRPoints | 1500 | 最大ATR波动率过滤器(约150点) |
InpFilterLowVolume | true | 低成交量条件下阻止交易 |
同类 EA:动量
回测是历史模拟,不代表未来收益,不构成投资建议。