创建非滞后数字滤波器(基础篇)
流数据里的非滞后滤波思路
在 MetaTrader 5 上处理报价流时,主流平滑算法常在末根 K 线重绘,导致信号滞后且不可信。作者 Konstantin Gruzdev 在 2014-05-27 发布的测试指出,对市场价格做小滤波(轻度平滑)后,存在构建「末柱不重绘」数字滤波器的可行路径。 该思路的核心是把市场报价视作连续流数据,用轻量滤波剥离噪声、保留趋势分量,而不像常规 MA 那样在最新柱回头修正。原文披露的公开互动数据:发布后获 2501 次查看、44 条讨论,说明这类非滞后指标在 MT5 社区有真实需求。 若你想验证,可直接在 MT5 用自定义指标跑一组小窗口平滑,观察最后一柱输出是否在下一 tick 发生改变——不变即满足非重绘底线。外汇与贵金属波动剧烈,此类滤波器仅降低噪声,不消除方向误判风险。
◍ 经典平滑法的三道硬伤
经典时间序列平滑思路在 MT5 里随处可见,本质是用历史样本加权来压噪声。但它交出的成绩单很老派:趋势转向信号必然带延迟,你看到拐头时价格已经跑了一段。 想要更灵敏的数字滤波器,代价是平滑度明显变差,噪点重新爬回曲线。试图做非滞后指标更糟,最后一根柱会被反复重绘,肉眼看是“实时”实则一直在改历史。 外汇和贵金属这种高波动品种,重绘和延迟叠加会直接吃掉进场窗口。开 MT5 随便挂个 Moving Average 与 AMA 对比同一段黄金 1H 走势,你能直观看到 AMA 在末端重绘、MA 滞后三根柱以上的现象。
「为什么经典指标总在实盘里失效」
平稳过程的定义很冷酷:随机过程的联合概率分布不随时间改变。市场报价显然不满足这条,有经验的做市商一进场,之前基于已知序列参数算出来的东西就被搅乱了。 多数指标(移动平均线及其变体)仍建立在平稳时间序列分析理论上,这本身就是错配。自适应指标尝试考虑非平稳性,但实测没创造奇迹;小波、经验模态这类针对非平稳序列的方法,也没能真正“惩罚”做市商。 核心症结在于:这些方法不是为流数据设计的。地球物理里你能先录下地震波再分析几个月,滤波时端部不稳定性可以事后处理;而交易是经验流数据,我们盯的是刚收到的报价,不是历史回放,经典算法在这里天然水土不服。
群集滤波器怎么实时咬住非稳态行情
群集滤波器是一组贴近原始序列的数字滤波器,别跟群集指标搞混。它专门对付非稳态时间序列,也就是流数据:核心任务不是把已知历史抹平,而是在新 tick 进来时实时算出最可能的平滑值。 和分解法或固定频带滤波器不同,群集滤波器先给出初始序列可能值的组合或区间,再往真实序列靠。输入序列在这里更像参照物,真正被分析的是那组滤波器算出来的输出。 群里每个滤波器特性独立、互不相关,有的被定制去盯自己那段平稳子序列,正好刻画原序列里某个局部属性。最简单的情况:原非稳态序列参数一变,对应滤波器就“切换”,所以它能实时追踪行情结构漂移。外汇与贵金属这类高波动品种里,参数跳变频繁,用这类滤波器要比回头平滑历史更跟手,但信号滞后与误切换风险始终存在,需上 MT5 用真实 tick 验证。
◍ 三步搭出群集滤波器
群集滤波器的设计可以拆成三步,第一步往往最难:要为流入的数据流建立概率模型。这类模型的数量没有上限,而且不一定对应真实物理过程;但模型对可接近序列描述得越准,拿到非滞后滤波器的概率就越高。 第二步给每个模型挂一个或多个数字滤波器。最常见的做法是,这些滤波器本就属于描述该序列的模型,直接并入群集。 到了第三步,群集里已经攒下至少一个以上的滤波器。每个新样本进来,你手里就有采样值加若干滤波器输出,等于拿到一个至少包含两个元素的人工噪声向量。剩下的事只有一件:从中挑最合适的值。外汇与贵金属行情受杠杆与跳空影响,这类滤波在高波动段可能失效,实盘前请在 MT5 用历史数据验证。