
引用函数是通达信公式编写最重要的函数部分,可以理解为对行情函数处理的方法,为逻辑判断提供依据,常用的引用函数共有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;
编写指标就是这样,比较后选取最优的。










发表评论