寻找市场形态的计量经济学方法:自相关,热点图和散点图·综合运用
(3/3)·自相关只看到随机噪声?排除时段后热点图暴露了 EURUSD 隐藏的季节性记忆链条
多数交易者看到自相关图在零轴附近波动,就默认市场毫无形态可循。问题在于经典方法把全天时段混在一起算,季节性记忆被随机噪声稀释掉了。换一个切分视角,相关性结构会完全改写你的判断。
「按小时触发的两级做空挂单」
这段逻辑把卖单拆成了不同时段的条件触发:当 pr 低于 -signal2 且系统小时数为 13 时,直接以当前 Bid 价市价做空;若 pr 进一步低于 -signal3 且小时数为 13,再以同样方式补一单;小时数走到 14 且 pr 低于 -signal4 时再下一单。三个信号阈值逐级加深,等于把下午 13–14 点当成高概率回调窗口。 外汇与贵金属属高风险品种,这类定时触发不保证盈利,实际胜率取决于 signal2~4 的标定与当时流动性。建议把代码拷进 MT5 的 EA 测试器,分别改 hours.hour==13 与 ==14 看成交分布,再决定是否上实盘。
OrderSend(Symbol(),OP_SELL,LotsOptimized(), Bid,class="num">0,Ask+stoploss*_Point,NormalizeDouble(Bid - signal2, _Digits),NULL,OrderMagic); if(pr <= -signal3 && hours.hour==class="num">13) OrderSend(Symbol(),OP_SELL,LotsOptimized(), Bid,class="num">0,Ask+stoploss*_Point,NormalizeDouble(Bid - signal3, _Digits),NULL,OrderMagic); if(pr <= -signal4 && hours.hour==class="num">14) OrderSend(Symbol(),OP_SELL,LotsOptimized(), Bid,class="num">0,Ask+stoploss*_Point,NormalizeDouble(Bid - signal4, _Digits),NULL,OrderMagic);
◍ M15 上的跨周期增量验证
把同样的增量相关逻辑搬到 M15 周期,意味着当前时间与前一交易日同时段之间要覆盖的柱数变为 H1 的 4 倍,理论有效滞后应约 24*4=96。我沿用 H1 的 EA 设置直接在 M15 重跑优化,看滞后参数是否还能对上。 优化间隔里算出的有效滞后小于 60,和理论值偏离明显。要么是优化器抓到了另一种短周期形态,要么就是 EA 在 M15 上过拟合了,这点不能忽视。 切到正向测试间隔,有效滞后回到 100 附近,和形态预期一致,说明 M15 下这套相关性在样本外没有崩。 对比回测与正向曲线,M15 的资金曲线形状和 H1 类似,但成交次数明显更多。外汇与贵金属属高风险品种,这种频次放大既可能摊薄单笔风险,也可能放大滑点与过度交易,建议读者在 MT5 里把周期切到 M15 用相同 Lag 参数亲自跑一遍验证。
用机器学习补完集簇假设
前两部分的统计结论已经站住脚:跨时间周的同段增量存在相关性,且这种相关性会集簇,当前时段增量也受相邻增量牵动。附件里的 Seasonal_explorer.zip(576.97 KB)和 Seasonal_trader.zip(1.71 KB)是直接可跑的验证素材,MT5 里挂上测试 EA 就能复现现象。 原文给出的集簇逻辑只是作者视角的实现,并非唯一交易变体;EA 优化本身也是在确认统计形态可被工程化捕捉。外汇与贵金属波动剧烈,任何基于相关性的策略都只是概率优势,实盘前务必小资金压力测试。 下一篇打算用简单机器学习模型把「集簇依赖相邻增量」这条假设彻底证真或证伪。现在能做的,是把那行差分代码丢进 Jupyter 框架,换黄金或欧美盘口跑一遍热图。 [CODE] ratesH = rates.drop(rates.index[~rates.index.hour.isin([i])]).diff(lag).dropna() [/CODE] 这行先按小时 i 筛出序列再滞后差分,lag=25 时得到的是隔 25 天的同日同时差值;改 lag 参数就能看不同间隔下的集簇强度。