本语句在第一条代码语句之后,所画的绿线将覆盖第一条语句所画的晶红色线。
这样第一条语句所画的晶红色线,只剩下走平、向上倾斜部分保持晶红色。
例4:
利用STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY)函数绘制K线。
分析:
K线由上、下影线、实体部分组成,影响K线的股价有open、close、high、low,如果今上涨,K线为红色,否则为蓝色。
代码如下:
stickline(isup,low,high,1,1),colorred;{今上涨,在最低价到最高价间画红色细线}
stickline(isup,open,close,7,1),colorred;{今上涨,在收盘价到开盘价间画红色空心柱线}
stickline(isdown,low,high,1,0),colorblue;{今下跌,在最低价至最高价间画蓝色细线}
stickline(isdown,open,close,7,0),colorblue;{今下跌,在开盘价至收盘价间画蓝色实心柱线}
五、引用其它公式、引用其它周期、引用其它个股数据:
1、摘录飞狐帮助文件中的相关内容如下,其中选股公式、交易公式将在后面陆续讲解:
㈠引用指标公式/交易系统/条件选股公式
1、引用指标公式,可以写成:
"公式名称.指标线名称"(参数表),其中参数表中的参数个数应该与该公式的实际参数数量一致,若不写参数表,则表示使用缺省参数。
例如:
"MACD.DIFF",表示引用根据缺省参数,引用MACD指标中DIFF指标线数值。
2、引用交易系统公式,可以写为:
"SYSTEM.公式名称.交易类型"(参数表),交易类型可以为ENTERLONG、EXITLONG、ENTERSHORT或者 EXITSHORT,分别表示引用多头买入、多头卖出、空头买入、空头卖出。
例如:
"SYSTEM.MACD.ENTERLONG",表示根据缺省参数,引用MACD交易系统的多头买入条件。
3、用条件选股公式,可以写为:
"EXPLORER.公式名称"(参数表)
例如:
"EXPLORER.MACD",表示根据缺省参数,引用MACD条件选股条件。
㈡跨周期引用公式
下面举例说明跨周期引用的书写方法:
例1."MACD.DIFF#WEEK"(26,10,5)
表示引用MACD指标公式DIFF指标线的数值,在计算指标线值时,参数取(26,10,5),计算周期取周线。
例2."SYSTEM.MACD.ENTERLONG#MONTH"
表示引用MACD交易系统的多头买入信号,参数取缺省值,计算周期取月线。
注意:
跨周期引用只能从较短周期引用较长周期,不允许反方向的引用。
可供引用的周期类型有:
MIN1,MIN5,MIN15,MIN30,MIN60,DAY,WEEK,MONTH等八种,分别表示1、5、15、30、60分钟线,以及日线、周线、月线。
㈢引用任意股票的数据
在公式中可以引用其它任何股票的数据,方法为:
"股票代码$数据名称"
数据名称可以是OPEN、HIGH、LOW、CLOSE、VOL、AMOUNT,分别表示包括开盘价、最高价、最低价、收盘价、成交量、成交额。
例如,"000001$CLOSE",表示引用深发展A的收盘价。
2、举例说明:
其实上面已经有例子了,这里再举一个综合性的例子:
例1:
在分笔周期的主图,显示价位线(即PRICE主图),按下面要求设计主图指标,设为SL005:
⑴显示最新价;
⑵显示均价线;
⑶显示昨收盘,以红色线表示;
求解:
(请回顾一下,什么是主图指标、主图叠加指标)
⑴显示最新价,就是最新的收盘价。
公式代码很简单,即
最新价:
close;
⑵所谓均价,就是今天的平均成交价,等于“当前”的总成交金额除以“当前”的总成交量。
在分笔周期,显示的主图,仅显示当天的数据,它的有效起始周期,是当天的开盘时间,结束于当天收盘。
“当前”的总成交金额,等于从开盘到“当前”的成交金额总和,需用“引用函数”类中的求和函数即SUM(X,N),经查询,其注释为
{求总和。
用法:
SUM(X,N),统计N周期中X的总和,N=0则从第一个有效值开始。
例如:
SUM(VOL,0)表示统计从上市第一天以来的成交量总和}
成交金额的函数是amount,因此,“当前”的总成交金额为
sum(amount,0)
同理,“当前”的总成交量为
sum(vol,0)
这样,我们就得到均价的公式代码为
均价:
sum(amount,0)/sum(vol,0);
⑶昨收盘,是日周期,现在我们是设计分笔周期的公式,这就是说,现在要从分笔周期引用日周期的昨收盘价。
怎么办?
当然要设计一个被引用的指标公式,设为yy001(意为“引用001”),只需一行代码
zsp:
ref(c,1);
有了被引用的公式yy001,设计引用昨收盘的公式如下
昨收盘:
"yy001.zsp#day",colorred;{意思是,引用公式yy001的变量(即指标线)zsp,被引用的周期是日线}
综合起来,本题的主公式代码如下(另有一个被引用公式yy001),
最新价:
c;
均价:
sum(amount,0)/sum(vol,0)/100;
昨收盘:
"yy001.zsp#day",colorred;
最后公式编辑器中,设定公式的默认周期为分笔,其它周期全部禁用。
一、选股公式:
显然选股公式,就是用于选出符合条件的股票,由若干中间语句组成,并且其中不含绘图函数。
只有一行输出语句,位于最后一条语句,且必须是条件表达式。
例1:
设计一个公式,选出N周期内涨幅大于或等于5%的股票。
求解:
公式代码如下,其中N为参数:
--------------------------------------------------------------------------------
收盘价:
=close;
N日前收盘:
=ref(close,N);
选股条件:
收盘价/N日前收盘>=1.05;-
代码解释:
公式由我们所熟悉的代码组成,共3行,前2行是中间语句,最后一行是选股的条件,其中最后一行“选股条件:
”,也可以不写。
操作简介:
在飞狐中,按F7,弹出如图界面。
图中①可以调整参数。
②可以选择在什么分析周期下选股。
③可以改变选股范围,默认为A股市场。
④可以让选出的股票输出到指定的板块,并将该板块设为自动板块。
⑤可以指定时段进行选股,默认是对最后一天进行选股。
⑥对某些公式,还可以进行成功率测试。
在选股的操作过程中,大家可以发现,利用技术指标也可以进行选股。
练习1:
编制一个选股公式,选出RSI突破80的股票。
思考1:
建立如下选股公式,该公式的意义是什么?
实际操作一下,看看有什么问题?
为什么?
--------------------------------------------------------------------------------
spj:
close;
zsp:
=ref(c,1);
spj/zsp<0.95;--------------------------------------------------------------------------------
思考2:
选股操作时,当选择输出到板块时,有个自动板块的选择,起什么作用?
思考与操作1:
利用例1的选股公式,想选出最近10天,所有2天内涨幅超过5的A股板块股票。
解疑1:
某股友选股时,发现500001符合选股条件,但却选不出来,你能帮他分析一下原因吗?
二、交易系统:
交易系统公式(简称交易公式),用于指示满足特定条件时的买入信号和卖出信号。
公式的由若干中间语句,加上指定的最后4行条件表达式代码组成,最后4行分别由“ENTERLONG:
”“EXITLONG:
”、“ENTERSHORT:
”、“EXITSHORT:
”开始,表示多头买入、多头卖出及空头买入、空头卖出的条件。
这4行也可以删去若干行,但至少保留其中的一行,表示只指示其中一种信号。
例2:
我们来看看飞狐交易系统中的“RSI相对强弱指标交易系统”公式,其中LL、LH是参数:
--------------------------------------------------------------------------------
LC:
=REF(CLOSE,1);{LC为中间变量}
RSI:
=SMA(MAX(CLOSE-LC,0),N,1)/SMA(ABS(CLOSE-LC),N,1)*100;{RSI为中间变量}
ENTERLONG:
CROSS(RSI,LL);{多头买入条件表达式,RSI上穿LL时发出买入信号}
EXITLONG:
CROSS(LH,RSI);{多头卖出条件表达,RSI下穿LH时发出卖出信号}--------------------------------------------------------------------------------
在新建或编辑修改交易公式时,可以设定介入点的位置,如次周期中价等。
设置止损条件,如目标利润止盈、最大损失止损等。
交易公式的使用:
①在K线图中,按Ctrl+F6,可以选择交易公式指示买卖信号。
②在选股操作时,也可以选择交易公式进行选股。
③在菜单“工具”中,还可以对交易进行“交易系统评价”、“探索最佳参数”操作。
在菜单“查看”中,可以“优选交易系统”。
此外,按Shift+W,调出公式树,可以通过鼠标把交易公式拖到K线窗口的方法,使用交易公式。
试试把选股公式也拖到K线窗口,看看有何变化?
说明了什么?
当想删除在K线图上显示的各种买卖信号时,可以按Ctrl+Del或工具栏上的相应按钮实现。
练习2:
设计一个均线交易公式,当收盘价上穿5日均线时,发出多头买入信号,收盘价下穿5日均线时发出多头卖出信号。
并观察设置不同的介入点介入时,指示的信号有什么变化。
练习3:
观察飞狐系统内置的各个交易公式,领会各交易公式的意义。
函数注释如下:
引用任意证券任意周期的任意指标输出
用法:
STKINDI(STKLABEL,INDINAME,INDITYPE,PERIOD)
INDITYPE为指标类型,有效值范围为(0-2),依次表示技术指标、条件选股、交易系统公式;
PERIOD为周期类型,有效值范围为(-1-11),依次表示:
当前周期、分笔成交、1分钟、5分钟、15分钟、30分钟、60分钟、日、周、月、年、多日、多分钟
例如:
STKINDI('1A0001','MA.MA1',0,DATAPERIOD);
例1:
引用大盘的涨跌家数。
①被引用公式,设被引用的公式名称为“涨跌家数”,其公式代码如下:
A:
ADVANCE;
D:
DECLINE;
②引用大盘的涨跌家数,示例代码如下:
fStkName:
=if(STRCMP(STKMARKET,'SH'),'399301','1A0001');
fAdvance:
=STKINDI(fStkName,'涨跌家数.A',0,6);
fDecline:
=STKINDI(fStkName,'涨跌家数.D',0,6);
说明:
大盘函数advance、decline只能被大盘所使用,不能在个股中直接使用,这段代码,示范了如何利用STKINDI函数达到在个股中引用的目的。
例2:
在日k线中引用本股票5分钟的obv该怎么写?
求解:
代码如下
StkIndi(StkLabel,'OBV',0,2);{注意,公式的名称应使用大写字母}
二、横向统计相关函数的用法简介:
1、横向统计数据函数ESTDATA(N),取得横向统计日线数据(1-N),仅在日线分析周期有效;
2、用法举例:
例:
设计一个公式,统计当日A股板块涨停板的股票数。
3、方法如下:
①设计一个公式,判断个股是否涨停,代码如下,设公式名称是“涨停判断”:
bl:
=if(STKINBLOCK('ST板块'),1.05,1.1);{如果为ST涨停为5%,否则为10%}
ztb:
abs(c-intpart(ref(c,1)*bl*100+0.5)/100)<0.0001;{如果涨停返回1,否则返回0}
{注:
对新股的涨停未做判断,另外个股因历史的原因,是否被ST或PT处理无法判断,因此对历史数据的判断并不准确}
②建立横向统计数据项:
鼠标点菜单“管理/横向统计管理”,在“横向统计管理”对话框中,点“新增”,找到刚才设计的公式“涨停判断”。
⑴数据名称改为“涨停板”
⑵选择技术指标“涨停判断”,计算周期“日线”、指标线“ztb”为默认,不作修改。
⑶横向统计方法选“全部累加”。
⑷“计算时选择除权后的数据”不选即前面不打勾。
⑸点“设置范围”按钮,选择统计范围。
⑹置好范围后,点确定。
至此,我们就设计了一个横向统计数据项“涨停板”,在图中序号是1,则引用时是estdata
(1)。
③设计一个引用“涨停板”的公式,公式代码如下,设公式的名称是zttj:
涨停板统计:
estdata
(1);
在K线图中,调用公式zttj,就可以看到我们所需要的结果了。
练习:
如果对横向统计有兴趣的话,可以仿此,做一个跌停板统计公式。
当然可以把涨停、跌停做成二合一公式。
三、如何计算当日交易分钟数:
T定义为1分钟周期图上,开盘后的交易分钟数,
1、代码之一
--------------------------------------------------------------------------------
T:
=IF(BETWEEN(HOUR,9,11),(HOUR-9.5)*60+MINUTE,
IF(BETWEEN(HOUR,13,15),(HOUR-9.5-1.5)*60+MINUTE,240));
--------------------------------------------------------------------------------
稍加优化:
--------------------------------------------------------------------------------
T:
=IF(BETWEEN(HOUR,9,11),(HOUR-9.5)*60+MINUTE,
IF(BETWEEN(HOUR,13,15),(HOUR-11)*60+MINUTE,240));
--------------------------------------------------------------------------------
代码解释:
如果小时数介于9和11间,返回值(HOUR-9.5)*60+MINUTE
否则
如果小时数介于13和15之间,返回值(HOUR-9.5-1.5)*60+MINUTE
否则返回值240
2、观察所有的股票一天的1分钟周期图,可以发现,都是起始于9:
31,结束于15:
00,并且中午休市不显示,因此代码一可以简化为如下公式代码二,请自行解释代码。
公式代码二:
--------------------------------------------------------------------------------
T:
=IF(HOUR<=11,(HOUR-9.5)*60+MINUTE,
IF(HOUR>=11,(HOUR-11)*60+MINUTE,240));
------------------------------------------------