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))/REF(C,1);
2.新建指标TJZDF,通过INSUM函数调用ZDF指标计算出该个股所在板块成分股最大最小涨跌幅。
示例公式:
TJZDF
公式名称:
统计涨跌幅
公式脚本:
INSUM(HYBLOCK,'ZDF',1,2);{ZDF指标第一个输出的最大值}
INSUM(HYBLOCK,'ZDF',1,3);{ZDF指标第一个输出的最大值};
注释:
1.指标TJZDF中HYBLOCK函数用来取当前成份股所在板块
4.9指标窗口定点输出函数
在新版本的公式编辑器中新加了两个绘图函数,用于定点输出文字或数字。
他们就是DRAWTEXT_FIX,DRAWNUMBER_FIX。
1.RAWTEXT_FIX
固定位置显示文字.
用法:
DRAWTEXT_FIX(COND,X,Y,TYPE,TEXT),当COND条件满足时,在当前指标窗口内(X,Y)位置书写文字TEXT,X,Y为书写点在窗口中相对于左上角的百分比,TYPE:
0为左对齐,1为右对齐。
例如:
DRAWTEXT_FIX(CURRBARSCOUNT=1ANDCLOSE/OPEN>1.08,0.5,0.5,0,'大阳线')表示最后一个交易日涨幅大于8%时在窗口中间位置显示'