最近有一篇文章(懒得找了)也使用了"线性回归"。我对此做了详细的评论,我再重复一遍。
两位作者犯了相同的错误:他们混淆了 "线性回归 "和 "线性近似 "这两个性质不同的概念。前者指的是随机变量,后者指的是确定变量。它们的方程因随机变量(即误差)而异。我不知道 Alglib 是如何计算误差的,但在任何普通统计软件包中,误差的计算都会导致对回归系数的评估,因为它们都存在误差,误差可能是计算系数标称值的倍数,这就导致了一个可悲的结果:系数的值是计算出来的,我们看到了它,但实际上它并不存在,我们无法使用我们所看到的。
如果我们将 "线性回归 "改为 "线性近似",这将符合文章的本质,即把天平视为一组确定而非随机的值,那么这篇文章就会相当有趣和有用。
有一个一般性问题:为什么我们在填充交易结果数组时,只考虑对余额有正影响的交易?
余额曲线上的凹点(即交易损失的结果)不是也会影响 LR 线,从而影响GetProfitStability 吗?
我在尝试编译 BalanceRegression.mph 时遇到了一些错误:
注释掉的两行产生了以下错误--在四处查找后,我发现 alglib 库被更新了。
更新后的行可以编译并运行代码,但我以前从未使用过 CMatrixDouble,所以我不能百分百确定修正是否正确。
operator[] constant variable cannot be passed as reference
CMatrixDouble xy(arr_size,2); for(int i=0;i<arr_size;i++) { //xy[i].Set(0,i+1); //xy[i].Set(1, arr_profits[i]); xy.Set(i, 0, i+1); xy.Set(i, 1, arr_profits[i]);
另外,在同一个文件中,注释掉的那行返回了未定义变量--我想这也是算法库更新造成的:
//double:TrendMSE=linear_report.m_rmserror; double TrendMSE=linear_report.m_RMSError;

新文章 利用余额图进行策略优化并将结果与 "余额 + 最大锋锐比率" 标准进行比较已发布:
在本文中, 我们研究另一种基于分析余额图来优化自定义交易策略的准则。线性回归使用 ALGLIB 函数库中的函数进行计算。
MACD Sample balance regression.mq5, EURUSD, H4, 未启用前瞻测试
选择以下参数用于优化:
插图19. 测试器, 输入选卡
我将针对 MACD Sample balance regression EA 进行同样的三次测试:
作者:Vladimir Karputov