公共函数
来自tradeStar帮助系统
目录 |
概述
所谓函数,是一些会反复使用到的功能,封装而成的一段代码。
函数有三种类型:内置函数、局部函数和公共函数
内置函数是最常用的函数,本软件中有很多内置函数,例如ma、hhv、buy、sell等等。
当内置函数不够用,除了等待软件升级新增所需函数,还有一个途径,就是通过公式语言自行编写局部函数或公共函数。
局部函数和公共函数
通过公式语言编写的函数有两种存在形式。
第一种,内嵌在其他公式中。
例1:内嵌在其他公式中的函数 //以下函数把上次传入的点和这次传入的点用线连起来 function drawL input: numericSimple var1; variable: numericSimple d0(0),t0(0),v0(0); begin if( d0!=0 and date>2013 )then begin id = tl_new( d0, t0, v0, date, time , var1); end; d0 = date; t0 = time; v0 = var1; end //主程序体 //每隔10根k线,就在收盘价处连一条线 #run_by_bar #MainChart #nodefaultoutput if( barpos mod 10 =0 )then drawL( close );
这样的函数我们称为“局部函数”。
第二种,把函数独立出来,单独成为一个公式
这样的函数,在公式里不需要额外的声明就可以直接使用,跟ma等内置函数一样,我们称为“公共函数”。
适用范围
局部函数和公共函数仅工作于逐根模式下。
函数参数
调用函数时,可以通过参数给函数传入和传出值。 参数类型可以是:
numericSimple 单值 numericSeries 序列 numericRef 引用参数
numericRef类型的参数可以在函数内赋值,并且把值带到主程序中去。
当参数类型是numericRef时,传入参数时必须使用序列型(不可以是numericSimple)。
例如,以下的例子是不正确的 func testFunc input: numericRef n; begin n = 1; end; //主程序 variable: numericSimple x(0); testFunc(x);
函数内部变量
在函数中定义的变量只是在函数体内使用。 但是这些变量的值会一直保存,在下根k线到来时,这些变量依然保持上一根k线结算的结果。
函数返回
函数能够返回值给调用者。 语法是:
return x;
例如:
function func begin return 1; end
直接给函数名赋值也能达到相同的目的
例如:
function func begin func = 1; end
但是return 和 func=1两种写法会有一个隐蔽的区别。
如果是func=1,那么函数自己会把每一根K线执行的结果缓存下来,供以后使用。
例如,可以这样:
function func begin if barpos=1 then func = 1 else func = func[1]+1; end
而,直接return 的话,func[1]是没有值的
公共函数编译
在公共函数被改变后,不但公共函数需要编译,使用了它的公式也需要重新编译。
系统会分析使用这个函数的公式的整个依赖链条。
有依赖关系的公式会自动列出,供您重新编译。