指南针自定义指标语法知识(1)

编写自定义指标的过程,实际上就是编写了一段让软件识别的计算机程序,因此了解一些在指标编写中所使用的计算机编程语法知识很有必要。

1、常量和变量

顾名思义,常量就是固定不变的数值,如1、3.14、20,100等。在指标编写中,常量会被用到,如把某个变量放大或者缩小的倍数等。

变量,就是数值不固定的量,如某指标在一天中的变化,每天的收盘价等。在指标编写中,大量使用了变量,如输入参数、局部变量、参数指标、临时指标及结果指标。在指南针软件中,所使用的变量都必须要预先指定变量名,变量名可以是字母(如A,B),也可以是汉字(如金叉、死叉),如果没有事先指定在“预编译”时会出现语法错误。变量又分为局部变量和全局变量,局部变量是过程变量,只在本指标计算过程中使用,本指标计算完成后,这些变量就完成任务,释放其占用的空间,也就是说,不同的指标可以使用相同命名的局部变量。在指标平台中,输入参数、临时指标都是局部变量,其中输入参数是人机对话变量,指标编译完成后当使用这个指标时需要预先指定数值;临时指标是一种特殊的局部变量。全局变量是在软件启动后固定占用的系统资源,被唯一命名的变量,不允许重名。参数指标和结果指标都是全局变量。

自定指标的变量名不能使用系统的保留字(如IF、LOOP等)、已经定义的指标名(如CYS、CYR等)和函数。

2、运算符

指南针自定义指标支持以下数学运算符号(按运算优先级从高到低排列):

括号:“(”、“)”。左右括号必须配对,否则会出现语法错误。

乘除运算符:“*”、“/”

加减运算符:“+”、“—”

比较运算符:“>”(大于)、“=”(大于等于)、“”(不等于)

逻辑运算符:“&”(与)

逻辑运算符:“|”(或)

赋值运算符“=”

为了兼容中文输入的使用习惯,下列运算符“()*/+-=”支持中文全角输入。

3、函数

函数是一种标准计算过程,由软件提供给我们编指标者使用的。函数把一些复杂的数学计算过程,如统计计算、求值计算等按照标准格式事先做成,当需要这样的计算时直接调用并输入相应的计算参数,不必为这些计算另外编写计算语句,极大地方便了指标编写。

如这样一个计算过程:计算最近5天的收盘价之和以及平均值。

用语句编写:5天收盘价和=收盘价[4]+收盘价[3]+收盘价[2]+收盘价[1]+收盘价

5天平均值=5天收盘价和/5

调用函数:5天收盘价和=SUM(收盘价,5)

5天平均值=MA(收盘价,5)

大家比较一下,显然调用函数使语句简单明了的多。

指南针软件的函数非常丰富,除了数学函数之外,还有时间函数、大盘函数、财务函数、线性函数和画图函数。了解和熟练运用函数是指标编写的基石,一些实战中的成功经验要转换成一个优秀的指标,巧妙的应用函数能起到事半功倍的作用。指南针指标平台对函数的调用格式有详尽的帮助文档,大家可以认真领会。我们会对一些常用的函数写一些应用文章放到“指南针技术”栏目中,希望能对大家有所帮助。

4、语句

语句是指标的基本结构,根据结果指标计算过程的难易程度,简单的指标可能只有一行语句或数行语句,而复杂的指标可能就需要几十行的语句。

自定义指标以语句为单位,每个语句都需要以“;”(半角)结束。在自定义指标文本中,可以使用注释来标识某些语句的具体意义。注释以“//”开始到本行的结束。在指标文本窗口中注释以绿色字体显示。

指标语句中,还经常需要引用其他指标。指标的引用分为两类:

⑴作为参数的指标引用(出现在等号右边的指标)

这类引用包括引用参数指标和结果返回指标。

引用参数指标时的一般形式是:指标名称[引用日期](参数列表)。引用日期是指需要引用当前天往前几天的指标数值,如果为0则表示引用当前天的指标数值,1则表示当前天往前1天的指标数值,依次类推;参数列表则标示所引用的指标的参数,如果所引用的指标没有参数则不能写该项,如果指标有多个参数,则中间用逗号(半角)分割。例如需要引用前两天的CYF22的值应该表述为:CYF[2](22);需要引用当天的收盘价则是:CLOSE[0]或者CLOSE。

引用结果返回指标的一般形式是:指标名称[引用日期]。注意此时不能有参数列表,因为指南针自定义指标的语法中默认引用结果返回指标时的参数列表就是“输入参数”栏中标识的参数列表。

⑵保存结果的指标引用(出现在等号左边的指标)

这类引用只能是引用结果返回指标。而且引用时只能出现结果返回指标的名称,不能出现引用日期和参数列表,一般形式是:指标名称。

在自定义指标的语法中,有三种语句:赋值语句、条件跳转语句和循环语句。

赋值语句

赋值语句的语法非常简单,没有关键字。型如“a = b + c”的语句都是赋值语句,赋值语句中的“加、减、乘、除”分别用“+、—、*、/”表示 (注意都是半角的)。

