RSI公式源码中:
TotChgAvg = Average( Abs( Close - Close[1] ), Length ) ;
调用Average函数传的一个数值参数Abs( Close - Close[1] )
Average函数源码:
Params
Numeric Price(1); //数值型序列值
Numeric Length(10); //周期数
Vars
Numeric AvgValue;
Begin
AvgValue = Summation(Price, Length) / Length;
Return AvgValue;
End
而Average函数中调用Summation函数传的也是Numeric数值参数Price,
Summation函数源码:
Params
Series<Numeric> Price(1); //数值型序列值
Numeric Length(10); //周期数
Vars
Numeric SumValue(0);
Numeric i;
Begin
SumValue = 0;
for i = 0 to Length - 1
{
SumValue = SumValue + Price[i];
}
Return SumValue;
End
而Summation需要的是序列参数Price,这个里面转来转去到底是TB这个示例代码错误,还是参数可以自行转换?
我打个比方吧
往函数里传参,就好比工作中,给你的同事交代工作资料
average里执行一次Summation(Price, Length),就意味着给同事,用price这个容器,交代了一些数据,相当于你拿着一张纸(Numeric Price from Average)把数据给了同事
然后同事拿到这张纸(Numeric Price from Average)以后,自己掏了一个本子(Series<Numeric> Price from Summation)出来,然后把这张纸(Numeric Price from Average)上的数据,放到了这个本子(Series<Numeric> Price from Summation)中的一页中,这个是传参的执行过程。
所以这里不是什么转化的问题,函数并没有对传进来的容器进行操作,你说的那种用指针方式工作的容器叫指针,TBL中的称呼叫“引用型”
明白了,感谢
感觉Summation中把函数参数Series<Numeric> Price(1)放到其变量区,参数区还是Numeric Price1,然后在函数体中把Price1赋值给序列变量Price保存,会更加好理解一些。
可以这么理解