大学课件指南针指标设计.docx
- 文档编号:4284261
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:36
- 大小:31.72KB
大学课件指南针指标设计.docx
《大学课件指南针指标设计.docx》由会员分享,可在线阅读,更多相关《大学课件指南针指标设计.docx(36页珍藏版)》请在冰点文库上搜索。
大学课件指南针指标设计
指南针指标设计
(一)
1.指南针自定义指标语法
指南针自定义指标平台以高级程序语言语法为模板,定义了功能强大的自定义指标语法,支持高级语言的所有主要的程序结构——顺序、循环和条件跳转。
指南针自定义指标语法以语句为单位,每个语句都需要以“;”作结尾。
在自定义指标的语法中,有三种语句:
赋值语句、条件跳转语句和循环语句。
1.1.指标文件结构
指南针指标文件(zbt或者zbu)可以直接用文本编辑器打开。
但是不提倡直接在文本编辑器中改写指标文件,因为这样做容易发生语法错误,而且无法使用指标平台编辑环境的提示功能。
指标文件的结构如下(括号中是注释说明):
__ZBT (指南针指标文件起始标志)
_NAME…… (指标文件名称,不能为空)
_COMM…… (指标文件注释,可以为空)
_PAR…… (指标的参数列表,如果有多个参数,用逗号“,”分割)
_VAR…… (指标的局部变量列表,如果有多个,用逗号“,”分割)
_ZB…… (指标的参数指标列表,即需要用到的指标列表)
_RES…… (指标文件的结果指标列表,即本文件能计算的指标列表)
_DEF…… (指标的默认值,如果在计算中发生错误,则指标值填为默认值)
_CODE (指标文件代码段起始标志)
……
…… (代码段)
……
__END (指标文件结束标志)
1.2.运算符
指南针自定义指标中支持以下运算符(按优先级从高到低排列):
l“(”、“)”左右括号
l“*”、“/”乘、除
l“+”、“-”加、减
l“>”、“<”、“>=”、“<=”大于、小于、大于或等于、小于或等于
l“=”、“<>”等于、不等于
l“&”与,逻辑运算符,仅当两
l“|”或
l“=”赋值,注意赋值号和等于号是一样的
为了兼容中文输入的使用习惯,下列运算符“()*/+-=”支持中文全角输入。
1.3.赋值语句
赋值语句的语法非常简单,没有关键字。
赋值语句的型式有:
a=b+c;
a=系统函数();
系统函数();
1.4.条件跳转语句
条件跳转语句有4个关键字:
IF(表示如果)、THEN(表示则)、ELSE(表示否则)、ENDIF
(表示条件语句结束)。
完整的条件跳转语句的形式是:
IF条件
THEN
语句1;
语句2;
……
ELSE
语句1;
语句2;
……
ENDIF;
“条件”的形式是型如“a>b”、“a
b”(注意这里的“=”是相等而不是赋值的意思),也可以用与和或把简单条件串连起来,型如:
“(a>b)&(b>c)”、“(a=b)
|(b “语句1”、“语句2”可以是任何语句,包括赋值、条件跳转或者循环语句。 注意条件跳转语句必须包含“THEN”分支,但是可以没有“ELSE”分支,型如: IF条件 THEN 语句1; 语句2; …… ENDIF; 1.5.循环语句 循环语句有3个关键字: LOOPBEGIN(表示开始循环)、LOOP(表示返回上一个LOOPBEGIN处继续执行)、BREAK (表示结束循环)。 循环语句的一般形式是: LOOPBEGIN 语句1; 语句2; …… LOOP; 循环语句一般是在满足一定条件时退出循环,所以循环语句一般都需要和条件语句组合使用,型如 LOOPBEGIN IF条件 THENBREAK; ENDIF; 语句1; 语句2; …… LOOP; 1.6.指标的引用 自定义指标中需要引用其他指标。 指标的引用分为两类: 引用参数指标和引用结果返回指标。 1.参数指标的引用 引用参数指标时的一般形式是: 指标名称[日期偏移](参数列表)。 日期偏移是指需要引用当前天往前几天的指标数值,如果为0则表示引用当前天的指标数值,1则表示当前天往前1天的指标数值,一次类推……,注意日期偏移为0时可以不写;参数列表标示所引用的指标的参数,如果所引用的指标没有参数则不能写该项,如果指标有多个参数,则中间用逗号(半角)分割。 例如CYF指标需要有一个参数,当引用两天前以22为参数的CYF指标应该表述为: CYF[2](22);收盘价指标没有参数,需要引用当前天的收盘价应该表述为: CLOSE[0]或者CLOSE。 2.结果返回指标的引用 引用结果返回指标分为两种情况,即结果返回指标出现在等号右侧和出现在等号左侧。 结果返回指标出现在等号右侧时,含义是引用结果返回指标的数值,引用的一般形式是: 指标名称[引用日期]注意此时不能有参数列表;结果返回指标出现在等号左侧时,含义是给结果返回指标赋值,引用的一般形式是: 指标名称,注意此时不能有日期偏移和参数列表。 1.7.注释 指南针自定义指标语法中,允许使用注释来标识语句的具体意义。 注释以双斜杠“//”开始到本行的结束。 在指标文本窗口中注释以绿色字体显示。 指南针指标设计 (二) 自定义指标语法范式 指南针指标设计(三) 函数列表 3.1.引用函数 ●BLAST(X,N) 求0~N-1周期中,最近一次条件X成立的周期到当前天的日期偏移。 如果N为0,则一直搜索到第一个有效周期(上市第一天)。 X是条件表达式,例如CLOSE >OPEN、CYF13>CYF34等;N是搜索的范围。 如果当前天即满足条件X,返回0,在搜索范围内条件X没有满足则返回N 举例: BLAST(CYF13>CYF34,10),表示求当前天和过去9天中最近一次CYF13>CYF34的日期偏移。 ●COST(N) 取得成本分布情况。 N是一个表示百分比的表达式,如20、涨跌幅等。 合法的N必须是0~100间的数,如果N小于0,则视为0,如果N大于100,则视为100。 举例: COST(20),表示20%获利盘的价格是多少,即有20%的流通盘成本在该价格以下(获利盘),其余80%的流通盘成本在该价格以上(套牢盘)。 ●COSTD(X,N) 取得价格分布情况。 X是一个表示价格的表达式,如15、CLOSE、HIGH等;N是一个表示百分比的表达式,表示相对价格X的偏移。 合法的N值应该是一个-100到100的数值,如果N<-100,则视为-100,N大于100,则视为100。 举例: COSTD(CLOSE,15),表示求当天收盘价(1+15%) =115%的价格上的获利盘是多少,即有多少流通盘的成本在当天收盘价115%以下。 COSTD(HIGH[1],-10),表示求昨天最高价(1- 10%)=90%的价格上的获利盘是多少。 ●COUNT(X,N) 求0~N-1周期中,条件X成立的周期数。 如果N为0,则从第一个有效周期(上市第一天)开始搜索。 X是条件表达式,例如CLOSE> OPEN、CYF13>CYF34等;N是搜索的范围。 举例: COUNT(CLOSE>OPEN,10),表示10日内K线收阳的天数。 ●DMA(Z,X,A) 求X的以A为平滑因子的指数移动平均。 其中Z是必须是结果返回指标,X是一个不为常数的表达式,A是平滑因子,其合理范围应该在0~1之间,如果A小于0则视为0,大于1则视为1。 DMA的具体算法: Z=(1-A)×Z[1]+X×A。 Z[1]表示前一天指标Z的数值。 举例: DMA(Z,CLOSE+OPEN,0.2),表示求以0.2为平滑因子的开盘价与收盘价之和的指数移动平均值,结果存放在指标Z中。 ●EMA(Z,X,N) 求X的N日指数平滑移动平均。 N是一个非负整数,如果N小于0,则视为0。 EMA的具体算法: Z=[(N-1)×Z[1]+2×X]/(N+2) 举例: EMA(Z,CYF13[1],10),表示对当前天的前一天的CYF13指标作10日指数平滑移动平均,结果存放在指标Z中。 ●HHV(X,N) 求N周期内X的最大值。 X应该是一个不为常数的表达式,N是一个非负表达式,表示周期范围,如果N为0表示从第一个有效周期(上市第一天)开始计算。 举例: HHV((OPEN+HIGHT+LOW+CLOSE)/4,10),表示求10天内的最高均价。 ●HHVB(X,N) 求N周期内X值最大的周期到当前周期的日期偏移。 X和N的含义同HHV(X,N)。 如果X的最大值出现在当前周期,函数返回0。 举例: HHVB((OPEN+HIGHT+LOW+CLOSE)/4,10),表示求10天内的最高均价出现日期到当前天的偏移值。 ●KLINEINDEX 求当前周期是K线链上的第一个节点。 如果当前是上市第一个周期,函数返回0;第二个周期,函数返回1;…… ●LFCAST(X,N) 求X的N周期线形回归值。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作线性拟合,如果N为0表示从第一个有效周期(上市第一天)开始拟合。 举例: LFCAST(CYF34,0),表示对股票上市以来指标CYF34的线性拟合值。 ●LLV(X,N) 求N周期内X的最小值。 X应该是一个不为常数的表达式,N是一个非负表达式,表示周期范围,如果N为0表示从第一个有效周期(上市第一天)开始计算。 举例: LLV((OPEN+HIGHT+LOW+CLOSE)/4,20),表示求20天内的最低均价。 ●LLVB(X,N) 求N周期内X值最小的周期到当前周期的日期偏移。 X和N的含义同LLV(X,N)。 如果X的最小值出现在当前周期,函数返回0。 举例: LLVB((OPEN+HIGHT+LOW+CLOSE)/4,20),表示求20天内的最低均价出现日期到当前天的偏移值 ●LSLOPE(X,N) 求X的N周期线形回归线的斜率。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作线性拟合,如果N为0表示从第一个有效周期(上市第一天)开始拟合。 举例: LSLOPE(CYF13,0),表示对股票上市以来指标CYF13的数值作线性拟合后的直线斜率。 ●MA(X,N) 求X的N周期简单平均值。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作平均,如果N为0表示从第一个有效周期(上市第一天)开始计算。 MA的具体算法是: 举例: MA(CLOSE[1]+OPEN,20),表示20个周期内,每日的前收加上今开的平均值。 ●SMA(Z,X,N,M) 求X的N日指数移动平均,平滑因子a=M/ N。 其中Z是必须是结果返回指标,X是一个不为常数的表达式,M的数值应该小于N的数值。 SMA的具体算法是: 举例: SMA(Z,CYF13,10,5),表示对CYF13作平滑因子为5/10=0.5的指数移动平均。 ●SUM(X,N) 求X的N周期简单累加值。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作简单累加,如果N为0表示从第一个有效周期(上市第一天)开始计算。 举例: SUM(CLOSE[1]+OPEN,20),表示20个周期内,每日的前收加上今开的简单累加值。 ●SUMD(X,N,D) 求X的N周期衰减累加值。 X应该是一个不为常数的表达式;N是一个非负表达式,表示在多少周期内作简单累加,如果N为0表示从第一个有效周期(上市第一天)开始计算;D是相对日期偏移的衰减系数,D应该小于N。 举例: SUMD(CLOSE-OPEN,5,1),表示5个周期内的当日涨的衰减累加,即(CLOSE-OPEN)+ (CLOSE[1]-OPEN[1])*4/5+(CLOSE[2]-OPEN[2])*3/5+(CLOSE[3]- OPEN[3])*2/5+(CLOSE[4]-OPEN[4])/5 3.2.大盘函数 ●S0(X) 引用指南针0号指数的数值,X是一个不为常数的表达式。 举例: S0(CLOSE[1]+OPEN),表示求0号指数当前周期的前收加今开的数值。 ●S0A01(X) 引用指南针0A01指数的数值,X是一个不为常数的表达式。 举例: S0A01(成交量),表示求0A01指数当前周期的成交量的数值。 ●S0AMV(X) 引用指南针0AMV指数的数值,X是一个不为常数的表达式。 ●S0DMV(X) 引用指南针0DMV指数的数值,X是一个不为常数的表达式 3.3.数学函数 ●ABS(X) 取绝对值,ABS(X)=|X|。 ●DERIV(Z,X) 求X的导数,结果存放在Z中。 Z应该是结果返回指标,X是一个不为常数的表达式。 举例: DERIV(Z,CLOSE[1]),表示求前收的导数。 ●EXP(X) 求e的X次方,EXP(X)=ex。 ●INTEGER(X) X向下取整,。 ●LN(X) 求X的自然对数。 ●LOG(X) 求X的以10为底的对数。 ●MAX(A,B) 求A、B中的较大值。 ●MIN(A,B) 求A、B中的较小值。 ●MOD(X,N) 求X模N的值, ●POW(X,N) 求X的N次方, ●SGN(X) 取X的符号,如果X是正数,返回1;如果X是负数返回-1;如果X是0,返回0。 ●SQRT(X) 取X的平方根 3.4.统计函数 ●AVEDEV(X,N) 求X的N日平均绝对差。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例AVEDEV(CLOSE–OPEN,10),表示统计10日内的当日涨跌的平均绝对差。 ●DEVSQ(X,N) 求X的N日偏差均方和。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例DEVSQ(CLOSE–OPEN,10),表示统计10日内的当日涨跌的偏差均方和。 ●STD(X,N) 求X的N日估算标准差。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例STD(CLOSE–OPEN,10),表示统计10日内的当日涨跌的估算标准差。 ●STDP(X,N) 求X的N日总体标准差。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例STDP(CLOSE–OPEN,10),表示统计10日内的当日涨跌的估算标准差。 ●VAR(X,N) 求X的N日估算样本方差。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例VAR(CLOSE–OPEN,10),表示统计10日内的当日涨跌的估算样本方差。 ●VARP(X,N) 求X的N日总体样本方差。 X应该是一个不为常数的表达式,N是一个非负表达式,表示在多少周期内作统计。 举例VARP(CLOSE–OPEN,10),表示统计10日内的当日涨跌的总体样本方差。 3.5.三角函数 ●ACOS(X) 求X的反余弦值。 X取值应该在0~1范围内,如果X小于0,则视为0;如果X大于1,则视为1。 返回值在0~之间。 ●ASIN(X) 求X的反正弦值。 X取值应该在0~1范围内,如果X小于0,则视为0;如果X大于1,则视为1。 返回值在~之间。 ●ATAN(X) 求X的反正切值。 返回值在0~之间。 ●COS(X) 求X的余弦值,X的单位是弧度,返回值在-1~1之间。 ●SIN(X) 求X的正弦值,X的单位是弧度,返回值在-1~1之间。 ●TAN(X) 求X的正切值,X的单位是弧度。 指南针指标设计(四) 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) THENBREAK; ENDIF; T1=T1+HIGH[I]-OPEN[I]; T2=T2+OPEN[I]-LOW[I]; IF(HIGH[I]>CLOSE[I+1]) THENT3=T3+HIGH[I]-CLOSE[I+1]; ENDIF; IF(OPEN[I]>CLOSE[I+1]) THENT4=T4+OPEN[I]-CLOSE[I+1]; ENDIF; AV=(HIGH[I+1]+LOW[I+1])/2; IF(HIGH[I]>AV) THENT5=T5+HIGH[I]-AV; ENDIF; IF(AV>LOW[I]) THENT6=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)//条件跳转语句,控制循环结束 THENBREAK;//结束循环的分支 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]) THENT3=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])) THENSRDM_DMZ=0; ELSESRDM_DMZ=MAX(ABS(最高价-最高价[1]),ABS(最低价-最低价[1])); ENDIF; IF((最高价+最低价)>=(最高价[1]+最低价[1])) THENSRDM_DMF=0; ELSESRDM_DMF=MAX(ABS(最高价-最高价[1]),ABS(最低价-最低价[1])); ENDIF; SRDM_ADMZ=MA(SRDM_DMZ,10); SRDM_ADMF=MA(SRDM_DMF,10); IF(SRDM_ADMZ>SRDM_ADMF) THENSRDM_SRDM=(SRDM_ADMZ-SRDM_ADMF)/SRDM_ADMZ; ELSE IF(SRDM_ADMZ=SRDM_ADMF) THENSRDM_SRDM=0; ELSESRDM_SRDM=(SRDM_ADMZ-SRDM_ADMF)/SRD
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 课件 指南针 指标 设计