条件跳转语句

条件跳转语句有4个关键字:IF (如果)、THEN (则)、ELSE (否则)、ENDIF (条件语句结束)。条件跳转语句的形式是:

IF    THEN ; ; ……

ELSE ; ; ……

ENDIF

“条件1”的形式是形如 “a > b”、“a b) & ( b > c)”、“(a = b) | (b

“语句1”、“语句2”可以是任何语句,包括赋值、条件跳转或者循环语句。

注意条件跳转语句必须包含“THEN”分支,但是可以没有“ELSE”分支,如:

IF   THEN ; ; ……

ENDIF;

条件语句可以多层嵌套,即主条件语句中含有次级条件语句,结构形式为:

IF    THEN ; ; ……

ELSE IF THEN ; ; ……

ELSE ; ; …… ; ; ……

ENDIF;

ENDIF;

(待续)

指南针自定义指标语法知识(2)

2009-6-18 吕玉兴

循环语句

循环语句有3个关键字:LOOPBEGIN (表示开始循环)、LOOP (表示返回上一个LOOPBEGIN处继续执行)、BREAK (表示结束循环)。循环语句的一般形式是:

LOOPBEGIN

语句1; 语句2; ……

LOOP;

循环语句一般是在满足一定条件时退出循环,所以循环语句一般都需要和条件语句组合使用,如

LOOPBEGIN

IF   条件 THEN   BREAK; ENDIF;

语句1; 语句2; ……

LOOP;

需要特别注意的是,在运用循环语句时,一定要把中断循环的条件设置搞准确,否则会造成死循环,形成类似死机的状态。为了避免这种情况发生,在编完指标后,最好使用指标平台的“速度测试”功能对其进行测试。

下面结合一个钱龙指标ABCR(人气和买卖意愿指标)的文本来说明指南针自定义指标的语法。

指标名称:ABCR

指标注释:(空)

默认值:0

输入参数:M

局部变量:V1, V2, V3, V4, V5, V6, AV, I

参数指标:开盘价, 最高价, 最低价, 收盘价

结果指标:AR, BR, CR

下面是指标文本:

V1 = 0; V2 = 0; V3 = 0; V4 = 0; V5 = 0; V6 = 0; I = 0; //初始变量清零

———————————————————(文本的开始是7条赋值语句,分别把7个局部变量初始化为0;)

———————————————————

开始循环;

如果     I = M

则 结束循环;

结束如果;   //设置中断条件

———————————————————

上面是一个循环体中断条件,这个循环体一直到I等于参数

———————————————————

V1 = V1 + 最高价[I] — 开盘价[I]; //把当前天往前第I天的最高价和开盘价的差值加到局部变量V1中

V2 = V2 + 开盘价[I] — 最低价[I]; //把当前天往前第I天的开盘价和最低价的差值加到局部变量V2中

如果      最高价[I] > 收盘价[I+1]

则   V3 = V3 + 最高价[I] — 收盘价[I+1];

结束如果; //判断如果当前天往前第I天的最高价大于第I+1天的收盘价,则把当前天往前第I                天的最高价和第I+1天的收盘价的差值加到局部变量V3中。

如果      开盘价[I] > 收盘价[I+1]

则   V4 = V4 + 开盘价[I] — 收盘价[I+1];

结束如果; //判断如果当前天往前第I天的开盘价大于第I+1天的收盘价,则把当前天往前第I           天的开盘价和第I+1天的收盘价的差值加到局部变量V4中

AV = (最高价[I+1] + 最低价[I+1]) / 2; //把当前天往前第I+1天的最高价和最低价的平均值赋                       给局部变量AV

如果      最高价[I] > AV 则

V5 = V5 + 最高价[I] — AV; //对V5赋值(多方力量之和)

结束如果;

如果      AV > 最低价[I] 则

V6 = V6 + AV — 最低价[I]; //对V6赋值(空方力量之和)

结束如果;

I = I + 1; //注意,这句话是让局部变量I加1,这句话是控制循环的次数用的,如果没有这句            话,指标将会变成死循环,无法退出。

循环;

AR = V1 / V2;

BR = V3 / V4;

CR = V5 / V6;

———————————————————

以上是结果变量赋值,形成最终的技术指标AR、BR、CR

通过上面文本的演示,大家应该对编写指标以及语法有了一个初步了解。上面的文本关键字采用了中文,其实在编写指标时,我们还是习惯用英文。下面是中英文关键字对照:

IF(如果)、THEN(则)、ELSE(否则)、ENDIF(结束如果)

LOOPBEGIN(开始循环)、BREAK(结束循环)、LOOP(循环)

其实我们通常编写的指标很多并不复杂,而且循环语句也用的很少,大量的是赋值语句和条件语句,而上面的ABCR指标又是软件已经配备的指标,大家认真读一下文本,来加强对指标平台的认识就可以了。学习编写指标,更多的是要多体验,把自己在股市的经验通过指标来体现出来。


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn