/------------------------------------------------------------------------
// 简称: LinearReg
// 名称: 求线性回归
// 类别: 用户函数
// 类型: 内建函数
// 输出: 布尔型
//------------------------------------------------------------------------
Params
Series<Numeric> Price(1); //数值型序列值
Numeric Length(10); //周期数
Numeric TgtBar(0); //Bar偏移
NumericRef LRSlope; //斜率返回值
NumericRef LRAngle; //角度返回值
NumericRef LRIntercept; //Y轴截距返回值
NumericRef LRValue; //回归返回值
Vars
Numeric SumXY(0);
Numeric SumY;
Numeric SumX;
Numeric SumXSqr;
Numeric Divisor;
Numeric i;
Begin
if (Length > 1)
{
SumX = Length * ( Length - 1 ) * 1/2;
SumXSqr = Length * ( Length - 1 ) * ( 2 * Length - 1 ) * 1/6 ;
Divisor = Sqr( SumX ) - Length * SumXSqr ;
SumY = Summation( Price, Length ) ;
for i = 0 to Length - 1
{
SumXY = SumXY + i * Price[i] ;
}
LRSlope = ( Length * SumXY - SumX * SumY) / Divisor ;
LRAngle = Atan ( LRSlope ) ;
LRIntercept = ( SumY - LRSlope * SumX ) / Length ;
LRValue = LRIntercept + (Length - 1 - TgtBar)*LRSlope;
Return True;
}Else
{
Return False;
}
End
这是系统自带的线性回归,在旗舰版中运用的时候直接使用
LinearReg(close,length,X,X,X,X,X,);就能得到赋值结果。但是在TBQ里面不行,提示序列变量回溯不能传参给引用类型,如何解决?
Vars
//此处添加变量
Series<Numeric> LRSlope(0);
Series<Numeric> LRIntercept(0);
Series<Numeric> LRAngle(0);
Series<Numeric> LRValue(0);
应用的设定里是这么写的
请把具体应用的代码贴出来 这个一定是你语法错了
LinearReg(close,Length,0,LRSlope,LRAngle,LRIntercept,LRValue);
这就是我应用的代码,就这一行,旗舰版里这么写没问题