资源描述:
《同花顺自编指标公式说明书》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、系统功能操作附录五公式说明书一、公式编写规则1、语言规范:在自定义公式里面的各种符号(如,“;”)只能用半角不能用全角。关键字ifelsewhilebreakcontinuereturn(无大小写之分)常数浮点数、整数、字符串分隔符“”‘’();{}注释/**/标识符由字母和数字组成,由字母开头,不分大小写*/运算符(优先级+-从高到低排列,==!=><>=<=同级同行)AndOr赋值a=b条件IF(a==b)c=d;语句循环whilea==bc=d;函数调用func(a,b)直接访问数据项的函数例如:OP
2、EN[t]为t周期之前的开盘价,所有行情数据项(CLOSE等)都与此相同。2、标识符:标识符在表达式中只存名称,值保留在符号表。标识符包括函数名、参数名和变量名。函数名用来传递函数返回值;参数名用于函数调用时的参数传递;变量名在计算中存储中间计算结果。3、分隔符:符号含义“”引用字符串‘’引用字符()控制运算的优先级;每行语句的结束标志{}将多个语句组合成一个语句体/**/注释,无任何实际功能4、赋值语句:其一般形式为:a=b;含义为将b的值付给a。几个运算符“=”“:=”“:”“:>”。其含义分别为“赋值
3、”、“赋值”、“赋107系统功能操作值并输出数值或字符串”、“赋值并输出图形”。!注意:“=”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。5、条件语句:其一般形式为:IF(逻辑表达式)语句1;ELSE语句2;上述结构表示:如果逻辑表达式的值为非0(TURE)即真,则执行语句1,执行完语句1从语句2后开始继续向下执行;如果表达式的值为0(FALSE)即假,则跳过语句1而执行语句2。!注意:(1)条件执行语句中”ELSE语句2;”部分是选择项,
4、可以缺省,此时条件语句变成:IF(逻辑表达式)语句1;表示若逻辑表达式的值为非0则执行语句1,否则跳过语句1继续执行。(2)如果语句1或语句2有多于一条语句要执行时,必须使用”{“和”}”把这些语句包括在其中,此时条件语句形式为:IF(逻辑表达式){语句体1;}ELSE{语句体2;}这里语句体指多个语句,每个语句都必须以“;”结尾。(3)条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易出错,其原因主要是不知道哪个IF对应哪个ELSE。例如:IF(x>20ORx<-10)IF(y<=100ANDy>x)
5、A="Good";ELSEB="Bad";对于上述情况,规定:ELSE语句与最近的一个IF语句匹配,上例中的ELSE与IF(y<=100ANDy>x)相匹配。为了使ELSE与IF(x>20ORx<-10)相匹配,必须用花括号。如下所示:IF(x>20ORx<-10){IF(y<=100ANDy>x)108系统功能操作A="Good";}ELSEB="Bad";(4)可用阶梯式IF-ELSE-IF结构。阶梯式结构的一般形式为:IF(逻辑表达式1)语句1;ELSEIF(逻辑表达式2)语句2;ELSEIF(逻辑表
6、达式3)语句3;6、循环语句:while循环的一般形式为:while(条件)语句while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。!注意:1、可以有多层循环嵌套。2、语句可以是语句体,此时必须用”{“和”}”括起来。Break语句break语句通常用在循环语句中。当break语句用while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。!注意:1、break语句对if-else的条件语句
7、不起作用。2、在多层循环中,一个break语句只向外跳一层。continue语句continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在while循环体中,常与if条件语句一起使用,用来加速循环。7、函数调用:调用函数的基本方式为:函数名(参数,参数,…)其返回值为函数里面的return语句规定的返回值。若无return语句,则返回被调用函数里,以函数名命名的变量的值。若无以函数名命名的变量,则返回最后一个输出的值。若无输出的值,则返回最后一个被调用的语句的值。例如
8、:调用KDJ指标。KDJ函数的名称为kdj,其参数和内容如下:109系统功能操作参数名最小值最大值默认值N111009M12403M22403函数内容为: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