奥迪A8 2007-10-9 15:13
同 花 顺 公式编写规则连载中,,,
[table=98%][tr][td]公式编写规则[/td][/tr][tr][td][b]语言规范: [/b]在自定义公式里面的各种符号(如,“;” )只能用半角不能用全角。
[table=98%,#efefef][tr=#ffffff][td=1,1,96]关键字
[/td][td=1,1,444]if else while break continue return (无大小写之分)
[/td][/tr][tr=#ffffff][td=1,1,96]常数
[/td][td=1,1,444]浮点数、整数、字符串
[/td][/tr][tr=#ffffff][td=1,1,96]分隔符
[/td][td=1,1,444]“ ” ‘ ' ( ) ; { } 注释/* */
[/td][/tr][tr=#ffffff][td=1,1,96]标识符
[/td][td=1,1,444]由字母和数字组成,由字母开头,不分大小写
[/td][/tr][tr=#ffffff][td=1,5,96]运算符(优先级从高到低排列,同级同行)
[/td][td=1,1,444]* /
[/td][/tr][tr][td=1,1,444]+ -
[/td][/tr][tr][td=1,1,444]== != > < >= <=
[/td][/tr][tr][td=1,1,444]And
[/td][/tr][tr][td=1,1,444]Or
[/td][/tr][tr=#ffffff][td=1,4,96]语句
[/td][td=1,1,444]赋值 a = b
[/td][/tr][tr][td=1,1,444]条件 IF (a==b) c=d;
[/td][/tr][tr][td=1,1,444]循环 while a==b c=d;
[/td][/tr][tr][td=1,1,444]函数调用 func(a,b)
[/td][/tr][/table]直接访问数据项的函数
例如:OPEN[t] 为t周期之前的开盘价
所有行情数据项(CLOSE等)都与此相同。
[b]标识符:[/b]
标识符在表达式中只存名称,值保留在符号表。标识符包括函数名、参数名和变量名。函数名用来传递函数返回值;参数名用于函数调用时的参数传递;变量名在计算中存储中间计算结果。
[b]分隔符:[/b]
[table=98%,#e4e4e4][tr=#ffffff][td=1,1,253]符号
[/td][td=1,1,275]含义
[/td][/tr][tr=#ffffff][td=1,1,253]“ ”
[/td][td=1,1,275]引用字符串
[/td][/tr][tr=#ffffff][td=1,1,253]‘ '
[/td][td=1,1,275]引用字符
[/td][/tr][tr=#ffffff][td=1,1,253]( )
[/td][td=1,1,275]控制运算的优先级
[/td][/tr][tr=#ffffff][td=1,1,253];
[/td][td=1,1,275]每行语句的结束标志
[/td][/tr][tr=#ffffff][td=1,1,253]{ }
[/td][td=1,1,275]将多个语句组合成一个语句体
[/td][/tr][tr=#ffffff][td=1,1,253]/* */
[/td][td=1,1,275]注释,无任何实际功能
[/td][/tr][/table][b]赋值语句:
[/b]其一般形式为:
a=b; 含义为将b的值付给a。
几个运算符“=”“:=”“:”“:>”。其含义分别为“赋值”、 “赋值”、“赋值并输出数值或字符串”、“赋值并输出图形”。
注意:“=”和“:=”两个运算符的意义、用法完全相同。这样做主要是为了更好地兼容市场上目前的各种带有公式编辑功能的分析软件。
[b]条件语句:
[/b]其一般形式为:
IF(逻辑表达式) 语句1;
ELSE 语句2;
上述结构表示: 如果逻辑表达式的值为非0(TURE)即真, 则执行语句1, 执行完语句1从语句2后开始继续向下执行; 如果表达式的值为0(FALSE)即假, 则跳过语句1而执行语句2。
注意:
1、条件执行语句中"ELSE 语句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="Good";
ELSE
B="Bad";
对于上述情况, 规定: 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="Good"; }
ELSE B="Bad";
4. 可用阶梯式IF-ELSE-IF结构。
阶梯式结构的一般形式为:
IF(逻辑表达式1) 语句1;
ELSE IF(逻辑表达式2) 语句2;
ELSE IF(逻辑表达式3) 语句3;
[/td][/tr][/table]
wwxiaoshou 2008-1-11 00:12
:loveliness: :)