用户函数传参数问题,数值型和序列型参数能相互转换?

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这个示例代码错误,还是参数可以自行转换?

 

布尔型转换成数值型
Integer型怎么能转成Numeric型,用哪个函数
换手率的系统例程里面,为什么Average函数的参数不是序列型?
序列型数组存储问题
参数值设置为范围问题
关于底分型、顶分型怎么编
序列参数不好用
关于参数转换成字符串的问题
数组和变量序列相互赋值问题
关于map数据类型在用户函数参数中无法使用的问题

我打个比方吧

往函数里传参,就好比工作中,给你的同事交代工作资料

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中的称呼叫“引用型”

 

yes明白了,感谢

感觉Summation中把函数参数Series<Numeric> Price(1)放到其变量区,参数区还是Numeric Price1,然后在函数体中把Price1赋值给序列变量Price保存,会更加好理解一些。

可以这么理解