用多项式拟合价格轨迹的可行思路
◍ 用多项式拟合价格轨迹的可行思路
在 MT5 里,把近期价格序列用多项式回归做拟合,是观察趋势弯曲程度的一种直接办法。相比直线通道,二阶或三阶多项式能刻画拐点的早期形变,对贵金属与外汇的高波动段更敏感。 下面这段 MQL5 片段演示了用最小二乘思路构造二次多项式系数,样本取最近 50 根收盘价。注意外汇与贵金属杠杆高、滑点大,拟合结果只代表历史形态,对未来拐头仅具概率意义。
class="type">class="kw">double x[class="num">50], y[class="num">50]; for(class="type">int i=class="num">0;i<class="num">50;i++){ x[i]=i; y[i]=Close[i]; } class="type">class="kw">double sx=class="num">0,sx2=class="num">0,sx3=class="num">0,sx4=class="num">0,sxy=class="num">0,sx2y=class="num">0; for(class="type">int i=class="num">0;i<class="num">50;i++){ sx+=x[i]; sx2+=x[i]*x[i]; sx3+=x[i]*x[i]*x[i]; sx4+=x[i]*x[i]*x[i]*x[i]; sxy+=x[i]*y[i]; sx2y+=x[i]*x[i]*y[i]; } class=class="str">"cmt">// 解二元一次正规方程得 a,b,c
class="type">class="kw">double x[class="num">50], y[class="num">50]; for(class="type">int i=class="num">0;i<class="num">50;i++){ x[i]=i; y[i]=Close[i]; } class="type">class="kw">double sx=class="num">0,sx2=class="num">0,sx3=class="num">0,sx4=class="num">0,sxy=class="num">0,sx2y=class="num">0; for(class="type">int i=class="num">0;i<class="num">50;i++){ sx+=x[i]; sx2+=x[i]*x[i]; sx3+=x[i]*x[i]*x[i]; sx4+=x[i]*x[i]*x[i]*x[i]; sxy+=x[i]*y[i]; sx2y+=x[i]*x[i]*y[i]; } class=class="str">"cmt">// 解二元一次正规方程得 a,b,c
「正交多项式能替你干的三件实事」
交易效率卡在数据分析这一步的人,往往忽略了一类数学工具:正交多项式。它不是指标黑箱,而是一组具备正交性的函数族,最常用的是勒让德、切比雪夫、拉盖尔和埃尔米特四种,各自性质不同,但都能直接落到交易场景。 在时间序列建模里,正交多项式能把价格序列展开成若干相互独立的成分,趋势和周期模式因此更容易被分离出来,而不是糊成一团均线和 MACD。回归分析中加入正交基,模型共线性的问题会明显减弱,参数估计更稳,解释起来也不绕。 预测端的应用更直接:在「当前趋势延续」的假设下,用多项式外推能给出价格路径的概率性参考。外汇与贵金属杠杆高、跳空频繁,这种外推只作辅助,不能当成方向保证。 这三类用法不抽象,打开 MT5 用几行 MQL5 把勒让德基算出来,你就能在策略测试器里验证它对你品种的信噪比改善。
用正交多项式拆价格信号
技术分析的难点从来不是找形态,而是噪声把形态盖住了。正交多项式的思路是把一段价格序列拆成互相独立的多项分量,低频项吃趋势、高频项多半是噪,分开处理就能滤掉干扰。 勒让德多项式是最常用的基底,定义域在 [-1,1]。原文给出 0~9 次方程,实操里用最高 9 次足够;再往上加次反而把主趋势搅乱。先把价格索引 i 平移进定义域,再逐点算各次多项式值,并对 1 次及以上做和为零的离散修正。 权重按投影公式算:0 次权重恒为 1/N,合起来就是 SMA;高次权重等价于带特殊比率的振荡器。也就是说,勒让德平滑 = SMA 加几个算好的附加项,对排序和噪声鲁棒。 切比雪夫分两类,边界表现不同,对价格突变更敏感;拉盖尔定义域是非负实数,平移后近期价格权重更大;埃尔米特全域定义,做中心化平移出平滑滤波。还可以拼出切比雪夫-埃尔米特混合多项式,对二次、三次非线性趋势敏感。 这类工具的三个硬优点是去相关稳定、分量可解释、随新价自适应。唯一被有些人当成缺点的是“重绘”——新数据进来重新拟合,其实是找最优解,不是 bug。 实盘落地有一条铁限:指标周期必须大于多项式次数。日常把次数压在 3 次以内最稳,此时指标 = SMA + 线性 + 两条抛物线,够应付多数行情;周期拉大才值得提次数。外汇与贵金属波动剧烈、杠杆高风险大,上 MT5 用文中方程写个 iCustom 验证重绘节奏再决定周期。
◍ 用正交多项式替换指标做交叉与偏离策略
正交多项式不只是拟合历史价格,它能跟着行情当前结构自适应调整。把传统均线交叉里的SMA换成正交多项式,开平仓规则不变:价格自下而上穿越多项式开买并平卖,自上而下穿越开卖并平买。这套极简玩法在样本内表现稳定,说明替换本身就有过滤噪声的倾向。 再复杂一点,用某次多项式的值替代价格,等价于两条不同阶多项式交叉,类似双SMA叉。优化器在全部组合里最终挑中的是正交多项式方案,过拟合概率低于普通多项式。 以CCI为例,把原式里的0次SMA换成任意次正交多项式,再算相对该多项式的平均绝对偏差,就得到改良版通道指标。策略逻辑保持经典:指标低于设定水平且继续下行开买,高于且上行开卖,反向信号平仓。用3次多项式回测,信号抖动比原CCI少,但外汇与贵金属杠杆高,实盘仍需防假突破。 同理可造类RSI:统计落在多项式上方的价格根数,判断超买超卖。触界开仓、回中心平仓即可。更进一步的用法是塞进神经网络——把1次到N-1次(N为处理价点数)的正交多项式权重比作为输入特征,独立估计时序成分,能压住过拟合、提升训练质量。建议开MT5用附码先跑一遍3次多项式CCI改动版验证。
「画得少,看得清」
把正交多项式塞进 MT5,最实在的用法不是堆指标,而是用低次项替掉均线类平滑。N 取 0 到 2 时,曲线对拐点的滞后明显小于同周期 SMA,回看 EURUSD H1 的 2023 年数据,9 周期一次多项式交叉信号比 9 期 SMA 交叉平均早 1~2 根 K 线触发。 附件里 7 个文件直接丢进 MetaEditor 编译就能跑:指标类周期参数 iPeriod 别低于 2,N 上限 9 但高次项容易过拟合,实盘前先用策略测试器跑一遍。外汇和贵金属杠杆高,正交化只是降噪,不替你扛回撤。 真要落地,先装 Orthogonal_RSI 看超买超卖区有没有更干净的边界,再决定要不要上 EA。少开几个窗口,反而容易看出价格什么时候脱离多项式轨道。