通达信公式汇总1.docx
《通达信公式汇总1.docx》由会员分享,可在线阅读,更多相关《通达信公式汇总1.docx(19页珍藏版)》请在冰豆网上搜索。
通达信公式汇总1
1.公式汇总
1.跨周期
如何在日线上显示当天收盘价、5日新高、5周新高、5月新高四条线?
方法一:
公式引用
先新建一个公式AAA
N{11005}
HH:
HHV(H,N);
再做一个公式引用AAA完成四条线的输出
公式:
五周最高:
=AAA.HH#WEEK(5);{HH=HHV(H,5)}
五月最高:
=AAA.HH#MONTH(5);
现价:
IF(CURRBARSCOUNT<=15,DYNAINFO(7),DRAWNULL);
日最高:
IF(CURRBARSCOUNT<=15,HHV(H,5),DRAWNULL);
五周最高1:
IF(CURRBARSCOUNT<=15,五周最高,DRAWNULL);
五月最高1:
IF(CURRBARSCOUNT<=15,五月最高,DRAWNULL);
若想显示当前交易日的这四个值的一条直线如下:
五周最高:
=AAA.HH#WEEK(5);{HH=HHV(H,5)}
五月最高:
=AAA.HH#MONTH(5);
现价:
IF(CURRBARSCOUNT<=15,DYNAINFO(7),DRAWNULL);
NN:
=CURRBARSCOUNT-1;
日最高:
IF(CURRBARSCOUNT<=15,REFX(HHV(H,5),NN),DRAWNULL);
五周最高1:
IF(CURRBARSCOUNT<=15,REFX(五周最高,NN),DRAWNULL);
五月最高1:
IF(CURRBARSCOUNT<=15,REFX(五月最高,NN),DRAWNULL);
方法二:
不通过公式间引用(显示一条直线的值都是当前交易日的数据)
M{010015}
CD:
=BACKSET(CURRBARSCOUNT=1,M);
现价:
IF(CD=1,DYNAINFO(7),DRAWNULL);
日最高:
IF(CD=1,REFX(HHV(H,5),CURRBARSCOUNT-1),DRAWNULL);
ZTJ:
=WEEKDAY=1;
YTJ:
=MONTH!
=REF(MONTH,1);
NY:
=SUMBARS(YTJ,5);
NZ:
=SUMBARS(ZTJ,5);
周最高:
IF(CD=1,REFX(HHV(H,NZ),CURRBARSCOUNT-1),DRAWNULL);
月最高:
IF(CD=1,REFX(HHV(H,NY),CURRBARSCOUNT-1),DRAWNULL);
{{缺陷:
如果哪个周一是节假日就会多统计一周}}
{日线周期下选股}?
条件1:
要求当月的收盘价与上月收盘价相比,涨幅大于20%
条件2:
要求当月的最后一个交易日的涨幅为9.5%以上。
条件1与条件2同时满足。
方法一
DYSP:
=C#MONTH;
YF:
=INTPART(DATE/100);
TJ:
=IF(YF=REF(YF,1),0,1);
N:
=BARSLAST(TJ);
QYSP:
=REF(C#MONTH,N+1);
DRSP:
=C;
ZRSP:
=REF(C,1);
TJ1:
=(DYSP-QYSP)/QYSP*100>20;
TJ2:
=(DRSP-ZRSP)/ZRSP*100>9.5;
TJ1ANDTJ2;
此方法简化:
A:
=BARSLAST(MONTH!
=REF(MONTH,1));
(C#MONTH/REF(C#MONTH,A+1)-1)*100>20AND(C/REF(C,1)-1)*100>9.5;
方法二:
一个公式应用一个公式
先新建一个BBB公式
JRSP:
C;
ZRSP:
REF(C,1);
再做一个公式引用BBB
公式内容如下
DYSP:
=BBB.JRSP#MONTH;
QYSP:
=BBB.ZRSP#MONTH;
(DYSP-QYSP)/DYSP*100>20AND(C-REF(C,1))/REF(C,1)*100>9.5;
日线上展示5日均线和5周均线?
方法一
ZSP:
=C#WEEK;
TJ:
=IF(ZSP!
=REF(ZSP,1),1,0);
N:
=SUMBARS(TJ,5);
ZSPP:
=IF(ZSP!
=REF(ZSP,1),ZSP,0);
周均线:
SUM(ZSPP,N)/5;
日均线:
MA(C,5);
方法二:
引用公式方法
新建一个DDD公式
N{01005}
MA1:
MA(C,N);
再建一个公式引用DDD
公式内容如下
五周均线:
DDD.MA1#WEEK(5);
日均线:
MA(C,5);
日线满足C>MA(C,10)同时60分钟线的收盘价满足C>MA(C,30)?
方法一:
60分钟周期下选股
{可以在60分钟周期下面输出验证为1的就是满足条件的}
DRSP:
=C#DAY;
RQ:
=INTPART(DATE/1);
TJ:
=IF(RQ=REF(RQ,1),0,1);
N:
=SUMBARS(TJ,10);
DRSPP:
=IF(DRSP!
=REF(DRSP,1),DRSP,0);
MADRSP:
SUM(DRSPP,N)/10;{10日日均线}
FZSP:
=C;
MAFZSP:
=MA(C,30);
DRSP>MADRSPANDFZSP>MAFZSP;
方法二:
引用公式
新建一个DDD公式
N{01005}
MA1:
MA(C,N);
SPP:
C;
再建一个公式引用DDD
公式内容如下
a)用60分钟周期选股:
C>MA(C,30)ANDC#DAY>AAA.MA1#DAY(10);
b)日线周期选股:
{按理不允许大周期引用小周期数据不过这样儿如果被验证可以还是可以用用的}
C>MA(C,10)ANDDDD.SPP#MIN60>DDD.MA1#MIN60(30);
2.条件选股
单日跌幅大于3%其后出现的第三根阴线进行标记
{单日跌幅大约3%其后出现的第三根阴线进行标记};
DF:
=(C-REF(C,1))/REF(C,1)*100<-3;
SYIN:
=(O>C);
NN:
=SUMBARS(SYIN,4);
REF(DF,NN-1)ANDSYIN;
取得13日内J值的最小值并且J值要小于0,并且取得遮天的收盘价
TJ:
=(LOD(KDJ.J,3)=1ANDKDJ.J<0);
NN:
=BARSCOUNT(CLOSE);
TJJ:
=BACKSET(TJ,NN);
NTJJ:
=NOT(TJJ);
LASTMZTJ:
=BACKSET(NTJJ,2)ANDTJ;{取得最后一个满足条件的地方}
MM:
=BARSLAST(LASTMZTJ);
IF(MM>=0,REF(C,MM),DRAWNULL);
今天创新高,且这20天里面加这次是第二次创新高且两个创新高的最高价一样
20天内今天创新高,前十九天创新高
写法一:
TJ1:
=BARSCOUNT(CLOSE)>20;{有效交易日天要在20以上}
TJ2:
=H=HHV(H,0);{今日创历史新高}
TJ3:
=H=REF(HHV(H,19),1);{昨天为止的最近20天的新高也等于今日的历史新高}
TJ1ANDTJ2ANDTJ3;
所以综上的话就是后面的21天两个新高且两个新高价格一样。
写法二:
XG:
=H=HHV(H,0);
N:
=SUMBARS(XG,2);{包含的是两个新高以及两个新高里面的所有k线的个数}
{HH:
REF(H,N);}
XGANDH=REF(H,N-1)ANDN=20;{N-1才可以获得前面那个新高的}
{SUMBARS(X,A):
将X向前累加直到大于等于A,返回这个区间的周期数
例如:
SUMBARS(VOL,CAPITAL)求完全换手到现在的周期数。
}
怎么选出全流通的股票?
(CTRL+F自建条件选股公式)
FINANCE
(1)=FINANCE(7);
{总股本(股)=流通股本(股)}
如何筛选出st股(筛选出ST股的股票)
ST股:
=NAMELIKE('ST')ORNAMELIKE('*ST')ORNAMELIKE('SST')ORNAMELIKE('SST')ORNAMELIKE('S*ST');
最近30天的最高价曾经创最近120天的最高价,如果此事发生在最近N=5天内,则选出。
HHV(H,30)>=HHV(H,120)ANDHHVBARS(HIGH,30)<5;
最近30天内,出现5个以上振幅小于0.05的股票(5个和0.05可以改动),再加上流通市值小于50个亿
COUNT((H-L)/REF(C,1)*100<0.05,30)>5ANDCAPITAL*C<50000000;
两个月内走出10连阳(10根都是阳线)且当天股票价格最高点突破10连阳的最高点
{两个月内走出10连阳(10根都是阳线)
当当天股票价格最高点突破10连阳的最高点时候,选出股票}
{假定两个月的有效交易日为45日};
HHH:
=HHV(H,10);
N:
=BARSLAST(EVERY(C>O,10));
H>=REF(HHH,N)ANDEXIST(EVERY(C>O,10),45);
成交量选股
{1.前日股票的成交量约等于昨日的成交量
2.今日的成交量是缩量
3.股价是上涨的}
TJ1:
=ABS(REF(VOL,1)-REF(VOL,2))/REF(VOL,2)*100<5;{两日的成交量差别5个点之类}
TJ2:
=VOLTJ3:
=C>REF(C,1);
TJ1ANDTJ2ANDTJ3;
1、某天成交量是前一天成交量的两倍
2、后面达到10天每天的成交量都小于那天的成交量
3、且后面的10天的最高价都不比放量那天的最高价高
4、后面的最低价也不突破放量那天以及放量前一天的最低价。
TJFL:
=VOL>REF(VOL,1)*2;
TJFLL:
=FILTER(TJFL,10);
NN:
=BARSLAST(TJFLL);
VBJ:
=EVERY(VOLHBJ:
=EVERY(HLBJ:
=EVERY(L>MIN(REF(L,NN+1),REF(L,NN)),NN);
TJ:
NN>=10ANDEVERY(VOL[MIN(REF(L,NN+1),REF(L,NN)),NN);]
如何选出向上跳空缺口10天还没有封闭的股票?
{如何选出向上跳空缺口10天还没有封闭的股票}
TJ:
=L>REF(H,1);
NN:
=BARSCOUNT(C);
NTJ:
=NOT(BACKSET(TJ,NN));{让最后一次缺口之前的}
ZGTJ:
=BACKSET(NTJ,2);
TKTJ:
=NTJ=0ANDZGTJ=1;
MM:
=BARSLAST(TKTJ);
TKGG:
=IF(ZGTJ,REF(H,MM+1),DRAWNULL);{取跳空前一天的k线的最高价}
BQK:
=TKGG<=LANDCOUNT(TKGG>L,0)=0;
WBQTS:
=COUNT(BQK,0);
WBQTS>10ANDWBQTS>REF(WBQTS,1);
3.资金流相关
分时界面资金驱动力
超B:
=L2_AMO(0,2)/10000.0;
大B:
=L2_AMO(1,2)/10000.0;
中B:
=L2_AMO(2,2)/10000.0;
小B:
=L2_AMO(3,2)/10000.0;
超S:
=-L2_AMO(0,3)/10000.0;
大S:
=-L2_AMO(1,3)/10000.0;
中S:
=-L2_AMO(2,3)/10000.0;
小S:
=-L2_AMO(3,3)/10000.0;
累计净流入:
(超B+大B+中B+小B)+(超S+大S+中S+小S),NODRAW;
超大单:
=(超B)+(超S);
大单:
=(大B)+(大S);
中单:
=(中B)+(中S);
小单:
=(小B)+(小S);
累计大宗净流入:
超大单+大单;
累计非大宗净流入:
中单+小单;
分时界面资金博弈{资金AMO}
超B:
=L2_AMO(0,2)/10000.0;
大B:
=L2_AMO(1,2)/10000.0;
中B:
=L2_AMO(2,2)/10000.0;
小B:
=L2_AMO(3,2)/10000.0;
超S:
=-L2_AMO(0,3)/10000.0;
大S:
=-L2_AMO(1,3)/10000.0;
中S:
=-L2_AMO(2,3)/10000.0;
小S:
=-L2_AMO(3,3)/10000.0;
净流入:
(超B+大B+中B+小B)+(超S+大S+中S+小S),NODRAW;
超大单:
(超B)+(超S);
大单:
(大B)+(大S);
中单:
(中B)+(中S);
小单:
(小B)+(小S);
分时界面大单动向{量VOL}
大单净买量:
L2_VOL(0,0)+L2_VOL(1,0)-L2_VOL(0,1)-L2_VOL(1,1);
大单买量1:
LARGEINTRDVOL;{大单买量:
买入累计大单量}
大单买量2:
L2_VOL(0,0)+L2_VOL(1,0);
大单卖量1:
LARGEOUTTRDVOL;
大单卖量2:
L2_VOL(0,1)+L2_VOL(1,1);{大单卖量:
卖出累计大单量}
{单数分档,按:
N(0--3):
超大/大/中/小四档处理,M(0--3):
买入/卖出/主买/主卖四类,资金流向功能专用};
分时界面涨跌动因{单数NUM}
展示开盘起累计的成交买入量和累计成交卖出量的情况,柱线明显清晰的展示
成交买卖差量
买单数:
TRADEINNUM;
买单数1:
L2_VOLNUM(0,0)+L2_VOLNUM(1,0);
卖单数:
TRADEOUTNUM;
卖单数1:
L2_VOLNUM(0,1)+L2_VOLNUM(1,1);
分时界面的大单差分{大单单数NUM}
展示开盘起累计的大单买入单数量和累计大单卖出单数量柱线明显清晰的展示
大单买卖成交单差量
大单买单数:
LARGETRDINNUM;
大单买单数1:
L2_VOLNUM(0,0);
大单卖单数:
LARGETRDOUTNUM;
大单卖单数1:
L2_VOLNUM(0,1);
分时界面总买总卖
揭示每一分钟的重新刷新后的总委买、总委卖量
{对应右侧盘口的总买总卖揭示的数据}
主力风向标
当日数据:
当日主力买量:
(L2_VOL(0,0)+L2_VOL(1,0))/100;
当日主力卖量:
(L2_VOL(0,1)+L2_VOL(1,1))/100;
当日主动买量:
(L2_VOL(0,2)+L2_VOL(1,2)+L2_VOL(2,2)+L2_VOL(3,2))/100;
当日主动卖量:
(L2_VOL(0,3)+L2_VOL(1,3)+L2_VOL(2,3)+L2_VOL(3,3))/100;
二日数据
DOU日主力买量:
SUM(L2_VOL(0,0)+L2_VOL(1,0),2)/100;
DOU日主力卖量:
SUM(L2_VOL(0,1)+L2_VOL(1,1),2)/100;
DOU日主动买量:
SUM(L2_VOL(0,2)+L2_VOL(1,2)+L2_VOL(2,2)+L2_VOL(3,2),2)/100;
DOU日主动卖量:
SUM(L2_VOL(0,3)+L2_VOL(1,3)+L2_VOL(2,3)+L2_VOL(3,3),2)/100;
三日的数据
TRI日主力买量:
SUM(L2_VOL(0,0)+L2_VOL(1,0),3)/100;
TRI日主力卖量:
SUM(L2_VOL(0,1)+L2_VOL(1,1),3)/100;
TRI日主动买量:
SUM(L2_VOL(0,2)+L2_VOL(1,2)+L2_VOL(2,2)+L2_VOL(3,2),3)/100;
TRI日主动卖量:
SUM(L2_VOL(0,3)+L2_VOL(1,3)+L2_VOL(2,3)+L2_VOL(3,3),3)/100;
主力轨迹
当日主力买量:
(L2_VOL(0,0)+L2_VOL(1,0));
当日主力卖量:
(L2_VOL(0,1)+L2_VOL(1,1));
主力净买:
当日主力买量-当日主力卖量;
二日主力买量:
=SUM((L2_VOL(0,0)+L2_VOL(1,0)),2);
二日主力卖量:
=SUM((L2_VOL(0,1)+L2_VOL(1,1)),2);
二日主力均买量:
SUM((L2_VOL(0,0)+L2_VOL(1,0)),2)/2;
二日主力均卖量:
SUM((L2_VOL(0,1)+L2_VOL(1,1)),2)/2;
二日主力累计:
二日主力买量-二日主力卖量;
三日主力买量:
=SUM((L2_VOL(0,0)+L2_VOL(1,0)),3);
三日主力卖量:
=SUM((L2_VOL(0,1)+L2_VOL(1,1)),3);
三日主力均买量:
SUM((L2_VOL(0,0)+L2_VOL(1,0)),3)/3;
三日主力均卖量:
SUM((L2_VOL(0,1)+L2_VOL(1,1)),3)/3;
三日主力累计:
三日主力买量-三日主力卖量;
4.其他
公式函数更新最新查看
如何修改均线线条的颜色和粗细?
MA(C,5),COLORRED,LINETHICK1;{后面的两个限定就是分别限制颜色和粗细的,颜色可以通过右键选择调色板来完成}
求一段时间区间里的成交量的和?
方法一:
适用于短期时间段的求和
比如要统计的是2010年0101到20100105的成交量和的话那就可以先一个sum函数
sum(vol,5)然后取20100105这天的这个值
REFDATE(SUM(VOL,5),1100105);
方法二:
任何时间段的求和
1998年8月3日到1998年12月20
VOLSUM:
=IF(YEAR=1998AND(MONTH>8OR(MONTH=8ANDDAY>=3))AND(MONTH<12OR(MONTH=12ANDDAY<=20)),V,0);
SUM(VOLSUM,0);
目的主要是取得历史以来某只股票的规定日期范围内的成交量,这个日期范围外的vol忽略掉。
使历史以来的成交量之和就是这段日期的成交量之和成立。
第二种方法的第二种写法
VOLSUM:
=IF(DATE>=980803ANDDATE<=981220,V,0);
SUM(VOLSUM,0);
选出一段时间某天有满足某条件的股票
在条件选股(快捷键Ctrl+T)对话框中,选择"历史阶段选股",设置时间段即可。
只要这个范围内的某一天符合条件选股公式中的条件那么就可以选出来。
但是具体哪一天符合就不知道了。
如果要知道具体哪天满足条件,可以将条件选股做成一个普通的公式,在副图中输出看输出为1的就是。
怎么对比两只股票的买一价(或者对比其他的信息如收盘价)?
方法一:
$引用符号
"000014$CLOSE",表示取000014股票的收盘价,注意加入双引号
$符号只可以引用基础函数(HOLC)
方法二:
CALCSTOCKINDEX
编写二个公式。
编写一个公式名为“买入价”的公式
买一价:
DYNAINFO(20);
再编写一个公式AA,在其中引用买入价公式:
CALCSTOCKINDEX('000001SZ','买入价',1);
CALCSTOCKINDEX('000002SZ','买入价',1);
指标说明:
CALCSTOCKINDEX
用法:
CALCSTOCKINDEX(股票代码,指标名称,指标线),
返回股票该指标相应输出的计算值
例如:
CALCSTOCKINDEX('600000SH','KDJ',3)表示上证600000股票的KDJ指标第三个输出即J之值
确定某时间段的最高点比如说:
选出2011年1月1日到2011年2月1日的最高点,并获得该最高点对应的日期,如何编写这个公式?
首先用一个变量hh记录这个时间段的最高价,然后hhv(hh,0);
然后用H=hhv(hh,0)为条件输出这个条件的日期
{选出2011年1月1日到2011年2月1日的最高点,并获得该最高点对应的日期}
HH:
=IF(DATE>=1110101ANDDATE<1110201,H,0);
HHH:
=(HH=REFDATE(HHV(HH,0),1110201)AND(DATE>=1110101ANDDATE<1110201));
DATEE:
=IF(HHH,DATE,0);
DRAWTEXT_FIX(HHH,0,0,0,VAR2STR(DATEE,0));
{此公式请求k线到2011年才会在窗口左上方显示日期,上市日期很近的此指标无输出值}
KDJ金叉,金叉后十天内显示振幅?
{KDJ二天内金叉,金叉后十天内振幅显示在金叉指标上}
{11根K线第一根金叉后面的10天振幅显示出来}
-1,COLORGREEN;
1,COLORRED;
ZF:
=(H-L)/REF(C,1)*100;
RSV:
=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100;
K:
=SMA(RSV,M1,1);
D:
=SMA(K,M2,1);
SCC:
IF(CROSS(K,D),1,ZF);
DRAWTEXT(CROSS(K,D),1,'|');
DRAWTEXT(CROSS(K,D),2,'|');
DRAWTEXT(CROSS(K,D),3,'|');
DRAWTEXT(CROSS(K,D),4,'|');
DRAWTEXT(CROSS(K,D),5,'|');
显示历史量比曲线
VV:
=VOL;
SUMVV:
=SUM(REF(VOL,1),5);
SV:
=SUM(V,5);
MINN:
=FROMOPEN;
SCC:
VV/SUMVV/MINN*5*240;
如何在分时主图指标中引用日线的数据。
(要点:
被分时引用的指标要是主图叠加类型的,因为只有这类型的指标才可以在分时图中被选择)
比如在分时主图上画昨日的最高值最低值的线
1.先做一个次指标FSSUB:
LASTHIGH:
REF(HIGH,1);
LASTLOW:
REF(LOW,1);
2.再做一个主指标FS:
(主图叠加类型)
ZG:
FSSUB.LASTHIGH#DAY;
ZD:
FSSUB.LASTLOW#DAY;
就可以在分时图主图上使用这个FS指标了
注意:
跨周期引用需要下载完整的日K线(如果没有下载全数据假如前天数据有昨天没有那么这个显示的就是前天的最高、最低)
指标公式要点(指标输出要求不显示线或者不在左上方显示输出变量和值等信息。
)
A:
C,NODRAW;{可以在左上方显示变量和输出值,但是不画线。
}
NOTEXT1:
MA(CLOSE,M1);{想输出线不想输出左上方的变量和值信息}
如何查看大盘的历史换手率
个股历史换手率:
VOL/CAPITAL*100;
20120908以后的版本支持“大盘的流通盘调用”
INDEXV/CAPITAL*10