【通达信股票软件系统公式编程教材】
(第四部分)
指标数据引用:
经常地编制公式的过程当中,需要使用另外一个指标的值,如果按照通常的做法,重新编写过这个指标显得麻烦,因此有必要学习使用如何调用别的指标公式。
基本的格式为:“指标.指标线”(参数)
a) 指标和指标线之间用逗号分开,一个指标不—定只有一条指标线,所以有必要在指标后标注指标线的名称,但是如果缺失则表示引用最后一条指标线。
b) 参数在表达式的末尾,必须用括号括起来,参数之间用逗号分开,通过参数设置可以选择设定该指标的参数,如果参数缺失则表示使用该指标的默认参数设置。
c) 整个表达式用引号引在其中,除参数以外。例如:“MACD.DEA”(26,12,9)表示计算MACD指标的DEA指标线。计算参数为26、11、9,“MACD”(26,12,9)表示该指标的最后一条指标线,计算参数是26、12、9,“MACD”表示该指标的最后—条指标线并且使用公式的默认参数。
B 跨周期引用指标数据:
a) 引用大盘数据:引用大盘数据时使用下列函数: INDEXC/NDEXV,等等!
b) 引用个股数据:引用个数据时使用下列格式:“股票代码$数据”.在以上格式当中调用CLOSE,VOL,AMOUNT等等!例如“000002$VOL'表000002该股本周期的成交量。“999998$CLOSE"同样也可以表示为A股指数本周期的收盘价,此时的A股指数被视为一只个股。
C 其它股票数据引用:
使用以下的格式可以在当前的分析界面下引用大盘的数据或者其它个股的数据实现横向上的对比。
a) 引用大盘数据:引用大盘数据时使用下列函数: INDEXC/NDEXV,等等!
b) 引用个股数据:引用个数据时使用下列格式:“股票代码$数据”.在以上格式当中调用CLOSE,VOL,AMOUNT等等!例如“000002$VOL'表000002该股本周期的成交量。“999998$CLOSE”同样也可以表示为A股指数本周期的收盘价,此时的A股指数被视为一只个股。
A公式语句
所有的公式体由若干语句按照一定的格式组成,每个语句表示一个计算结果,根据各个语句的功能分为两大类语句,一类是赋值语句,一类是中间表达式。
B赋值语句:
在技术指标“B:AZ”和“c:B*0.618”就是分别两条指标线,语句间用分号隔开。该语句被称为赋值语句,在技术指标当中,赋值语句的计算结果将会被计算机执行并形成相应的图形。每个语句可以有一个名称,该名称写在语句的最前面,并用一个冒号将它与语句分隔开。例如:ST:MA(CLOSE,5);表示该语句求收盘价的五日均线,语句的名称为ST。在该语句后的语句中可以直接用ST来替代MA(CLOSE,5),例如:MA(ST,5)表示对收盘价的五日均线再求五日平均。
C中间语句;
一个语句如果不需要显示,可以将它定义为中间语句,例如在上例当中的第一句“A:=X+Y;”,这样该语句就不会披系统辨认为是指标线————了。中间语句用“:=”替代冒号,其它与一般语句完全一样。使用中间语句可以有效降低公式的书写难度,还可以将需要重复使用的语句定义成中间语句以减少计算量。每个公式最多可以分6个语句,中间公式数量没有限制,所有语句之间需要使用分号隔开。
D公式计算符
公式计算符将函数连接成为公式。计算分为算术计算符和逻辑计算符。
a)算术计算符
包括十、一、*、/,它们分别对计算符两边的数据进行加减乘除计算,这同一般意义上的算术计算没有差异。
b)逻辑计算符
包括>、<、<>、>=、<=、=、AND、OR八种,分别表示大于、小于、不等于、大于等于、小于等于、等于、逻辑与、逻辑或运算,如果条件成立计算结果就等于1,否则等于0。例如:3+4等于7,4>3就等于1。“逻辑与”表示两个条件都成立时结果才成立:“逻辑或”表示两个条件中只要有一个成立结果成立。
E 线形描述符
对于技术指标公式可以在语句加上线形描述符.用来表示如何画该语句描述的指标线。线形描述符包括以下7种。描述符写在语句后分号前,用逗号将它与语句分隔开,例如在上例当中加入一句线形描述符,c:B*0.618,COLORSTICK;该语句在被执行时,会在图中添加彩色柱线,该功能在编制MACD等指标的时候会显出它的用处。
a) COLORRED等三个线形描述符还可以自定义颜色,格式为COLOR+“BBGGRR”:BB、GG、RR表示蓝色、绿色和红色的分量,每种颜色的取值范围是00-FF,采用了16进制。例如:MA5:MA(CLOSE,5),COLOR00FFFF表示纯红色与纯绿色的混合色:COLOR808000表示淡蓝色和淡绿色的混合色。
b) LINETHlCK可以允许对线型的粗细进行白定义的描述,格式LINETHICK+(1-9)”;参数的取值范围在1—9之间,“LINETHICK1”表示最细的线,而“LINETHICK9”表示最粗的线;
2.4 关于无效数的问题
所谓无效数即指没有数据。在某些情况下,一些数据项可能取不到数据,这时返回值为无效数。例如,MA(CLOSE,500),其含义是该股票最近500天收盘价的均价,如果有些公司上市时间较短没有500天,则其值为无效数。反应在分析图上则该指标线不显示。在TDX分析系统中函数NODRAW代表无效数,可作为常数使用。
无效数与任何数作计算,其结果仍为无效数。例如:7*NODRAW得到的结果仍为NODRAW。
第3节公式编写示例
• 公式示例
• 指标公式:均线通道
• 选股公式:均线通道
• 五彩K线公式:均线通道
• 交易系统公式:均线通道
• 颜色参数应用:MACDK
• 新增函数应用:HORCALC(X)
• 新增函数应用:BLOCKSETNUM(板块名称)
简单公式
这里举一些最简单的公式例子,有些只有一条语句且函数简单,较复杂的公式中函数复杂且语句较多。
收盘价线
这是最简单的公式:
CLOSE;
均线
计算N日内收盘价的算术平均值,它是最常用的指标之一,公式为:
MA(CLOSE,5);
其中的MA(X,N)表示X的N日平均。
涨幅
涨幅指今日收盘价相对于昨日收盘价的变动幅度,即(今日收盘价-昨日收盘价)/昨日收盘价*100%, 昨日收盘价的公式为:REF(CLOSE,1),因此涨幅的公式:
(CLOSE-REF(CLOSE,1))/REF(CLOSE,1);
换手率
换手率指当期的成交量占流通股本的比例。
公式:
VOL/CAPITAL;
VOL为当期成交量,CAPITAL为流通股本。
创新高
创新高指当日最高价是最近一段时间的最高价:
HIGH=HHV(HIGH,N);
其中的HIGH为当期最高价,HHV(X,N)是求N周期内X最高值。因此该公式的含义是当日最高价创N日新高时返回值为1,否则为0。
横盘整理
横盘整理指最近一段时期价格在一定幅度之内摆动:
(HHV(CLOSE,10)-LLV(CLOSE,10))/CLOSE<0.05;
其中的LLV(X,N)是求N周期内X最低值。因此该公式表示10日收盘价振幅振幅在5%以内。
区间统计
例如,要取得2002年2月1日到2002年12月30日间的最低价。思考一下,一段时间的最低价必然是该段时间内每个分析周期的最低价中最小的那个。所以我们要引用的数据是该段时间各分析周期的最低价,而不需要用到开盘价、收盘价或最高价;还要将不需要的数据,即区间外的数据设为0。语句为:
LL:=IF(YEAR=2002 AND MONTH>=2 ANDMONTH<=12,LOW,0);
该语句用一个条件函数来判断时间是否处于规定区间,若是则返回最低价,否则返回0。
我们再用LLV函数,就可求得该段时间最低的最低价:
LLV(LL,N);
N为日期参数,N为0,则上式表示:上市以来的最低价。
技术指标公式
技术指标公式用于绘制技术指标线。以KDJ指标为例,右键点击KDJ,选择“编辑公式”后打开公式算法编辑器,显示出KDJ指标公式的内容。
参数名称: 最小值最大值缺省值
N: 110O 9
M1: 240 3
M2: 240 3
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D
该公式绘制K、D、J两条指标线。
RSV行是一个中间语句,计算当期收盘价与N天内最低价之差除以N内最高价与最低价之差的比值,再乘以系数100。
K线为RSV的M1天移动平均线;
D线为线K的M2天移动平均线;
J线为K线与J线的差值。
条件选股公式条件选股公式
条件选股用于选出满足条件的股票,条件选股公式用于显示条件是否满足的语句是一个逻辑表达式,条件满足,表达式的返回值为“1”,表示选中该股,条件不满足,返回值为为“0”,表示未选中。条件选股公式的其他公式必须是中间公式,而且要在逻辑表达式之前。以KDJ指标买入条件选股为例,右键点击“KDJ指标买入条件选股”,选择“编辑公式”后打开公式算法编辑器,显示出公式的内容。
用KDJ随机指标作为买入条件是当J向上穿越0坐标线的时候
公式写法为:
参数名称:最小值最大值缺省值
N: 110O 9
M1: 240 3
M2: 240 3
RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:SMA(RSV,M1,1);
D:SMA(K,M2,1);
J:3*K-2*D;
CROSS(J,0);
如果直接引用指标公式,KDJ条件选股公式可以简写为:
CROSS("KDJ.J"(N,M1,M2),0);
3.2 指标公式:均线通道
新建公式“均线通道”(JXTD)
1.使用快捷键Ctrl+F打开“公式管理器”。
2.点击“新建”按钮,打开“公式编辑器”
3.填写公式项
“公式名称”---JXTD,
“公式描述”---“均线通道”
参数(最小值)(最大值)(缺省值)
#N: 1 100 26
--------------------------------------------------
VAR1:=MA(CLOSE,N);{对“VAR1”赋值}
VAR2:=MA(CLOSE,2*N);{对“VAR2”赋值}
VAR3:=MA(CLOSE,3*N);{对“VAR3”赋值}
VAR4:=MA(CLOSE,4*N);{对“VAR4”赋值}
VAR5:=MA((VAR1+VAR2+VAR3+VAR4)/4,5);{一条多条均线的平均线}
上轨:VAR5*1.08;{在均线“VAR5”上加上8%的幅度变成“上轨”}
下轨:VAR5*0.92; {在均线“VAR5”上减去8%的幅度变成“下轨”}
----------------------------------------------------
4.指标类型:选“路径型”,还有大势型、超买超卖型、趋势型、能量型等如图
5.画线方法:副图、主图叠加、副图叠加线、副图叠加美国线四种;选中“主图叠加型”,副图是K线图下面的区域;
6.密码保护:010101
7.参数设置:#N:最小值为1,最大值为100,缺省值(默认)为26;
8.坐标线位置:在非“主图叠加”中,此编辑框处可写状态;输出线为副图中深红色横线显示,是副图坐标线;
9.额外Y轴分界:是指标敏感数值输出线,在副图中显示为白色;
10.引入指标公式:在引入原公式的基础上进行编辑;
11.插入函数:左上为函数类别,右上为函数表,下区为函数解释区及用法举例;
12.公式编辑区:
〖{ }〗是解释,不输出,为了提示自己和别人,便于看懂公式;
〖:=〗赋值符,意为“相当于”;
〖:〗输出符,它前面的名称为输出名称,可以在副图中看到,它后面的为公式定义;
〖;〗分段符,表示一段完成;
〖,〗分节符;
〖()〗括号中为公式体。
13.测试公式:测试通过则自动保存;测试不能通过,则在翻译区提示错误所在。
14.用法注释:自编公式使用说明。
15.在K线图上,直接敲字母键“JXTD”调出自编的公式“均线通道”,查看结果;
16.修改公式:左键选中公式线后,点击右键,在弹出的对话框中,选中“修改指标”项,直接调出《公式编辑器》修改公式。如果左键选指标线不便,直接用右键选参数数值,也可调出公式编辑器。
17.鼠标动态提示:将鼠标放在函数上,等一会系统自动出现提示框,方便函数学习和应用,如图: