非线性指标(基础篇)
📘

非线性指标(基础篇)

第 1/2 篇

「非线性指标在 MT5 里的真实定位」

传统均线、MACD 这类线性指标,本质是对价格序列做固定权重的平均或差分,假设市场波动结构稳定。但外汇与贵金属的高杠杆品种里,波动率聚集和突变频繁,线性工具容易在拐点滞后或假突破时连续发出噪音信号。 非线性指标不依赖固定时间窗的线性叠加,而是把价格映射进相空间或采用递归重加权,对局部结构变化更敏感。Aleksej Poljakov 在 2023 年 4 月 3 日发布的示例帖,至统计时获得 2266 次查看、11 条讨论,说明社区对这类非常规工具有明确需求。 开 MT5 后别急着加载第三方非线性指标,先确认你的品种周期是否具备足够样本:M5 黄金对若无 300 根以上 K 线,相空间重构可能失真。高风险品种上,任何非线性信号都只是概率倾斜,不是方向保证。

◍ 为什么要把线性指标改成非线性

在 MT5 里,大量内置指标其实都走了非线性路径,只是多数交易者只当它们是黑箱。当某段行情里少数极端波动比整体均值更有信号价值时,线性加权往往被噪音稀释,而非线性变换能放大关键特征。 普通线性指标可以写成 sum(w[i]*x[i]),w[i] 为权重系数。把它改成非线性,一个低成本做法是拿价格对数替代价格本身,求和后再取指数:log 域里所有乘法变成幂运算,加法变成乘法,最典型的副作用就是 SMA 会被几何平均值取代。 这种转换强制要求输入为正,因此价格必须先做平移或比值处理;系数约束和线性版本一致。你可以直接拿任意线性指标模板改一行输入就跑,但本文后面不聊这种“输入变换”,而是动时间序列本身——核心依赖 ArraySort 对数组重排来构造新指标。

均值之外:中位数与众数的实战分量

看价格分布不能只盯均线。算术平均是线性视角,中位数和众数才是压住极端值的非线性工具。把一组数 1, 6, 9, 3, 3, 7, 8 排成 1, 3, 3, 6, 7, 8, 9,中间那个 6 就是中位数;若去掉 9 变成偶数个,中位数取 (3+6)/2 = 4.5。它对尖峰的压制远强于简单移动平均。 众数在tick数据里几乎每个价只出现一次,这时可用皮尔逊经验式:众数 = 3×中位数 – 2×平均值。该式系数跑出 -1…+1 边界,指标本身不稳,但拿来交叉验证均值偏移有参考价值。 范围中间值 = (最高+最低)/2,对尖峰敏感、可靠性低,却在部分通道类指标里仍被采用。外汇与贵金属波动剧烈,这类度量仅作辅助,实盘前请在 MT5 用历史数据自测偏移幅度。

「用贝叶斯平滑撬动中位数的迟钝」

看中位数图形时会发现,某些区域里中位数值能连续很久不动,周期拉得越长这种僵区越明显——比如周期取 51 时,图形里就能看到一长段走平。 想让中位数对价格更敏感,一种做法是取中位数与简单平均线之和的一半,兼顾两者稳定性,但还有更直接的路:贝叶斯平滑。 先算所有价格总和:sum = price[1] + … + price[n]。再选一个参照数值,贝叶斯平均值按方程计算,其中 p 是控制参照值影响强度的参数,至少为 1。实战里我取了中位数、范围中值、最大值、最小值四类做参照。 贝叶斯平滑能同时作用于多个数值,指标里具体落地在最大值和最小值两条线,图表上能直接比对出和传统中位数的差异。它本质是在一个指标里把线性和非线性方法揉到一起,外汇和贵金属波动大、滑点风险高,参数 p 调小可能让信号更跳,调大则倾向钝化。

常见问题

均线属线性平滑,对极端 K 线滞后明显;非线性指标用中位数或贝叶斯平滑降低 outlier 干扰,信号可能更跟手。可先在同周期对比两者拐点差。
核心是把线性均值换成中位数计算,并对快线做贝叶斯先验平滑。回测时重点调先验权重,权重越大越钝、越小越灵敏。
小布可加载品种页同时跑两套算法,把分歧 K 线标出并推送。你只需打开对应页面看高亮,不用自己写代码验证。
中位数抗单根插针更强,众数在震荡市分辨成交密集区更准。贵金属与外汇波动大,建议两者叠加看共振。
秒级噪声多,先验权重需调高否则会频繁抖动。实盘前用历史分笔跑一遍,确认误报率降到可接受再上。