《指南针指标编写设计(四)》由会员分享,可在线阅读,更多相关《指南针指标编写设计(四)(12页珍藏版)》请在金锄头文库上搜索。
1、指南针指标编写设计(四) 4. 指标点评4.1. AR、BR、CR指标我们通过介绍AR、BR、CR指标的实现代码,进一步说明赋值、条件跳转和循环三种基本语句的应用。指标的代码如下:指标名称:ABCR 指标注释:(空) 默认值:0输入参数:M 局部变量:V1, V2, V3, V4, V5, V6, AV, I参数指标:开盘价, 最高价, 最低价, 收盘价 结果指标:AR, BR, CR指标文本:T1 = 0;T2 = 0;T3 = 0;T4 = 0;T5 = 0;T6 = 0;I = 0;LOOPBEGINIF( I = M )THEN BREAK;ENDIF;T1 = T1 + HIGHI
2、- OPENI;T2 = T2 + OPENI - LOWI;IF( HIGHI CLOSEI+1 )THEN T3 = T3 + HIGHI - CLOSEI+1;ENDIF;IF( OPENI CLOSEI+1 )THEN T4 = T4 + OPENI - CLOSEI+1;ENDIF;AV = (HIGHI+1 + LOWI+1) / 2;IF( HIGHI AV )THEN T5 = T5 + HIGHI - AV;ENDIF;IF( AV LOWI )THEN T6 = T6 + AV - LOWI;ENDIF;I = I + 1;LOOP;AR = T1 / T2;BR = T3
3、 / T4;CR = T5 / T6;下面详细分析指标的代码段,文本的一开始是7条赋值语句,分别把7个局部初始化为0;T1 = 0; /赋值语句T2 = 0;T3 = 0;T4 = 0;T5 = 0;T6 = 0;I = 0;接下来是一个循环体:LOOPBEGIN /循环开始,I是循环控制变量IF( I = M ) /条件跳转语句,控制循环结束THEN BREAK; /结束循环的分支ENDIF;I = I + 1; /赋值语句,循环控制变量赋值LOOP; /循环结束联系前面的赋值语句I=0、循环中的赋值语句I=I+1以及控制循环的条件跳转语句可以发现,这是一个参数M次的循环,例如如果参数M为1
4、0时,这个循环需要执行10次。在循环体中有4条赋值语句和5条条件判断语句我们举例说明,T1 = T1 + HIGHI - OPENI;意思是把当前天的前面第I天的最高价和开盘价的差值加到局部变量T1中;T2 = T2 + OPENI - LOWI;是说把当前天往前第I天的开盘价和最低价的差值加到局部变量T2中;IF( HIGHI CLOSEI+1 )THEN T3 = T3 + HIGHI - CLOSEI+1;ENDIF;如果当前天前面第I天的最高价大于第I+1天的收盘价,则把当前天往前第I天的最高价和第I+1天的收盘价的差值加到局部变量T3中;AV = (HIGHI+1 + LOWI+1)
5、 / 2;是说把前天往前第I+1天的最高价和最低价的平均值赋给局部变量AV;最后是三句赋值语句,分别给三个结果返回指标赋值。AR = T1 / T2;BR = T3 / T4;CR = T5 / T6;4.2. SRDM(动向速比率)指标SRDM(动向速比率)指标是一个经典指标,我们通过这个指标的实现代码,进一步说明指南针指标平台中函数的应用。指标名称:SRDM 指标注释:动向速比率 默认值:1.000输入参数:N 局部变量:参数指标:最高价, 最低价 结果指标:SRDM_DMZ, SRDM_DMF, SRDM_SRDM, SRDM_ASRDM,SRDM_ADMZ, SRDM_ADMF指标文本
6、:IF( (最高价 + 最低价) = (最高价1+最低价1) )THEN SRDM_DMF = 0;ELSE SRDM_DMF = MAX( ABS(最高价 - 最高价1), ABS(最低价 - 最低价1) );ENDIF;SRDM_ADMZ = MA( SRDM_DMZ, 10 );SRDM_ADMF = MA( SRDM_DMF, 10 );IF( SRDM_ADMZ SRDM_ADMF )THEN SRDM_SRDM = (SRDM_ADMZ - SRDM_ADMF) / SRDM_ADMZ;ELSEIF( SRDM_ADMZ = SRDM_ADMF )THEN SRDM_SRDM =
7、0;ELSE SRDM_SRDM = (SRDM_ADMZ - SRDM_ADMF) / SRDM_ADMF;ENDIF;ENDIF;SMA( SRDM_ASRDM, SRDM_SRDM, N, 1 );这里着重分析指标代码中的函数调用。在第一个条件跳转语句IFENDIF的ELSE分支是一个赋值语句:SRDM_DMZ = MAX( ABS(最高价 - 最高价1), ABS(最低价 - 最低价1) );语句的含义是取相邻两天最高价差值的绝对值与最低价差值绝对值中较大的数值,赋给指标SRDM_DMZ。从这里可以发现,指标平台支持多重函数调用,即函数中再套函数,这种调用的套用次数没有限制。代码的的最后是一个调用SMA函数的赋值语句:SMA( SRDM_ASRDM, SRDM_SRDM, N, 1 );这个语句的含义是对指标SRDM_SRDM作N日指数移动平均,平滑系数是1/N。注意,DMA、EMA、SMA这一类函数的第一个参数必须是结果返回指标,函数计算是会把结果直接赋给第一个参数,所以可以不写赋值部分,这条语句也可以这样写:SRDM_ASRDM = SMA( SRDM_ASRDM, SRDM_SRDM, N, 1 );实际上这两种写法是完全等价的。