线性回归

线性回归的几个函数在使用时,如果使用前设置了条件,和没有设置条件的结果不同。以LinearRegSlope()函数为例代码如下,如何理解?Params Numeric Length(7);Vars Global Numeric gNumSlop; Series<Numeric> sNumSlop;Events OnBar(ArrayRef<Integer> indexs) { If(High>=Highest(High[1],Length)) // 添加一个条件 { PlotBool(\"gNumSlop\",True); gNumSlop = LinearRegSlope(Close,Length); Commentary(\"gNumSlop= \"+Text(gNumSlop)); } sNumSlop = LinearRegSlope(Close,Length); // 无条件 Commentary(\"sNumSlop= \"+Text(sNumSlop)); // sNumSlop不等于gNumSlop??? }

linearregslope引用了linearreg函数,而linearreg函数是一个序列类型跟你用什么类型的数据结构保存linearregslope函数的运行结果是没有关系的,导致运行不一致的原因是函数内部的运行路径的问题。我再次建议你先搜索论坛里关于,序列类型,的帖子,看看答疑帖再继续问,请不要固执于自己的思路。

回复:明白了,谢谢!

注意!!!上述回复代码中,双引号前的反斜杠是论坛编辑发布后自动添加的

线性回归是序列类型,你编译信息里应该有一个warning吧具体原因在社区里搜索序列类型,有相关的解释

回复:编译时没有任何错误或警告。然后我用能想到的所有变量类型改写了代码如下。结果除了有条件方式,其他计算结果都一致。问题在哪儿呢?Params Numeric Length(7); Vars Global Numeric gNumSlop; Global Numeric gNumSlop_1; Numeric NumSlop; Series<Numeric> sNumSlop; Array<Numeric> arrNumSlop; Integer i; Events OnBar(ArrayRef<Integer> indexs) { // 有条件的全局变量 If(High>=Highest(High[1],Length)) // 添加一个条件 { PlotBool(\"gNumSlop\",True); gNumSlop = LinearRegSlope(Close,Length); Commentary(\"gNumSlop= \"+Text(gNumSlop)); } // 无条件全局变量 gNumSlop_1 = LinearRegSlope(Close,Length); Commentary(\"gNumSlop_1= \"+Text(gNumSlop_1)); // 普通变量 NumSlop = LinearRegSlope(Close,Length); Commentary(\"NumSlop= \"+Text(NumSlop)); // 序列变量 sNumSlop = LinearRegSlope(Close,Length); // 无条件 Commentary(\"sNumSlop= \"+Text(sNumSlop)); // sNumSlop不等于gNumSlop??? // 临时变量 Numeric tmpSlop = LinearRegSlope(Close,Length); Commentary(\"tmpSlop= \"+Text(tmpSlop)); // 数组变量 For i=0 To Length-1 arrNumSlop[i] = Close[i]; Commentary(\"arrNumSlop[]= \"+Text(LinearRegSlopeArray(arrNumSlop))); }