多元回归分析。策略生成程序和策略分析程序二合一·进阶篇
「用回归拆开指标和价格的数学关系」
多元回归干的事,是看清几个独立变量怎么牵动一个依存变量。放到行情里,就是拿 RSI、MACD 这类指标值去套价格变化:价格变化 = a*RSI + b*MACD + c。系数 a、b 只说明每个指标对数字依存关系的贡献度,不证明谁导致谁——这点对外汇、贵金属这种高噪音市场尤其要心里有数。 回归等式描述的是理想依存,实盘里预测值和真实值永远有差,这个差叫残差。残差分析能帮我们嗅出指标和价格之间藏着的 nonlinear 依赖;好消息是回归对轻微偏离线性并不敏感,小布盯盘时不必为一点歪斜就弃用模型。 独立参数不能贪多。若参数数大于观察数,极易拟合出‘看起来很准’但纯靠随机波动的等式。经验底线:观察数应为参数数 10–20 倍。前文那套 EA 样本用了 33 个参数、836 条观察,倍数约 25,刚好踩在可靠线上;这原则同样管着 MT5 策略测试器的优化。 优化器里指标的每个指定值都算一个独立参数。测 10 个指标值就等于引入 10 个维度,报告里该盯一个隐藏比值:平均交易数 / 所有优化参数值数。若比值小于 10,模型大概率过拟合,得再优化。 异常值会往等式里塞假依存。像突发消息后的价格尖峰,几小时剧烈波动里指标基本失效,却在回归里被加权成‘重要’。做贵金属或外汇回测前,先过滤样本或人工排查离群点,比直接跑回归更省事。
用 Statistica 自己炼一条回归策略
想让 MT5 吐出的指标值变成可交易的预测式,第一步是把柱上数据规整成横向指标、纵向连续柱的 CSV。原文配套的 R_collection EA 会在 terminal_data_directory/MQL5/Files 下生成 MasterData.CSV,测试器里则落在 Agent 路径的 Files 目录;它一次性采集 33 个参数,涵盖 AC、Bulls、Bears、DeMarker 等 12 类指标的绝对值、差分(d 前缀)及双倍周期版本(_p 后缀)。 导入 Statistica 8.0 时走 File>Open 选 Data files,文本导入类型退 Delimited 直接 OK,勾上下划线项,小数分隔符务必手填点号,否则欧美报价会整列错位。EURUSD H1 实测采样 2011.01.03–11.11,但建模只取 8–9 月,案例窗口卡在 3590–4664 行,且过滤掉最后一根柱收开差超 250 点的尖峰。 跑 Statistics->Multiple Regression,Advanced 里启用标记项,依存变量挂 Price,独立变量从 Price2 拉到 dWPR。案例选择只留 7–8 月,用 V0 控量,顺手按价格过滤异常值。方法选 Forward Stepwise,程序自动挑出对多重相关有实质贡献的项——本质就是个策略生成器。 结果窗看 Multiple R 与 p 值:p<0.05 才够显著,红显指标才算合格。若溜进无意义参数,回 Summary 找最高 p 值项,退到图 7 删掉重跑;一次剔一个更稳,盯住 Multiple R 别掉太多。本例 33 选 5,相关值掉约 20%,大概率来自大样本随机巧合。外汇与贵金属属高风险,若删完凑不出显著组,说明价格对过往信息近乎失忆,此时依据此类技术分析的仓位应极度谨慎甚至停手。 最终等式取 B 列系数加截距:Price = 22.7 + 205.2*dDemarker - 41686.2*dAC - 139.3*DeMarker + 22468.8*Bulls - 14619.5*Bears。残差分析点 OK 后能看出它对少量异常值、正态偏离不敏感;明显非线性可走 Fixed Nonlinear Regression 线性化。回归只是策略测试器的替代品,炼出式不等于能裸用,MT5 回测前先自己跑一遍残差正态性。
◍ 用回归把上千指标周期塞进一张表
回归分析能一口气吃下成千上万个参数,这让它直接变成策略优化器。把某个指标的 50 个周期拆成 50 个独立参数一次性丢进回归,Statistica 单表上限 65536 个参数,按每指标 50 周期算能同时分析约 1300 个指标,远超 MT5 标准测试器的吞吐。 示例里给数据加了周期翻倍版的指标值,参数名带 '_p' 后缀,样本共 60 个参数。跑完回归得到的等式只留了 11 个:6 个标准周期、5 个扩展周期,参数与价格的相关性比之前提升 25%,MACD 全周期参数也进了等式。 因为不同周期在回归里是独立参数,等式可能同时收下 RSI(7) 与涨相关、RSI(14) 与跌相关——这种粒度标准测试器根本给不出。训练段(2011.7.1–9.1)曲线更平滑、EA 盈利更多;但换到 2011.9.1–11.1 测试段,盈利图比只用标准周期时还差,说明扩展等式得查内部指标的正态性和非线性。 Price = 297 + 173*dDemarker - 65103*dAC - 177*DeMarker + 28553*Bulls_p - 24808*AO - 1057032*dMACDms_p + 2.41*WPR_p - 2.44*Stoch_m_p + 125536*MACDms + 18.65*dRSI_p - 0.768*dCCI 测试段 EA 没崩只是没赚,策略骨架算稳。但要留意 MQL5 单行文件只让输出 64 个参数,跨周期大规模分析得在 Statistica 或 Excel 里先并表再喂回来。外汇与贵金属杠杆高,这类回归优化在外推时段失效的概率不低,上 MT5 前先自己切两段时期验证。
Price = class="num">297 + class="num">173*dDemarker - class="num">65103*dAC - class="num">177*DeMarker + class="num">28553*Bulls_p - class="num">24808*AO - class="num">1057032*dMACDms_p + class="num">2.41*WPR_p - class="num">2.44*Stoch_m_p + class="num">125536*MACDms + class="num">18.65*dRSI_p - class="num">0.768*dCCI
「把这条线请下神坛」
回归分析在 MT5 里并不神秘:它本质是从一堆指标里挑出对价格解释力最强的那个,并顺手把最优周期也找出来。原文附带的 r_check.mq5(9.93 KB)和 r_collection.mq5(17.37 KB)就是把这套逻辑直接写成 MQL5,不需要你深懂编程也能跑。 把回归等式当交易策略的骨架是可行的,但它只是多元统计的一种,不是预测神谕。论坛里有人把它和神经网络类比,原因是在历史样本上两者都容易给出‘看起来很美’的拟合——而这恰恰是外汇、贵金属这种高杠杆高风险市场里最该警惕的错觉。 所以真要验证,下载那两个文件丢进 MT5 回测,重点看样本外表现;拟合优度高只代表过去,实盘仍可能随波动率突变而失效。