3、 分隔符。
双引号(“”) 是用来表示引号里面放的是字符串。
单引号(??) 是表示里面放的是字符,是直接输出所看到的内容。 小括号(()) 是用来控制运算的优先级别的。 中括号([]) 里面放的是数值。 大括号({}) 是语句嵌套专用的。
注 释(/**/) 注释的语句不参与运算,只是为了方便阅读各语句的内容。
4、 标识符。由字母和数字组成。也可以用汉字,字母不分大小写。 5、 运算符。数值运算同四则运算一样,先乘除,后加减。下面是几种逻辑运算符的表示方法。
a==b 为判断a是否等于b,等于的话输出值为1,不等于输出值为0; a!=b 为判断a是否不等于b,不等于的话输出值为1,等于输出值为0;
a>b 为判断A是否大于b,大于的话输出值为1,不大于输出值为0; a
为判断A是否小于b,小于的话输出值为1,大于输出值为0;
a>=b 为判断A是否大于或者等于b,大于或者等于的话输出值为1,否则为0; a<=b 为判断a是否小于或者等于b,小于或者等于的话输出值为1,否则为0; a and b 表示a条件和b条件两者都为真(也就是1),两个条件都符合才行; a or b 表示a条件和b条件只要有一个条件为真就可以了;
上面的这些运算符的顺序注意按照上图从上到下的顺序哦。还有几个特殊的逻辑运算符,一起介绍一下。
isnull(a) 判断是否为空,表示如果a没有数据则返回值1,否则返回0; not(a) 这个简单,表示非a,即a为0时返回1,a为1时返回0。
6、语句。语句是公式编写的骨架。
赋值 a=b 把b的值赋给a
条件 if a==b; then c=d; 表示如果a=b 那么就c=d 循环语句 while a=b c=d;也就是当a=b的时候c=d 函数调用 func(a,b) “func”的意思是函数名
二、赋值语句
其一般形式为:
a=b; 含义为将b的值付给a。 几个运算符的意义 “=” 赋值 “:=”赋值
“:” 赋值并输出数值或字符串 “:>” 赋值并输出图形
注意:“=”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。 三、条件语句
其一般形式为:
IF(逻辑表达式) 语句1;
ELSE 语句2;
上述结构表示: 如果逻辑表达式的值为非0(TURE)即真, 则执行语句1, 执行完语句1从语句2后开始继续向下执行;如果表达式的值为0(FALSE)即假, 则跳过语句1而执行语句2。
注意以下几点:
1、条件执行语句中\语句2;\部分是选择项, 可以缺省, 此时条件语句变成:
IF(逻辑表达式) 语句1;
表示若逻辑表达式的值为非0则执行语句1,否则跳过语句1继续执行。
2、如果语句1或语句2有多于一条语句要执行时, 必须使用\和\把这些语句包括在其中, 此时条件语句形式为:
IF(逻辑表达式) { 语句体1; } ELSE { 语句体2; }
这里语句体指多个语句,每个语句都必须以“;”结尾。
3. 条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个IF对应哪个ELSE。 例如:
IF(x>20 OR x<-10)
IF(y<=100 AND y>x) A=\; ELSE B=\;
对于上述情况, 规定: ELSE语句与最近的一个IF语句匹配, 上例
中的ELSE与IF(y<=100 AND y>x)相匹配。为了使ELSE与IF(x>20 OR x<-10)相匹配, 必须用花括号。如下所示: IF(x>20 OR x<-10) { IF(y<=100 AND y>x)
A=\; } ELSE B=\;
4. 可用阶梯式IF-ELSE-IF结构。 阶梯式结构的一般形式为: IF(逻辑表达式1) 语句1;
ELSE IF(逻辑表达式2) 语句2; ELSE IF(逻辑表达式3) 语句3;
四、循环语句
while循环的一般形式为: while(条件) 语句;
while循环表示当条件为真时, 便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。 注意:
1、可以有多层循环嵌套。
2、语句可以是语句体, 此时必须用\和\括起来。 五、break语句
break语句通常用在循环语句中。当break语句用while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起。即满足条件时便跳出循环。 注意:
1、break语句对if-else的条件语句不起作用。 2、在多层循环中, 一个break语句只向外跳一层。 continue 语句
continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。 continue语句只用在while循环体中, 常与if条件语句一起使用, 用来加速循环。
六、函数调用
调用函数的基本方式为:函数名(参数,参数,…)
其返回值为函数里面的return语句规定的返回值。若无return语句,则返回被调用函数里,以函数名命名的变量的值。若无以函数名命名的变量,则返回最后一个输出的值。若无输出的值,则返回最后一个被调用的语句的值。 例如:调用KDJ指标。KDJ函数的名称为kdj,其参数和内容如下:
函数内容为:
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:SMA(RSV,M1,1); D:SMA(K,M2,1);
J:3*K-2*D
则当您在其它函数里输入a=KDJ(8,6,6)的时候,相当于计算N1=8,M1=6,M2=6时的J值,并把这个值赋给a。
注意:
1、当传递的参数数目不等于被调用函数设置的参数数目时。 a、没有传递参数。则采用原来设置的默认参数计算。
b、传递参数少于被调用函数设置的参数数目。则将参数传过去,依次改变前面同样数目参数的值,后面其它的参数采用原来设置的默认参数计算。
c、传递参数大于被调用函数设置的参数数目。则将参数传过去,依次改变被调用函数的参数值,多余的参数不起作用。
2、函数名称不区分大小写。
3、新建的函数,其函数名可能与其它以存在的函数里面的内部变量重名。这样在调用那个函数时,那个内部变量将变成对这个新建函数的函数调用,从而产生错误。所以,在新建函数起名时要注意。
七、关于“空”的问题
所谓“空”即指没有数据。在某些情况下,一些数据项可能取不到数据,这时返回值为“空”。例如,yearrep(&jlr,4),其含义为取该公司3年前年报的净利润。如果某家公司上市时间较短,而无三年前的年报数据,则其值为“空”。
1、“空”与任何数据作计算时,相应计算被取消。
例如:7×NULL(即“空”)得到的结果为7。 2、“空”与任何数据比较大小时,“空”较小。
例如:-7>NULL(即“空”)得到的结果为1(即条件满足)。
这样的结果可能与我们原来希望得到的数值不符,如果想避免这种情况可以用ISNULL函数来判断某个数据是否为“空”,。