Ehlers希尔伯特变换(Hilbert Transform)开发ea
Hilbert_Core_EA v1.60 详细功能说明 + 未来演进方向
这是基于 Ehlers希尔伯特变换(Hilbert Transform) 开发的MT5全自动交易EA,核心定位是自适应周期震荡交易策略,不是固定参数EA,内置多层自优化、集成学习、市场状态识别、实盘反馈风控,属于带在线自适应能力的量化交易机器人。
重要提示:本代码仅为技术研究演示,历史回测不等于未来收益,实盘交易存在巨大风险。
一、核心底层原理
采用 John Ehlers 的希尔伯特变换(《Rocket Science for Traders》),从价格序列提取:
1. InPhase(I1) 同相分量、Quadrature(Q1)正交分量,构成价格相量;
2. 计算瞬时相位、自适应主周期,识别市场当前的自然波动周期;
3. 交易信号来自相位穿越:相位向上穿越阈值做多、向下穿越阈值做空;
4. 附加周期质量评估:只有周期稳定的市场才允许产生信号,杂乱无规律市场屏蔽信号。
二、完整模块功能拆解
模块1:希尔伯特核心信号模块(信号发生器)
1. 自动估算市场瞬时周期,不需要人工固定周期; seed 只是初始种子,会被优化器迭代更新。
2. 周期过滤:过滤不稳定、太短的周期噪声( Filter 参数,自优化自动调整)。
3. 相位穿越信号:
- 多头:相位向上穿过 PhaseLongLevel
- 空头:相位向下穿过 PhaseShortLevel
4. 缓存机制:收盘确认模式下每根K线只计算一次希尔伯特序列,降低CPU消耗。
5. 信号置信度:根据I1/Q1相量幅值/ATR计算信号强度,信号弱自动降低手数。
模块2:集成投票引擎(Ensemble 多成员投票,v1.60重点)
传统单参数EA容易过拟合,这里使用多组希尔伯特参数组成集成成员:
1. 集成成员:最多5个,默认3个,每组成员拥有独立 种子周期+周期过滤 参数;
2. 每个成员独立计算希尔伯特相位,只有成员自身周期质量达标才有投票权;
3. 加权投票:
- 每个成员根据历史信号准确率计算动态权重;
- 满足投票阈值 EnsembleVotePct 才触发最终交易信号;
- 新成员样本不足时自动退化为等权投票;
4. 成员多样性约束:挑选成员时保证种子周期差距>2,避免成员高度雷同、投票同质化。
模块3:持续性确认防抖(跨K线滤波)
解决单K线相位毛刺、假信号:
- 信号需要连续N根K线( PersistenceBars )保持同方向投票,才确认有效;
- 中途方向切换,计数器重置,重新累积;
- 可关闭,设置=1就是单K线直接触发。
模块4:RSI动量过滤(自适应)
在希尔伯特相位信号基础上叠加RSI二次筛选,过滤极端超买超卖:
- 基础规则:多头要求RSI在[下限,上限],空头要求RSI在[空头区间]
- 自适应RSI:根据最近实盘交易盈亏比PF自动收紧/放宽过滤
- PF<1(近期亏钱,盈亏比差)→收紧RSI,提高入场动量门槛,减少交易;
- PF≥1.5(近期表现优秀)→放宽RSI限制,增加合格信号;
模块5:三层自迭代优化引擎(EA核心特色,在线参数自学习)
三层独立闭环:历史回溯参数优化 → 实盘交易反馈自适应 → 市场状态识别
层1|滚动窗口参数优化 RunSelfOptimization(离线回测式参数搜索)
每N根K线(ReoptBars)自动扫描候选参数组合 (种子周期,周期过滤) :
1. 回溯历史K线,模拟每个候选参数的信号与盈亏;
2. 训练/验证分段 + 双段最差值验证(Maximin):
- 历史数据切分为训练集+验证集;验证集再拆成前后两段;
- 要求两段验证样本都表现良好才会采纳该参数,强力抑制过拟合(避免只在历史曲线拟合好,实盘失效);
3. 适配度评分二选一:总净利润 / 夏普比率(均值/标准差);
4. 市场状态加权评分:优化时优先奖励当前市场状态下表现好的参数;
5. 参数阻尼限制:单次优化,种子周期、过滤参数最大变动幅度限制,防止参数剧烈跳变震荡;
6. 自动挑选Top-K多样性候选,生成新的集成成员组;
7. 谱系日志:记录每一轮参数更迭,打印旧参数→新参数、得分变化,方便追溯参数生灭;
8. 无正向收益候选时,保持原有参数不变,不盲目更新。
层2|实盘交易反馈自适应(在线学习,基于真实平仓交易)
读取EA产生的真实闭环平仓交易,动态调整风控与过滤条件:
1. 统计最近N笔平仓盈亏,计算盈亏比PF、胜率;
2. 连亏管理:连续亏损达到设定笔数 → 进入冷却期,暂停新开仓;冷却K线走完恢复;
3. 连亏降手数:每亏损一笔,手数乘以衰减系数,最低手数系数0.125;盈利后重置手数系数;
4. 自适应RSI过滤(前面提到);
5. 持久化:所有迭代后的参数、状态保存到MT5全局变量GlobalVariable,重启EA、重启终端不会丢失学习结果。
层3|市场状态引擎 RegimeEngine
自动把市场划分4种状态,不同状态采用不同交易规则:
- REGIME_CYCLE 周期震荡:EA主场,允许多空双向交易;
- REGIME_TREND_UP 上升趋势:只允许做多,屏蔽空头信号(TrendAlignOnly开启时);
- REGIME_TREND_DOWN 下降趋势:只允许做空,屏蔽多头信号;
- REGIME_CHOP 杂乱市场:周期稳定性差,直接屏蔽全部新信号,不开仓。
状态判定逻辑:
1. 趋势强度:线性回归斜率绝对值 ÷ ATR,超过阈值判定趋势;
2. 周期质量: 1 - 周期标准差/周期均值 ,值越低代表周期波动越混乱。
状态归因矩阵(实证可信度打分)
记录每种市场状态、每个方向信号历史模拟盈亏:
- 该状态历史信号盈利:置信系数1.0,正常手数;
- 该状态历史持续亏损:衰减置信系数,最低到RegimeConfFloor,自动降低手数;
- 样本不足时,不惩罚,保持中性置信。
模块6:多层风控系统(独立叠加,层层限制开仓)
- 权益曲线节流(EquityThrottle)
监控账户权益EMA,跟踪账户回撤:
- 软回撤:权益低于EMA达到阈值 → 手数减半;
- 硬回撤:更深回撤 → 暂停新开仓;已有持仓不受影响,依靠SL/TP平仓。
和连亏冷却区别:连亏看交易笔数,权益节流看账户整体权益曲线。
- 仓位手数自适应(多重系数相乘)
最终开仓手数 = 基准手数
× 信号置信系数
× 市场状态归因置信系数
× 实盘连亏手数系数
× 权益节流系数
两种基准手数模式二选一:
- 固定手数LotSize;
- 风险百分比模式:每笔固定风险占账户权益百分比,自动计算手数,基于止损距离。
- 止损止盈
两种模式切换:
- 固定点数SL/TP;
- ATR自适应SL/TP:根据当前波动率动态设置止损止盈倍数。
- 基础交易限制
- 单独开关允许做多/做空;
- 同方向不重复开仓(检查已有持仓);
- 自动适配品种报价填充模式,避免订单提交报错;
- 魔术号MagicNumber隔离本EA持仓。
模块7:日志、面板、回测优化支持
1. 图表Comment仪表盘:实时打印全部核心状态:市场状态、集成成员、投票结果、参数、盈亏统计、权益节流、连亏计数等;
2. 详细诊断日志开关VerboseLog;
3. 参数谱系日志,记录每一轮优化参数更替;
4. 自定义优化目标函数 OnTester(),专供MT5策略测试器遗传算法优化:
复合得分 = 净利润 × √盈利因子 / 最大相对回撤%
优先奖励高收益+稳定盈利因子,严厉惩罚大回撤;交易样本少于10笔直接淘汰。
模块8:信号归因日志系统
每次发出交易信号就记录:信号价格、时间、投票掩码、当时市场状态;
等待模拟持有期(OptScoreBars根K线)到期,自动结算这笔信号假想盈亏,用于:
- 更新每个集成成员的信号准确率(EMA平滑);
- 更新状态归因矩阵,统计不同市场环境下多空信号表现。
三、EA 优势总结
1. 非固定参数:可以根据历史行情在线搜索最优周期参数,适配品种周期变化;
2. 集成模型降低单参数过拟合风险,成员动态加权,表现差的成员降低投票权重;
3. 市场状态识别:区分震荡/趋势/杂乱,只在策略适配环境交易;
4. 双重风控:交易层面连亏风控 + 账户权益曲线风控;
5. 自学习闭环:历史回测优化 + 真实交易结果反馈 + 状态实证归因;
6. 抗过拟合设计:训练验证拆分+双段最差值验证、参数变化阻尼、候选信号数量下限;
7. 状态持久化:重启MT5不丢失学习后的参数、成员绩效、连亏状态。
四、当前版本局限(v1.60)
1. 信号评估用未来K线模拟盈亏做适配度打分( OptScoreBars 后价格),属于假想收益,回测优化时存在前视偏差隐患;
2. 集成优化计算量大,高回溯窗口、多品种同时跑会占用大量CPU;
3. 状态归因是假想的信号盈亏,不是真实平仓盈亏;真实滑点、点差、延迟没有计入归因;
4. 只基于价格+ATR+RSI,没有引入成交量、订单流、宏观、多时间框架;
5. 优化器候选网格扫描是网格化遍历,不是贝叶斯/粒子群等更高效寻优,最多200组候选限制搜索空间;
6. 全局变量持久化局限在同一账户+终端;换电脑、换账户会丢失学习状态;
7. 没有动态盈亏目标/移动止盈,SL/TP开仓后固定不变(ATR模式也是开仓瞬间计算一次);
8. 没有持仓管理模块:加仓、减仓、部分平仓、盈亏移动止损,仅一次性开仓+固定SLTP。
五、未来可能的发展方向
方向1:优化器算法升级(改进参数搜索)
- 把当前网格暴力扫描替换为贝叶斯优化 / 粒子群 / 遗传算法,不再限制200候选,更高效搜索参数;
- 增加参数退火机制,市场稳定时减小搜索范围,市场突变扩大搜索范围;
- 多目标帕累托优化:同时优化收益、回撤、交易频次、夏普,不再是单一复合分数。
方向2:集成框架增强
1. 支持动态增减集成成员,自动淘汰长期失效成员;
2. 成员权重不仅仅依靠信号准确率,引入盈亏比、最大回撤、信号稳定性多维打分;
3. 分状态独立集成成员:震荡用一组成员,趋势用另一组成员;
4. 增加成员预测置信分布,而不是简单0/1投票。
方向3:市场状态模块增强
1. 增加更多状态特征:波动率聚类、成交量特征、自相关系数、VIX类指标;
2. 状态预测:提前预判状态切换,而不是仅识别当前状态;
3. 多时间框架状态确认:大周期状态约束小周期信号,过滤逆大周期的交易;
4. 状态迁移矩阵:统计状态之间切换概率,提前调整仓位。
方向4:风控与持仓管理升级(短板重点补强)
1. 增加移动止盈、追踪止损、部分平仓、金字塔加仓/减仓逻辑;
2. 全局账户总敞口限制:多品种同时运行时,总风险限额;
3. 波动率自适应止损:持仓过程动态更新SL,而不是开仓一次性计算;
4. 最大连续回撤硬停机,不仅仅是权益EMA软节流;
5. 引入VaR、ES预期损失做风险度量,代替简单百分比回撤。
方向5:特征与信号增强
1. 引入成交量、价差、订单流、tick数据作为辅助过滤;
2. 多周期希尔伯特,高低周期共振信号;
3. 增加信号分类模型:区分高置信、中等、低置信信号,不同置信采用不同止盈止损;
4. 过滤季节性、新闻事件窗口(避开重大数据发布时段)。
方向6:学习框架升级
1. 区分离线回测学习和在线增量学习,降低在线过拟合(概念漂移检测);检测市场分布发生漂移时,重置部分学习记忆;
2. 区分假想信号盈亏和真实平仓盈亏,把真实交易盈亏作为更高权重反馈,减少回测假象带来的偏差;
3. 记忆衰减:旧的交易样本、旧的状态归因数据随时间自动衰减权重,适应市场缓慢演化;
4. 增加模型遗忘机制:长期失效的旧经验自动降低权重。
方向7:工程与运维
1. 增加日志输出到文件,外部可视化面板(网页)查看参数演变、绩效、状态;
2. 增加告警:邮件/推送,参数重大变更、进入冷却、权益触发节流;
3. 持久化改进:支持文件保存状态,跨电脑加载学习结果;
4. 性能优化:并行计算集成成员希尔伯特,降低CPU占用;
5. 增加沙箱模拟:新参数先在模拟窗口试运行,确认稳定后再切换实盘。
方向8:回测与评估体系
1. 增加滚动样本外测试(Walk Forward Walk,滚动向前验证),内置WFA评估,在EA运行时自动评估模型退化;
2. 增加更多风险指标:最大连续亏损、亏损期长度、收益波动率;
3. 离群信号检测,识别异常行情下的异常信号,单独屏蔽。
方向9:架构扩展
- 多品种联合集成,跨品种状态联动;
- 分离信号引擎、优化引擎、风控引擎,模块化,方便单独替换组件;
- 增加人工干预接口:人工可以锁定参数、临时关闭自适应、手动覆盖信号。
下载程序我会放在下载里,
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)