打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
指南针指标编写设计(四)
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;
LOOPBEGIN
IF( I = M )
THEN BREAK;
ENDIF;
T1 = T1 + HIGH[I] - OPEN[I];
T2 = T2 + OPEN[I] - LOW[I];
IF( HIGH[I] > CLOSE[I+1] )
THEN T3 = T3 + HIGH[I] - CLOSE[I+1];
ENDIF;
IF( OPEN[I] > CLOSE[I+1] )
THEN T4 = T4 + OPEN[I] - CLOSE[I+1];
ENDIF;
AV = (HIGH[I+1] + LOW[I+1]) / 2;
IF( HIGH[I] > AV )
THEN T5 = T5 + HIGH[I] - AV;
ENDIF;
IF( AV > LOW[I] )
THEN T6 = T6 + AV - LOW[I];
ENDIF;
I = I + 1;
LOOP;
AR = T1 / T2;
BR = T3 / 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为10时,这个循环需要执行10次。
  在循环体中有4条赋值语句和5条条件判断语句我们举例说明,
  T1 = T1 + HIGH[I] - OPEN[I];
  意思是把当前天的前面第I天的最高价和开盘价的差值加到局部变量T1中;
  T2 = T2 + OPEN[I] - LOW[I];
  是说把当前天往前第I天的开盘价和最低价的差值加到局部变量T2中;
  IF( HIGH[I] > CLOSE[I+1] )
  THEN T3 = T3 + HIGH[I] - CLOSE[I+1];
  ENDIF;
  如果当前天前面第I天的最高价大于第I+1天的收盘价,则把当前天往前第I天的最高价和第I+1天的收盘价的差值加到局部变量T3中;
  AV = (HIGH[I+1] + LOW[I+1]) / 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
指标文本:
  —————————————————————————————————
IF( (最高价 + 最低价) <= (最高价[1] + 最低价[1]) )
THEN SRDM_DMZ = 0;
ELSE SRDM_DMZ = MAX( ABS(最高价 - 最高价[1]), ABS(最低价 - 最低价[1]) );
ENDIF;
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;
ELSE
IF( SRDM_ADMZ = SRDM_ADMF )
THEN SRDM_SRDM = 0;
ELSE SRDM_SRDM = (SRDM_ADMZ - SRDM_ADMF) / SRDM_ADMF;
ENDIF;
ENDIF;
SMA( SRDM_ASRDM, SRDM_SRDM, N, 1 );
—————————————————————————————————
  这里着重分析指标代码中的函数调用。在第一个条件跳转语句IF……ENDIF的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 );
实际上这两种写法是完全等价的。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SRDM动向速度比率
指南针指标设计(一)
指南针自定义指标语法知识(1)
动向速度比率指标用法及源代码(SRDM)
通达信5天内最高价和最低价向右划线的指标公式
大智慧公式教程2
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服