注意:如果函数需要多个返回值,不可使用多条Return语句,可以将其他需要返回值的变量定义为引用型参数,即***Ref类型,这种类型的参数变量可以将其在函数内部中的改变直接传递出去。
例:求N周期最大值。假定需要编写的用户函数功能需求为:求出序列变量Price在最近Length周期内的最大值,并且求出最大值出现的Bar与当前Bar的偏移量。
函数脚本如下:
Params Series<Numeric> Price(1); Numeric Length(10); NumericRef HighestBar; //设置引用型的变量 Vars Numeric MyVal; Numeric MyBar; Numeric i; Begin MyVal = Price; MyBar = 0; For i = 1 to Length-1 { If ( Price[i] > MyVal) { MyVal = Price[i]; MyBar = i; //记录最大值Bar与当前Bar的偏移量 } } HighestBar = MyBar; //将偏移量赋值给引用型变量,将该值传递回去 Return MyVal; //返回计算得到的最大值 End
可以参考pivot linearreg等函数