数据类型
从数据性质上看,公式只使用两种类型,一种是数值型,另一种是字符串类型。
数值类型包括整数,浮点数(小数),逻辑真和假;字符串类型使用单引号表示。
从数据组织上看,上述两种类型分别可以是单值,序列,数组或引用。
- 单值
单值是相对序列而言的,如果变量var1是单值,在本K线对var1修改,则前一根K线运算所赋给var1的值将会被覆盖,
若var1是序列,那么,前一根K线运算所赋给var1的值可以通过var1[1]来获得,也可以修改。
- 序列
序列是对应K线图上的K线根数而言的,100根K线时,序列变量var1就有100个值,每个值对应1根K线,
分别是 var1[0], var1[1] ... var1[99]。序列会随着K线的增加而自动增长,开销要比单值大,
所以如果不需要引用非当前根K线的值时,使用单值变量就足够了。
其中[0]代表最近的一根K线。
但要注意一点,在智能策略,Run_By_Bar 并且 Run_Every_Bar模式下,最新的一根K线总是不计算的,每次都计算的是倒数第二根K线,所以,此时 [0]是代表倒数第二根K线而不是最后一根。
- 数组
数组可以看作是固定长度的序列,有固定的大小,由用户在声明时设定。
数组不会随着K线增长而增长,跟K线没有一一对应的关系。下面的例子定义了两个数组
variable: NumericArray aa[100](0), NumericArray bb[20, 20](0);
aa大小为100, bb大小为400。数组的读写使用下标来进行:
一维数组aa的有效下标:aa[1], aa[2], aa[3] .... aa[100]
二维数组bb的有效下标:bb[x,y]; x=1,2...20; y=1,2....20;
- 引用
引用类型使用于函数的参数传递,一般参数传递是数据拷贝的传递。
例如把变量cc传给当函数时,只是传递cc的值,函数内部对它的修改并不会影响cc;
但当函数参数类型是引用时,是把变量cc的地址传递给函数,函数内部对它修改就是对cc的修改
综上所述,数据类型主要有以下8种:
void
单值 | 序列 | 数组 | 引用 | |
---|---|---|---|---|
数值 | NumericSimple | NumericSeries | NumericArray | NumericRef |
字符串 | StringSimple | StringSeries | StringArray | StringRef |
下面是一些特殊的常量值:
- Invalid
数值无效值,所有于它的比较都返回假 Invalid != Invalid 返回真。 指标输出左右两端的Invalid数值都不会输出到图上,直到遇上第一个有效值为止。
- Null
字符串空串
- True
真,值为1
- False
假,值为0
- Default
用于函数调用,若函数的参数设定了默认值,函数调用时填default表示使用函数设定的默认值
公式的数据类型属于弱类型。
字符串转义字符 \, @