通达信公式编写教程.docx
- 文档编号:11441498
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:102
- 大小:478.49KB
通达信公式编写教程.docx
《通达信公式编写教程.docx》由会员分享,可在线阅读,更多相关《通达信公式编写教程.docx(102页珍藏版)》请在冰豆网上搜索。
通达信公式编写教程
1.基本公式编写实例
在前面的学习当中,我们见到了一些基本的表达方法、方式,今天我们的任务是学习一些常见的概念如何编写,例如上面所列出来的放量、上涨等等,因为这些都是在公式编写过程当中要用到的基本形态特征,许多的技术指标的选股条件都是由它们组成的。
1.1放量
1、今日比昨日的成交量放大了1倍:
VOL/REF(VOL,1)>2;
2、今日的五日均量比五天前的五日均量放大了3倍:
AA:
=MA(VOL,5);
BB:
=REF(AA,5);
AA/BB>4;
3、今天的成交量达到了整个流通盘的10%以上:
VOL/CAPITAL>10/100;
(注意,10%的表达式是10/100,或者0.1)
1.2缩量
1、今日比昨日的成交量缩小了1倍:
VOL/REF(VOL,1)<0.5;
2、今日的五日均量比五天前的五日均量缩小了一半:
AA:
=MA(VOL,5);
BB:
=REF(AA,5);
AA/BB<0.5;
3、今天的成交量不足整个流通盘的0.5%:
VOL/CAPITAL<0.5/100;
1.3上涨
1、今日涨幅达到了7%以上:
CLOSE/REF(CLOSE,1)>1.07;
2、十日均价继续上涨:
AA:
=MA(CLOSE,10);
BB:
=REE(AA,1);
AA>BB;
1.4下跌
收阳、收阴:
1、当天收阳:
CLOSE>OPEN;
2、当天收阴:
CLOSE<OPEN;
1.5高开、低开
1、当天股价高开,即开盘高于昨日收盘:
OPEN>REF(CLOSE,1);
2、当天股价低开:
OPEN<REF(CLOSE,1);
1.6跳空
跳空亦有向上和向下两种:
当日开盘在昨日最高之上,即为向上跳空:
OPEN>REF(HIGH,1);
反之,开盘小于昨日的最高价,为向下跳空:
OPEN<REF(LOW,1);
1.7放量上攻
AA:
=VOL/REF(VOL,1)>2;{成交量是昨日的两倍}
BB:
=CLOSE/REF(CLOSE,1)>1.07;{涨幅大于7%}
AAANDBB;
1.8高开高走
AA:
=OPEN>REF(CLOSE,1);{开盘价大于昨收}
BB:
=CLOSE>OPEN;{当日收阳线}
AAANDBB;
1.9创新高
创新高指当日最高价是最近一段时间的最高价:
HIGH=HHV(HIGH,N);
其中的HIGH为当期最高价,HHV(X,N)是求N周期内X最高值。
因此该公式的含义是当日最高价创N日新高时返回值为1,否则为0。
1.10横盘整理
横盘整理指最近一段时期价格在一定幅度之内摆动:
(HHV(CLOSE,10)-LLV(CLOSE,10))/CLOSE<0.05;
其中的LLV(X,N)是求N周期内X最低值。
因此该公式表示10日收盘价振幅振幅在5%以内。
2.公式组合实例
下面介绍如何对基本公式进行组合,描述一些简单的K线形态。
在编写公示前,需要准确对K线形态进行定义。
2.1向上跳空之后两天内并未回补
定义:
实际上就是昨天发生了跳空缺口,这两天的最低价一直在两天前的最高价之上。
AA:
=REF(OPEN,1)>REF(HIGH,2);
BB:
=REF(LOW,1)>REF(HIGH,2);
CC:
=LOW>REF(HIGH,2);
AAANDBBANDCC;
仔细一想,若BB成立,AA一定成立,AA实际上没有存在的必要。
更简单的方法,下面的一句话可以的上面的四句:
COUNT(LOW>REF(HIGH,2),2)=2;
2.25日,10日,30日均线多头排列
定义:
均线多头排列,是指从短周期到长周期均线,从上而下的依次排列
AA:
=MA(CLOSE,5);
BB:
=MA(CLOSE,10);
CC:
=MA(CLOSE,30);
T1:
=AA>BBANDBB>CC;
以上情况维持一段时间,假设我们这里定为4天以上:
COUNT(T1,4)=4;
COUNT(X,N)表示统计在N天内满足条件X的有几天。
最终的结果就是如下所示:
AA:
=MA(CLOSE,5);
BB:
=MA(CLOSE,10);
CC:
=MA(CLOSE,30);
T1:
=AA>BBANDBB>CC;
COUNT(T1,4)=4;
2.3逃顶K线形态之--黄昏之星
定义:
当市场出现一条大阳线后,通常会产生跳空高开的情况,有时便会出现十字星或类似十字星的小阴线(小阳线),当该形态出现在一段上升行情的当中,就很容易形成经典K线形态--黄昏之星。
为了结构简单起见,首先将二天的高开低收用中间表达式表达出来,因为我们在后面的编写过程中会分别使用到这些数据。
1、今日K线的:
开-a1,a1:
=open;
收-a2,a2:
=close;
高-a3,a3:
=high;
2、昨天K线的:
开-b1,b1:
=ref(open,1);
收-b2,b2:
=ref(close,1);
高-b3,b3:
=ref(high,1);
低-b4,b4:
=ref(low,1);
3、前天K线的:
开-c1,c1:
=ref(open,2);
收-c2,c2:
=ref(close,2);
高-c3,c3:
=ref(high,2);
低-c4,c4:
=ref(low,2);
4、我们将会分别描述出三天的K线形态,然后汇总,首先我们观察今日K线的特征,今天
是一根低开低走的大阴线,我们给它一些数字上的定义:
a、今日开盘价小于昨日收盘价:
aa:
=a1<b2and
b、今日的阴线实体较长,我们用开盘价和收盘价相比,长度大于4%:
a1/a2>1.04;
5、昨日K线的特征,是一根十字形态的K线,并且在左右两根K线之上,分别表达为:
a、昨日跳开,高于前天的收盘:
bb:
=b1>c3
b、昨日收盘同样在缺口之上:
andb2>c3
c、线形实体长度很小,也就是昨日开盘和收盘之差比昨日开盘的值小于0.01:
andabs(b1-b2)/b1<0.01
d、K线有上下影线,可以表示为最高价和最低价不等于收盘价也不等于开盘价:
andb3>b1andb3>b2andb4<b1andb4<b2
e、当日的最高价为20天以来的最高价:
andb3=hhv(high,20);
6、前日K线的特征:
股价大幅上扬,幅度较前一日收盘高出4%并且收盘大于开盘:
cc:
=c2/ref(close,3)>1.04andc2>c1;
综合选股条件:
最后我们将三天的K线特征结合起来,合成一个最后的条件就是由图所示内容:
aaandbbandcc
最终结果就是(可以直接加进通达信公式编辑器):
a1:
=open;
a2:
=close;
a3:
=high;
b1:
=ref(open,1);
b2:
=ref(close,1);
b3:
=ref(high,1);
b4:
=ref(low,1);
c1:
=ref(open,2);
c2:
=ref(close,2);
c3:
=ref(high,2);
c4:
=ref(low,2);
aa:
=a1
bb:
=b1>c3andb2>c3andabs(b1-b2)/b1<0.01andb3>b1andb3>b2andb4 cc: =c2/ref(close,3)>1.04andc2>c1; aaandbbandcc; 如果我们想把这个选股公式改为指标公式,修改最后一个语句就可以了。 将aaandbbandcc;改为DRAWICON((AAANDBBANDCC),HIGH*1.02,2); 这时在符合条件的K线上方出现了一个绿色的向下箭头,提示卖出。 效果如下: 黄昏之星是一个卖出信号,与之相对应的是一个买入信号,称为早晨之星,如下图: 指标源码请参考通达信中的相关选股公式。 2.4突破底部横盘整理创新高 定义: 股价突破长期盘整区间,之后放量上攻进入主升段。 “长期”设定为150天;“横盘”设定股价在150日均线上下15%波动;放量;并且股价创下150天以来的历史新高。 首先用公式描述放量 a、将会使用5日均量来进行比较,成交量比昨日成交量放大两倍; b、V1是五日均量,REF(V1,1)就是昨日的均量; V1: =MA(VOL,5); V2: =VOL/REF(V1,1)>2; 长期横盘 a、PZ1是当天150日均价: PZ1: =MA(CLOSE,M); b、PZ2是150日的最高价;PZ2: =HHV(HIGH,M); c、PZ3是150日的最低价;PZ3: =LLV(LOW,M); d、PZ4是150日的最高价和150日均价的距离的百分比,PZ5刚好相反是最低价和均价的差的百分比;PZ4: =(PZ2-PZ1)/PZ1;PZ5: =(PZ1-PZ3)/PZ1; e、设为股价在150日均线上下15%波动,也就是PZ4、PZ5都小于0.15; PZ: =REF(PZ4,1)<0.15ANDREF(PZ5,1)<0.15; 3、今天创下历史新高,也就是今天的最高价是150天内的最高价! TP1: HHV(HIGH,M);TP: =HIGH=TP1; 综合三个条件的最后的逻辑判断式就是我们的最后结论: V2ANDPZANDTP(参数M=150天) 最终结果就是: (参数M=150天) V1: =MA(VOL,5); V2: =VOL/REF(V1,1)>2; PZ1: =MA(CLOSE,M); PZ2: =HHV(HIGH,M); PZ3: =LLV(LOW,M); PZ4: =(PZ2-PZ1)/PZ1; PZ5: =(PZ1-PZ3)/PZ1; PZ: =REF(PZ4,1)<0.15ANDREF(PZ5,1)<0.15; TP1: HHV(HIGH,M); TP: =HIGH=TP1; V2ANDPZANDTP; 注意: 如果源码加入到公式编辑器后显示错误,请多注意标点符号,需要将中文模式下的标点改成英文模式下的标点,例如: “: ”改成“: ”,“,”改成“,”以及括号等等。 3.各种指标公式编辑器的详细区别 公式管理器可管理四种类型的公式: 指标公式: 用于指标图形的绘制。 条件选股公式: 用于条件选股。 交易系统公式: 用于专家指示及测参、测指。 五彩K线公式: 用于K线模式指示。 这四种公式相互独立,名称可以相同,但其内容和作用不同。 每种类型的公式包括四种形式: 系统加密公式: 用绿色图标和锁形符号显示,要进行密码确认系统公式: 用绿色图标显示,可进行删改用户加密公式: 用红色图标和锁形符号显示,要进行密码确认用户公式: 用红色图标显示,可进行删改指标公式附加买卖逻辑判断式,得到交易系统公式;指标公式附加选股条件逻辑判断式,得到条件选股公式。 指标公式附加色彩逻辑判断,得到五彩K线公式。 3.1技术指标公式编辑器 技术指标公式即通常所说画线指标,此类公式的主要目的是通过对数据采取一定的运算,将输出结果直观的显现在分析图上,为投资者提供研判行情的基本依据。 此类指标至少要有一条输出线,输出包括文字,图标等,本系统老版本允许最多6条的输出线,新版本可以输出50条输出线。 技术指标公式编辑器实现对技术图表分析中各类技术指标和自我定义的技术分析指标的编写,并且通过TDX的分析界面形成图表、曲线,以方便和寻找有意义的技术图形和技术特征。 3.2条件选股公式编辑器 也就是通常意义上解释的智能选股。 但我们的目的在于建立一个完全开放、自由的选股平台,可以通过对该平台的熟练使用,借助计算机的高速和准确的检索功能寻找满足您的理解的股票形态和技术特征,如果和预警系统结合起来用,将可以在盘中实时提示符合条件的股票。 条件选股公式有且仅有一个输出,这是它和技术指标不同的地方。 3.3五彩K线公式编辑器 准确讲,该编辑器的功能是附属于条件选股功能之上的,我们可以通过该功能将满足条件的连续K线形态赋予颜色,区别了其它的K线。 条件选股公式与五彩K线公式的区别: 条件选股公式和五彩K线公式都有且仅有一个输出,其目的都是为投资者提供买入或卖出点的指示,不同之处在于: 条件选股公式仅对最近数据提示买入或卖出,而五彩K线公式则对输入的所有历史数据进行提示。 另外,五彩K线公式的输出是在K线图上,通过各种颜色对提示数据进行标识,条件选股公式的输出是找出符合最近条件的所有股票。 3.4交易系统公式编辑器 交易系统公式是通过设定买入和卖出点(有且仅有这两个输出),由计算机进行模拟操作。 以此为依据,系统一方面可以进行五彩K线公式的功能,同时提示买入和卖出;另一方面可以通过模拟操作,对指标买卖的收益、指标的最佳参数及最佳指标等各情形进行测试。 交易系统是在条件选股功能上的一次大的延伸,旨在建立一套完整的交易规则体系,通过该编辑器对各个相关的交易环节,包括买入的切入、卖出、止损以及整体的交易性能检验等等作出定量的规定,帮助投资者建立一套属于自己的买卖规则和理论。 4.特殊公式脚本编写 要编写一个公式,必须要明确这个公式对应的理论知识。 一套完整的理论知识且能在通达信的公式平台上做成公式还要满足如下要求: 1.从该理论应能分析出公式启动的起始数据。 如股票的开高低收价格、成交量、各财务数据、各即时数据、时间数据、一些常见的技术分析概念、其他理论的结果等,这些数据大部分是系统提供的,而最后两项则要从其他公式中得来也就是对应于公式编写中的指标引用操作(当然在这公式编写前要确保该要引用的指标已实现)。 2.从理论中应能分析出起始数据到结果的明确运算过程。 在公式平台中提供了一些系统函数,这些函数包含了部分常用的运算过程(如HHV(X,N)可求N周期内X最高值)。 如果理论中的运算过程拆解完全后,能由公式平台中的函数及允许的基本运算全部组成就可以编写成公式了。 在之前的学习当中,我们已经对公式系统、公式脚本编辑有了基本的认识。 公式系统提供给我们的基本函数、系统公式,就是我们运用公式系统编写自己的公式时的基本元素。 对于一些常见的技术分析概念的编写在上一章节已经给出了介绍和示例,本章节主要来介绍一下在公式脚本编写如果用系统函数及基本运算来解决一些特殊难题。 4.1在分钟周期下划分交易日 1.均线(分钟): 指标名称: 均线(分钟) 指标原理: 均价=累加自当日开市到当前K线时间内的成交金额/累加自当日开市到当前K线时间内的成交量。 编写分析: 1.确定交易日内第一根K线的位置(难点); 2.自1中确定的位置累加成交金额、成交量(由系统函数SUM实现); 3.由成交金额、成交量求均价(由除法操作符实现)。 公式脚本: FIRST: =IF(PERIOD=0,HOUR=9ANDMINUTE=31, IF(PERIOD=1,HOUR=9ANDMINUTE=35, IF(PERIOD=2,HOUR=9ANDMINUTE=45, IF(PERIOD=3,HOUR=10ANDMINUTE=0, IF(PERIOD=4,HOUR=10ANDMINUTE=30,0))))); SUM(AMO,BARSLAST(FIRST)+1)/SUM(VOL,BARSLAST(FIRST)+1); 上面的公式适用于1分钟,5分钟,15分钟,30分钟,60分钟等五个周期下。 将给出每个交易日中各周期下均线的走势。 公式脚本编写中的重点就是First变量的确定,这也是这段脚本的亮点。 First变量表示的是当日当前周期的第一根K线位置,是通过IF函数的嵌套使用结合各分钟周期的第一根K线的时间得来的。 4.2跨周期引用数据 在同一个公式脚本中,所有变量的数据周期都是相同的,就是调用公式时设置的周期。 在公式脚本中要用其它周期的数据,共有两种方式: 1)对变量用变周期符号(#),改变其周期。 这种方式有局限性,只能在小周期公式中得到大周期数据,且仅适用于一些基本数据,如close,high,low,open等。 示例脚本: 日最高价: H; 周最高价: H#WEEK; 运行示例: 2)在公式脚本中调用其它公式以取得其它周期的数据。 调用其它公式,并用#设置其周期。 比如,公式脚本在日线下运行时,可用Kdj.k#week;来获得kdj在周线下的k值,另属于于同一周线的日线将获得相同的K值。 示例脚本: 公式1: 公式名称: JBSJ 公式描述: 基本数据 公式脚本: JC: C;{当前周期收盘价} JH: H;{当前周期最高价} JL: L;{当前周期最低价} JO: O;{当前周期开盘价} JYC: REF(C,1);{前一个周期收盘价} 公式2: 公式名称: TEST049 公式脚本: 日线开盘价: JBSJ.JO#DAY; 周线开盘价: O; 月线开盘价: JBSJ.JO#MONTH; 运行示例: 公式3: E: =CURRBARSCOUNT; E1: =DAY! =REF(DAY,1); E2: =BARSLAST(E1)+1; E3: =MA(C,E2); E4: =SUM(AMO,E2)/SUM(VOL,E2)/100; E5: =IF(CAPITAL>0,E4,E3); 昨开: IF(E<=CONST(E2),TMP#DAY,DRAWNULL),COLORCYAN,LINETHICK3; TMP的指标源码如下: REF(OPEN,1); 此指标用于分钟周期线,同时在昨开盘价的位置上画一根线。 运行示例: 3)使用跨周期引用数据时注意点 可供引用的周期类型有: MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH 分别表示将1,5,15,30,60分钟K线数据,以及日,周,月K线数据,代入被引用的公式,进行运算。 可将大周期内跑的数据,引用到小周期内来跑;也可将小周期内跑的数据,引用到大周期内来跑。 切勿对开高低收以外的数据直接使用变周期转换! 切勿对大周期内跑的数据使用小周期转换! 无论是开高低收等基本数据、还是自定义变量,都无法从大周期数据直接转换成小周期数据,只能通过公式引用来获得小周期数据。 4.3对某个时间段统计 1)某绝对时间段最高价 此脚本段求1998年8月3日到1998年12月20日间的最高价: HH: =IF(YEAR=1998AND(MONTH>8OR(MONTH=8ANDDAY>=3))AND(MONTH<12OR(MONTH=12ANDDAY<=20)),H,0);{HH变量在该时间段内等于H,其他时间为0} HHV(HH,0);{此例求1998年8月3日到1998年12月20日间的最高价} 2)某相对时间段最高价 60天前到40天前之间的最高价 REF(HHV(H,60-40),40); 4.4在某个时间段内某条件满足 TT: =C/REF(C,1)>1.095;{是否涨停} COUNT(TT,20)>0;{二十个交易日内时候涨停过} 上面的脚本配合1.3中示例可以写出历史某绝对时间段,或相对时间内是否涨停过的选股公式。 上图中的效果还可以借助Filter这个函数来实现。 4.5K线绘制 示例公式: 博弈K线 公式名称: 博弈K线 公式脚本: BKO: WINNER(O),NODRAW; BKH: WINNER(H),NODRAW; BKL: WINNER(L),NODRAW; BKC: WINNER(C),NODRAW; DRAWKLINE(BKH,BKO,BKL,BKC); 运行示例: 4.6创新高周期数 成交量创新高周期数脚本: FV: =IF(BARSCOUNT(C)=0,9999999999,VOL); 量创新高周期数: SUMBARS(REF(FV,1)-FV,0); {这里的关键是REF(FV,1)-FV,想想看写成FV-REF(FV,1)行不行? }; 4.7脚本控制 在通达信的公式脚本中没有专门的控制语句,一切都是变量(仅有输出与不输出的区别),所以要实现应用于多种情况的脚本也要依靠变量来控制。 系统函数中有几个重要的函数就是IF,IFF,IFN,TESTSKIP.请大家注意的是通达信的函数的参数都是先计算出结果然后将参数传给函数的。 因此对于TESTSKIP,最好作为一条单独的语句来使用。 公式脚本1: 同1.2中的JBSJ公式。 {用于引用股票的基本数据。 } 公式脚本2: FZMN分钟模拟 {用于通过几种分钟周期的数据模拟出当天对应于改周期的各项数据} N: =IF(PERIOD=0,1, IF(PERIOD=1,5, IF(PERIOD=2,15, IF(PERIOD=3,30, IF(PERIOD=4,60,0))))); CTRL: =TESTSKIP(N=0);{仅用于分钟周期} TTIME1: =(TIME/100); TTIME2: =IF(TTIME1<1000,TTIME1-930, IF(TTIME1<1100,TTIME1-1000+30, IF(TTIME1<1131,TTIME1-1100+90, IF(TTIME1<1300,120, IF(TTIME1<1400,TTIME1-1300+120, IF(TTIME1<1500,TTIME1-1400+180, 240)))))); TTIME: =TTIME2/N; YTC: ="JBSJ.JYC#DAY"; YTDPC: ="399300$CLOSE#DAY"; ZFS: =(C*1000/YTC)-1000; AC: ="399300$CLOSE"; ZFA: =(AC*1000/YTDPC)-1000; DJC: (ZFS-ZFA)*YTC/1000+YTC; DJH: IF(TTIME<2,DJC,HHV(DJC,TTIME-1)); DJL: IF(TTIME<2,DJC,LLV(DJC,TTIME-1)); DJO: REFV(DJC,TTIME-1); {DRAWKLINE(DJH,DJO,DJL,DJC);}; 公式脚本3: 在日线周期下,引用公式2中的数据(通过引用指标设置周期的方法来获得分钟周期的数据),通过K线绘制的函数就可以画出模拟的K线了。 JH: ="FZMN.DJH#MIN5"; JO: ="FZMN.DJO#MIN5"; JLC: ="FZMN.DJL#MIN5"; JC: ="FZMN.DJC#MIN5"; DRAWKLINE(JH,JO,JLC,JC); 4.8横向统计函数 横向统计类函数是板块中所有股票都参与计算的函数,有: BLOCKSETNUM,HORCALC,INSORT,INSUM等四个。 其中INSUM是新加入的函数,其用法如下: INSUM(板块名称,指标名称,指标线,计算类型), 返回板块各成分该指标相应输出安计算类型得到的计算值.计算类型: 0-累加,1-平均数,2-最大值,3-最小值. 现在用INSUM计算出个股所在行业中最大和最小的涨跌幅: 1.首先新建一个指标ZDF,用于计算个股的涨跌幅。 示例公式: ZDF 公式名称: 涨跌幅 公式脚本: (C-REF(C,1))/RE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通达信 公式 编写 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)