在函数调用需要将多个值返回时,可以将变量以引用方式传递进去可以达到返回多个值的作用,如:numeric 可以 在函数参数变量类型用numericRef 方式达到,但 series<Numeric> 类型 没有找到对应的变量类型引用表达方式,我应该如何将 series<Numeric> 参数怎么办才能达到该效果?
如:
函数调用者
Vars
Numeric pdi;
Numeric mdi;
series<Numeric> adx;
Events
OnBar(ArrayRef<Integer> indexs)
{
Range[0:DataSourceSize() - 1]
{
getDMI(pdi,mdi,adx);
}
}
函数实现:
Params
NumericRef PDI; //引用类型
NumericRef MDI; //引用类型
series<Numeric> ADX;//这个参数需要设计为引用类型将参数值返回出函数的,应该设计为什么类型?
Begin
PDI = 1;
MDI = 2;
ADX = AverageFC(Abs(MDI - PDI) / (MDI + PDI) * 100,6);
End
TB公式不支持将序列类型变量做为参数传递给函数的引用类型参数,如果这么写编译时会报错。
我猜测,您是想把一个序列变量,整体作为参数传入函数,期望在函数里使用,这个其实是做不到的。真正传入函数的只是某根BAR运行公式时,当根BAR该序列变量的值而已。函数内部定义的序列参数,实际是根据传入的参数值再造了一个序列变量,而这个序列变量是否和公式里的序列变量值一样,就取决于是否每根BAR都调用了函数,这也是为什么序列函数不能放在条件语句中的根本原因。