常用函数—引用函数

引用函数是通达信公式编写最重要的函数部分,可以理解为对行情函数处理的方法,为逻辑判断提供依据,常用的引用函数共有9个,给分分类,分别是:

1、均线类的:MA 简单移动平均和EMA(或EXPMA)指数移动平均;

2、定位引用数据:REF (表示日前的,向前引用若干周期前的数据), BARSLAST(上一次条件成立位置 上一次条件成立到当前的周期数),LLVBARS(上一低点位置 求上一低点到当前的周期数);

3、求高低值:HHV(最高值,求最高值),LLV(最低值,求最低值);

4、统计类:COUNT (统计满足条件的周期数),SUM(累和 求总和);

 

一、均线类的:MA 简单移动平均和EMA(或EXPMA)指数移动平均

 

1、MA 简单移动平均

MA函数使用还是比较简单,MA(X,M),X指的是你所要移动平均的连续的值,M是天数,比如股价收盘价的不同均线:

MA1:MA(CLOSE,5);
MA2:MA(CLOSE,10);
MA3:MA(CLOSE,20);
MA4:MA(CLOSE,30);
MA5:MA(CLOSE,60);
MA6:MA(CLOSE,120);
MA7:MA(CLOSE,250);

分别输出5、10、20、30、60、120、250天的收盘移动平均线。

当然,X是所要移动平均的对象,可以对于价格,也可以是需要移动平均的对象,比如成交量的移动平均线:

VOLUME:VOL,VOLSTICK;
MA5:MA(VOLUME,5);
MA60:MA(VOLUME,60);

分别表示5日和60日成交量的移动平均线。

 

2、EMA(或EXPMA)指数移动平均

EMA只要有交易,就有值,刚上市的次新股,就有EMA值,而MA会受时间限制,上市1天,要求5日移动平均线,是没有的。EMA可以理解为是EXPMA的缩写形式,在编写公式一般用EMA函数,EMA(X,M),X指的是你所要指数移动平均的连续的值,M是天数,使用实列,比如我们非常常用的MACD指标(平滑异同平均线),就是EMA函数编写的:

SHORT:=12;
LONG:=26;
MID:=9;
DIF:EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);
DEA:EMA(DIF,MID);
MACD:(DIF-DEA)*2,COLORSTICK;

EMA(CLOSE,SHORT) 和 EMA(CLOSE,LONG),分别代表短期指数移动平均和长期指数移动平均,这里通常短期(SHORT)取12,长期(LONG)取26,这两个线的差DIF再9天(MID)指数移动平均,即DEA:EMA(DIF,MID);

 

二、定位引用数据:REF ,BARSLAST,LLVBARS

 

1、REF函数用的非常多,REF(X,A) 引用A周期前的X值,A可以是变量,例如:REF(C,1)代表前一天的收盘价,:REF(C,2)代表前两天的收盘价。

 

2、BARSLAST也是非常好用的函数,表示一次条件成立到当前的周期数,BARSLAST(X) 上一次X不为0到现在的天数,刚学的时候,这个函数理解起来有点困难,学过编程的都知道,数据自然递增是0,1,2,3…..,也就是记住,条件成立的时候是0,第二天才是1,例如我们写:

最近一个向上突破20日均线;

目前的周期数大于等于4天;

而且一直保持再20日均线上方的选股器。

B:=CROSS(C,MA(C,20));
QT:=BARSLAST(B)>=4;
A1:=EVERY(C>MA(C,20),BARSLAST(B));
XG:A1 AND QT;

 

3、LLVBARS上一低点位置 求上一低点到当前的周期数。 LLVBARS(X,N) 求N周期内X最低值到当前周期数,N=0表示从第一个有效值开始统计。例如求120天最低点到目前不超过10天:

LLVBARS(L,120)<10;

 

三、求高低值:HHV(最高值)和LLV(最低值)

 

HHV(X,N) 求N周期内X最高值,N=0则从第一个有效值开始,例如求60日收盘价的最高值

HHV(C,60);

 

LLV(X,N) 求N周期内X最低值,N=0则从第一个有效值开始, 例如求60日最低价的最低值

LLV(L,60);

LLV(L,0);表示求历史最低价。

 

四、统计类:COUNT (统计满足条件的周期数)和SUM(累和 求总和)

 

COUNT统计满足条件的周期数。 函数COUNT(X,N), 统计N周期中满足X条件的周期数,若N=0(N<0)则从第一个有效值开始。例如统计10天中阳线天数大于等于7天,就可以用到 函数COUNT(X,N):

COUNT(C>O,10)>=7;

还有上面举的例子

B:=CROSS(C,MA(C,20));
QT:=BARSLAST(B)>=4;
A1:=EVERY(C>MA(C,20),BARSLAST(B));
XG:A1 AND QT;

也可以用函数COUNT(X,N)替换EVERY函数来写:

B:=CROSS(C,MA(C,20));
QT:=BARSLAST(B)>=4;
A1:=COUNT(C<MA(C,20),BARSLAST(B))<1;
XG:A1 AND QT;

SUM 累和 求总和函数,SUM(X,N) 统计N周期中X的总和,N=0则从第一个有效值开始。

例(1)表示统计从上市第一天以来的成交量总和:

SUM(VOL,0);

VOL是成交量,0 则从第一个有效值开始求和。

例(2)10天个股与大盘的涨幅求和比较:

一种是收盘价和前1天收盘价比较涨幅,求10天的和,公式名称为:

日涨幅10日和

BBR:SUM((C-REF(C,1))/REF(C,1),10);
CCR:SUM((INDEXC-REF(INDEXC,1))/REF(INDEXC,1),10);

还一种就是收盘价和前10日的收盘价比较涨幅,求10天的和,公式名称为:

10日涨幅和


BBR:SUM((C-REF(C,10))/REF(C,10),10);
CCR:SUM((INDEXC-REF(INDEXC,10))/REF(INDEXC,10),10);

输出效果如图

 

10日涨幅和比日涨幅10日和更平滑,如果要编写10日强于大盘的个股选股公式,就可以用下面的代码:

BBR:=SUM((C-REF(C,10))/REF(C,10),10);
CCR:=SUM((INDEXC-REF(INDEXC,10))/REF(INDEXC,10),10);
XG:BBR>CCR;

编写指标就是这样,比较后选取最优的。

发表评论

邮箱地址不会被公开。 必填项已用*标注