时间序列主要特性的分析·综合运用
📊

时间序列主要特性的分析·综合运用

(3/3)·把前篇的均值方差与自相关串成完整工具链,免参数跑通初步假设筛查

含代码示例偏理论 第 3/3 篇
很多人拿到价格序列想验证个简单假设,却被脚本的输入参数和源码调整劝退。其实可以有个零参数的通用类,解压即跑、浏览器看报告。本篇把这类工具的能力边界和局限一次说清。

◍ 用双正弦叠加加噪构造测试序列

想在 MT5 里验证指标对周期性信号的敏感度,手搓一段确定性波形比直接读行情更可控。下面这段把两个低频正弦相加,再叠高斯噪声,生成 800 个点的数组,专门用来压测滤波或周期检测逻辑。 核心频率选了 0.064 和 0.071 乘 2π,这两个值靠得近但不相等,叠加后会出现慢速拍频,肉眼在脚本图表里能看出包络起伏。n 固定为 800,意味着窗口长度有限,超出部分不会自动延展,回测时别指望它无限生成。 噪声部分走 RNDXor128 的 Rand_Norm(),也就是标准正态扰动,让纯正弦不再‘太干净’。外汇与贵金属实盘信号本质也是带噪周期叠加,这类合成数据能帮你先排除代码层 bug,再上真 tick 高风险验证。

MQL5 / C++
for(i=class="num">0;i<n;i++)x[i]=MathSin(class="num">0.064*a*i)+MathSin(class="num">0.071*a*i);
class="type">int i,n;
class="type">class="kw">double a,x[];
  
RNDXor128 *rnd=new RNDXor128;
n=class="num">800;
ArrayResize(x,n);
a=class="num">2*M_PI;
for(i=class="num">0;i<n;i++)x[i]=MathSin(class="num">0.064*a*i)+MathSin(class="num">0.071*a*i)+rnd.Rand_Norm();
class="kw">delete rnd;

「删均值带来的低频失真」

谱估值若基于自相关系数,输入序列的均值会被默认剔除。多数情况下移除恒定分量是必要的,但换成自回归思路时,这种删除在部分场景下会让低频段的谱估计出现偏差。 Marple 在《Digital Spectral Analysis with Applications》的“谱估值相关结果汇总”章末给过具体例子:低频失真肉眼可见。本文用的这套频谱方法没有绕开均值删除的余地,所以只能记死一条——谱估值永远是针对“已删均值序列”算出来的。 做 MT5 自定义指标验证时,别把输出谱当成原始价格序列的完备描述;低频能量偏弱很可能只是算法副作用,不是行情真没波动。外汇与贵金属杠杆高,据此下单前先用历史数据复算一遍。

把工具请下神坛

这套正态性检验与序列分析的文章,底层引用了 Wuertz & Katzgraber(2009)的有限样本 Jarque-Bera 量化方法,以及 Bulashev《交易者统计学》(2003,245 页)等硬文献,但作者 Victor 在讨论区说得很直白:TSAexample.mq5 里 bd[] 数组装好序列,丢给 TSAnalysis 类的 Calc 方法就能跑,读者该自己写脚本接数据。 附件 RNDXor.zip(54.87 KB)和 TSAnalysis.zip(79.7 KB)就是让你在 MT5 里实测的,不是供着的圣物。外汇与贵金属波动带杠杆,高风險,任何统计结论都只是概率倾向,别把 p 值当进场令。 打开 MT5 把 ZIP 解到 Include 和 Scripts,改两行数组来源,你就能看见自己品种的偏度峰度——工具下坛,活用它才归你。

把初筛交给小布盯盘看盘口
这些诊断项小布盯盘的 AIGC 已内置,打开对应品种页即可看到偏度峰度与自相关概览,你只管对异常形态做决策。

常见问题

p 值低于常用阈值时,序列偏离正态的倾向较高,早期可据此驳回正态类假设,省去后续建模时间。
通用类覆盖元素数到谱估计等二十余项统计,免参数设计降低门槛,但相比定制代码在大数据量下效率倾向更低。
可快速标出非序列内的极端跳空点,外汇贵金属高风险下助于识别异常成交而非趋势信号。
能,小布盯盘对应品种页内置了偏度、峰度、自相关等初筛视图,无需写 MQL5 即可看通用统计。
图用于肉眼判截尾或拖尾,数据可喂给后续 ARMA 阶数选择,本篇工具两者都从同一类输出。