评估分形指数和Hurst指数预测金融时间序列的能力·综合运用
📐

评估分形指数和Hurst指数预测金融时间序列的能力·综合运用

(3/3)·前面两篇铺垫了算法与单指标,这一篇用真实报价把分形维数和Hurst指数串成可执行的看盘动作

偏理论进阶 第 3/3 篇

把千根日线算出的Hurst当成当下入场依据是常见误用,局部区间的记忆长度往往和长周期完全相反。多数人只盯一个指数值,却没意识到分形维数在震荡与趋势切换时会剧烈跳动。本文用实际数据演示如何避免用全局统计掩盖局部分形特征。

用分形指数给600天行情贴状态标签

拿一支流动性足够的标的做实测,评估窗口拉到600个交易日、单窗取64根K线,跑完能拿到536个分形指数值。这个数字不是拍脑袋——它等于总样本减去窗口长度再加一,直接决定了你后面能画多长的状态序列。 把指数值和收盘价叠在一起看,颜色就是状态语言:蓝色段代表趋势态,系统有持久记忆,后续沿原方向走的概率偏高;紫罗兰是抗持久性的“粉噪”,带负记忆,价格更容易均值回归、走平;黄色就是布朗运动,前后互不相关,这时候硬做方向单属于赌。 外汇和贵金属这类高杠杆品种,状态切到黄色还去追突破,回撤可能直接扫掉止损。开MT5把窗口参数改成64、样本取600天,先确认你常做的品种在哪段是蓝、哪段是黄,比看任何指标金叉都实在。

◍ 用局部分形指数给行情贴标签

本地分形分析在交易里不是花活,它干两件事:一是抓无序状态,也就是时间序列统计特征突变的那一刻;二是给后面做预测打底。 计算 Hurst 指数 H 时有个坑要注意:想以够用的精度定出这个指数,所需样本跨度要比常规类似比例小两个数量级。正是这点差距,让 H 能当局部分形指数用,换句话说它描述的是这段序列稳不稳。 判读很直接:H<0.5 倾向理解为有趋势在跑,H>0.5 大概率就是平盘耗着,H≈0.5 当成纯布朗运动看。靠这个函数把初始价格序列分完类,预测才有了落脚处。外汇和贵金属波动受杠杆与消息驱动,用这套分类先想清楚自己是在趋势里还是泥潭里,风险不低。

「一点提醒」

分形指标在 EURUSD H1 上跑默认设置时,有用户遇到过数组越界:日志显示 MuIndexes 长度固定为 1074,而循环变量 ii 在某次跳到了 1610,直接触发 CFractalSeriesSet.mqh 第 108 行报错。根因是索引递减逻辑里把 1610 误读成 1061 一类的大脑错觉,实际已远超容器上界。 那位用户在源码里加了一行 IndexCount 回绕保护(IndexCount = IndexCount >= (int)MuIndexes.Size() ? 0 : IndexCount;)后不再崩,但承认不确定对分形测度计算有无偏移。外汇和贵金属杠杆高,这类第三方指标改完参数前,先在策略测试器用历史数据跑一遍再上实盘。 代码层真正要盯的是这句:ii = (CircleCount - 1 - i) + IndexCount; 新分数写进数组末尾,若 CircleCount 算错就会把 ii 推过 Size()。开 MT5 把日志级调到全部,加载 Fractal Index 看前 30 秒 ii 轨迹,比读文档更快定位。

MQL5 / C++
MuIndexes[ii] = IndexCalculater.Mu;
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         ii = class="num">539
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         ii = class="num">538
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         ii = class="num">537
class="num">16:class="num">01:class="num">59.441      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">16:class="num">02:class="num">10.682      Fractal Index(EURUSD,H1)         ii = class="num">1610
class="num">16:class="num">02:class="num">10.682      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">16:class="num">02:class="num">10.685      Fractal Index(EURUSD,H1)         array out of range in &class="macro">#x27;CFractalSeriesSet.mqh&class="macro">#x27; (class="num">108,class="num">17)
class="num">15:class="num">49:class="num">38.445      Fractal Index(EURUSD,H1)         ii = class="num">1
class="num">15:class="num">49:class="num">38.445      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">15:class="num">49:class="num">38.445      Fractal Index(EURUSD,H1)         ii = class="num">0
class="num">15:class="num">49:class="num">38.445      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">15:class="num">49:class="num">47.403      Fractal Index(EURUSD,H1)         ii = class="num">1073
class="num">15:class="num">49:class="num">47.403      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
class="num">15:class="num">49:class="num">47.403      Fractal Index(EURUSD,H1)         ii = class="num">1072
class="num">15:class="num">49:class="num">47.403      Fractal Index(EURUSD,H1)         MuIndexes.Size() = class="num">1074
ii = (CircleCount - class="num">1 - i) + IndexCount; class=class="str">"cmt">// 新分数存储在数组末尾
IndexCount = IndexCount >= (class="type">int)MuIndexes.Size() ? class="num">0 : IndexCount;
让小布替你跑这套
这些诊断小布盯盘的AIGC已内置,打开对应品种页即可看到局部Hurst与分形维数随窗口滑动的变化,把重复劳动交给小布,你专注决策。

常见问题

长样本覆盖的行为区间可能经历多次regime切换,局部分形特征被平均化,对短线入场参考意义弱,需用滑动窗口看局部值。
仅表示序列有持久性记忆倾向,概率上抗趋势,不代表必延续;外汇贵金属高风险,需结合形态与风控。
R是Close(t)在窗口内极大值减极小值得到的范围,S是同窗口收盘价标准差,按log(R/S)/log(N/2)估H再得D=2-H。
能,品种页内置局部分形与Hurst滑动诊断,不用自己写MQL5跑循环,省去数据清洗和可视化步骤。
接近2倾向独立噪声、无明显趋势,但极端行情下短时跳空也可能推高D,需看窗口长度与采样频率。