经验模态分解法介绍·综合运用
(3/3)·只会算 IMF 不算真会 EMD,这一篇把算法接进图表、复盘与附录踩坑一次讲透
◍ EMD 在报价处理里的三种实战用法
EMD 本属希尔伯特-黄变换的前置步骤,但抛开瞬时频率谱不谈,它在 MT5 里最直观的用途是平滑序列和剥离趋势。拿 USDCHF 日线任取 100 根开盘价做分解,得到 4 个 IMF 加残差;丢掉第 1 个高频 IMF、将其余分量叠回残差,曲线明显变顺。若连前两个 IMF 都舍掉,平滑程度还会进一步加深。 另一路用法是基于 IMF 做预测外推。对每个 IMF 与残差分别跑 10 步线性外推再相加,就能拼出原序列的前瞻路径。图 7 用 USDCHF H4 演示时,主动弃掉第 1 个 IMF 的预测,高频噪声对结果的干扰被压住——不过这篇没做预测力回测,外汇品种 H4 周期下这种简化外推仅作方法示意,实盘高风险。 趋势剔除则更灵活:把残差或残差叠加末尾几个 IMF 视为趋势项,剔除时除最后 1~几个分量外全加起来即可。EURUSD 日线例子中,排除残差、首末 IMF 后求和,既去趋势又带轻度平滑。XAUUSD H4 取 150 根做分解(图 9 各分量自动缩放),可见 CEMDecomp.mqh 的参数设定能直接出可视图,贵金属报价同样适用此流程,但杠杆品种波动剧烈,分解仅辅助判形。
EMD 分解出的分量不是物理过程本身
经验模态分解(EMD)与希尔伯特-黄变换(HHT)本是为非静态、非线性数据设计的,但这不表示它们不能用于处理线性或静态序列。 多数分解算法把序列拆成若干分量,这些分量只是某种合成形式,并不等于生成原始数据的初始物理过程;EMD 也不例外。你绝不该认为 EMD 筛出的 IMF 反映了真实背后的物理机制,它们只是帮你看清输入序列结构、便于进一步分析的代理成分。 文中给出的 CEMDecomp 类实施仍需更多测试与改进,谈不上理想版本;其核心目的只是让你熟悉 EMD 方法及其在 MQL5 中的落地特点。随文附带的 CEMDecomp.mqh 与 EMDecomposition.zip(含完整测试案例)可直接在 MT5 里跑通验证。 外汇与贵金属市场属高风险领域,任何分解工具都只是概率层面的结构观察,不能据此直接推导价格方向。
「CEMD 类实现的附件与实时局限」
原文 2012 年 6 月 28 日发布,附录在 7 月 5 日补入,附带 CEMD_2.mqh(33.03 KB)与 emdecomposition.zip(89.17 KB)等文件,其中 CEMD 类给出另一种 EMD 分解路径,可在 MT5 的 Include 目录直接引用验证。 评论区有交易者指出 EMD 非因果:实时每增加一个 t+1 数据点,历史 IMF 分量几乎全变,甚至 IMF 数量都变,这使样本外回测若混入了未来数据就会失效,外汇与贵金属波动下这种重构偏移可能放大滑点风险。 想落地只需把 CEMD_2.mqh 丢进 MetaEditor 编译,接一组 XAUUSD 的 M5 收盘价跑一遍,对比追加新 K 线前后 IMF1 的差异;若偏差超过你策略容差,这类分解就倾向只做离线研究而非实时信号。