看上海最高楼排名:飞狐基本函数简介之绘图函数
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 03:31:52
飞狐基本函数简介之绘图函数
这组函数的功能是在主图或副图上设定条件输出图象、图标、直线、文字、数字、指标线、指标柱等,全部可以单独使用。
个人感觉,飞狐的强大功能,在此组函数中有淋漓尽致的发挥。无论在表面(美感),还是实质(提高工作效率)上,都有良好表现。
毫无例外的是,这组函数中,都带有COND。CONDITION,条件,状态。COND在这里可作为条件理解。
为了能找到合适的COND,用于举例子,请允许我先介绍一组概念。
高点:在2N+1根K线中,中间这根K线的H,要大于等于左右N根K线的H。在N+1根K线中,有等高点出现,取最先出现的。
低点:在2N+1根K线中,中间这根K线的L,要小于等于左右N根K线的L。在N+1根K线中,有等低点出现,取最先出现的。
峰点:高点和低点,合称为峰点。
(这个定义,意合于技术分析的老祖宗道氏:“只要平均指数的最高点超过了前期的最高点,它就处于牛市时期;当最低点低于前期的最低点时,它处于熊市时期。”这里我们撇开向上、向下分形和分形峰状点等概念,以免把概念复杂化。)
也为了不让公式一来就过于复杂,我们先取N为2来做公式。简介到后面,可以看到,N是可以作为峰点公式的参数进行调整的。
公式名称:FENG2
公式说明:供引用
公式内容:
{峰点参数暂定为2}
A:=REF(H,2);{中间K线的最高价}
B:=A>=REF(H,4) AND A>=REF(H,3) AND A>=REF(H,1) AND A>=H;{中间K线的最高价大于等于两边共四根K线的最高价}
D:=BACKSET(B,3);{将当前位置和之前2个周期的数值设为1}
HD:FILTER(D,2);{找到高点后,过滤掉其后2周期内可能出现的等高点。输出高点}
A2:=REF(L,2);{中间K线的最低价}
B2:=A2<=REF(L,4) AND A2<=REF(L,3) AND A2<=REF(L,1) AND A2<=L;{中间K线的最低价小于等于两边共四根K线的最低价}
D2:=BACKSET(B2,3);{将当前位置和之前2个周期的数值设为1}
LD:FILTER(D2,2);{找到低点后,过滤掉其后2周期内可能出现的等低点。输出低点}
{后面有些例子,就从这个公式中引用信号。}
一、
函数: DRAWICON
参数: 无
用法: DRAWICON(COND,PRICE,TYPE),当COND条件满足时,在PRICE位置画TYPE号图标。
说明: 在图形上绘制小图标,其中TYPE可选7种图标,编码为1-7(1-3为小脸,4、5为上下箭头,6、7为红绿小旗)。TYPE为 字符串时可显示用户自制BMP图。
示例: DRAWICON(CLOSE>OPEN,LOW,1);表示当收阳时在最低价位置画1号图
DRAWICON(C>O,L,'MyBMP')表示当收阳时在最低价位置画FmlDLL子目录下的自制图标MyBMP.BMP
1、COND条件,一般是指判断的结果,不是0就是1。如用其它数据,大于等于1的,条件满足;小于1,条件就不满足。
2、TYPE图标,现在已经有12种,用下面的公式,在000829上可以全部显示出来。当TYPE取大于等于12的数时,都显示黄球。
当TYPE取0时,显示的是笑脸(这个公式中没有做进去,自己可以试一下)。
B:="FENG2.HD";
D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1);
A:=D>REF(D,1);
DRAWICON(REF(A,1),1.05*H,1);
DRAWICON(REF(A,2),1.05*H,2);
DRAWICON(REF(A,3),1.05*H,3);
DRAWICON(REF(A,4),1.05*H,4);
DRAWICON(REF(A,5),1.05*H,5);
DRAWICON(REF(A,6),1.05*H,6);
DRAWICON(REF(A,7),1.05*H,7);
DRAWICON(REF(A,8),1.05*H,8);
DRAWICON(REF(A,9),1.05*H,9);
DRAWICON(REF(A,10),1.05*H,10);
DRAWICON(REF(A,11),1.05*H,11);
DRAWICON(REF(A,12),1.05*H,12);
DRAWICON(REF(A,13),1.05*H,13);
DRAWICON(REF(A,14),1.05*H,100);{主图叠加}
当红球和绿球连续显示时,立体感会强一些。
DRAWICON(C>=MA(C,30),MA(C,30),10);
DRAWICON(C 3、PRICE是用于定位图标的位置的。一般用1.01*H,或者0.99*L等。现在可用ALIGN(0-5)指定对齐位置。 用这个公式来试(主图叠加) B:="FENG2.HD"; D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1); A:=D>REF(D,1); E:=REF(H,1); DRAWICON(A,E,10),ALIGN0; DRAWICON(A,E,11),ALIGN1; DRAWICON(A,E,12),ALIGN2; DRAWICON(A,E,3),ALIGN3; DRAWICON(A,E,4),ALIGN4; DRAWICON(A,E,5),ALIGN5; 可以初步得出结论: ALIGN0:信号出现在PRICE的正中; ALIGN1:信号出现在PRICE下边(十分靠近); ALIGN2:信号出现在PRICE上边(十分靠近); ALIGN3:信号出现在主图的中间; ALIGN4:信号出现在主图的最上边; ALIGN5:信号出现在主图的最下边; 在高低点上作图标,可以使高低点更明确了。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,11),ALIGN1; DRAWICON(B,H,10),ALIGN2;{主图叠加} 4、可以自由调用MyBMP.BMP图到显示位置,大大增强了输出的效果。你只要看到好看的图,可以随时抓拍过来,做成BMP文件,放到FmlDLL子目录下,就可以调用了。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,'PIG'),ALIGN1; DRAWICON(B,H,'PIG'),ALIGN2;{主图叠加。如果你没有PIG.BMP文件,则不可显示。} DRAWICON(1,MA(C,5),'S28'); DRAWICON(1,MA(C,10),'S31'); DRAWICON(1,MA(C,20),'S14'); DRAWICON(1,MA(C,30),'S25');{主图叠加。如果你想要这个公式有显示,可到楼下下载,解压缩到FmlDLL子目录下} 内有40个不同颜色的小球。 二、 函数: DRAWLINE 参数: 无 用法: DRAWLINE(COND1,PRICE1,COND2,PRICE2,EXPAND),当COND1条件满足时,在PRICE1位置画直线起点,当COND2条件满足时,在PRICE2位置画直线终点,EXPAND为延长类型。 说明: 在图形上绘制直线段。 示例: DRAWILINE(HIGH>=HHV(HIGH,20),HIGH,LOW<=LLV(LOW,20),LOW,1);表示在创20天新高与创20天新低之间画直线并且向右延长。 DRAWLINE是唯一一个一句里面用到两个COND的绘图函数。因为它需要两个点来决定一直线。 COND1相当于指定K线位置(横坐标),PRICE1相当于是指定价位(纵坐标),这样一个点在平面上的位置就决定了。 DRAWLINE是从第一点画到第二点的,即有起点与终点的顺序关系:第一点出现的时间,要在第二点之前。否则线是画不出来的。 EXPAND,扩张、发展,这里是延伸的意思吧。一般取0,不延长;取1,延长。实际上是取大于等于1的数就延长,小于1就不延长。 DRAWLINE目前支持POINTDOT、LINETHICK、COLOR、SHIFT这四个描述函数。 举个例子吧。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,11),ALIGN1; DRAWICON(B,H,10),ALIGN2; D:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1); E:=D>REF(D,1); F:=BACKSET(E,REF(BARSLAST(B),1)+2); G:=F>REF(F,1); DRAWLINE(G,H,E,H,1),pointdot,linethick1,coloryellow;{主图叠加} 这根线有些趋势线的意思了。由于趋势线的主观性颇强,只有多设参数才能满足多数人的要求,以后有机会再作介绍。 DRAWLINE画出的线,应该比手工画出的线精确一些。(DRAWLINE画线的灵敏度,要比手工画线低,所以说DRAWLINE画出的线精确,就未必对。) 主要用于画斜线,水平线我们一般可以另想办法。因为在图中显示直线,并非DRAWLINE的“专利”。 比如: A:="FENG2.LD"; B:="FENG2.HD"; D:=BACKSET(ISLASTPERIOD,BARSLAST(A)+1); E:=D>REF(D,1); F:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1); G:=F>REF(F,1); 前高:REF(H,BARSLAST(G)); 前低:REF(L,BARSLAST(E));{主图叠加} 这里出个“难题”吧: 怎么在主图上画一根直线?直线的高度是今天收盘价。就是这个样子的: 三、 函数: DRAWTEXT 参数: 无 用法: DRAWTEXT(COND,PRICE,TEXT),当COND条件满足时,在PRICE位置书写文字TEXT,可显示多行文本,用"\n"换行。 说明: 在图形上显示文字。 示例: DRAWTEXT(CLOSE/OPEN>1.08,LOW,'大阳线');表示当日涨幅大于8%时在最低价位置显示'大阳线'字样。 DRAWTEXT(CLOSE/OPEN>1.08,LOW,'好呀\n大涨啦');可显示多行文本,用"\n"换行; 在某些满足条件的地方直接显示文字或字符,比显示图标要更直观一些。 此函数可以用ALIGN来定位水平位置。而ALIGN用在DRAWICON上定位的是高低的位置。 从下面例子可以看到,ALIGN(0~2)定义水平位置的意义: ALIGN0:居中; ALIGN1:偏右; ALIGN2:偏左。 也可以用SHIFT函数进行向右水平移位。 所显示的文字或字符,可以用COLOR函数来定义颜色。至于文字的大小,则采用系统默认的大小,在此函数中无法定义。 此函数单独使用有其用途,与DRAWNUMBER配合应用时,效果更不错。后面介绍到DRAWNUMBER时再举例子。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,11),ALIGN1; DRAWICON(B,H,10),ALIGN2; D1:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1); E1:=D1>REF(D1,1);{离目前最近的一个高点} D2:=BACKSET(E1,REF(BARSLAST(B),1)+2); E2:=D2>REF(D2,1);{倒数第二个高点} D3:=BACKSET(E2,REF(BARSLAST(B),1)+2); E3:=D3>REF(D3,1);{倒数第三个高点} DRAWTEXT(E1,H*1.01,'☆TEXT:'),COLORRED,ALIGN0; DRAWTEXT(E2,H*1.01,'★TEXT:'),COLORGREEN,ALIGN1; DRAWTEXT(E3,H*1.01,'▓TEXT:'),COLORYELLOW,ALIGN2;{主图叠加} 四、 函数: POLYLINE 参数: 无 用法: POLYLINE(COND,PRICE),当COND条件满足时,以PRICE位置为顶点画折线连接。 说明: 在图形上绘制折线段。 示例: POLYLINE(HIGH>=HHV(HIGH,20),HIGH);表示在创20天新高点之间画折线。 POLY,多个的。 支持POINTDOT、LINETHICK、COLOR、SHIFT这四个描述函数。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,11),ALIGN1; DRAWICON(B,H,10),ALIGN2; POLYLINE(A,L),POINTDOT,COLORGREEN; POLYLINE(B,H),LINETHICK2,COLORMAGENTA;{主图叠加} 五、 函数: STICKLINE 参数: 无 用法: STICKLINE(COND,PRICE1,PRICE2,WIDTH,EMPTY),当COND条件满足时,在PRICE1和PRICE2位置之间画柱状线,宽度为WIDTH可为0---100(10为标准间距),EMPTH不为0则画空心柱。 说明: 在图形上绘制柱线。 示例: STICKLINE(CLOSE>OPEN,CLOSE,OPEN,0.8,1);表示画K线中阳线的空心柱体部分。 再说明三点: 1、PRICE1和PRICE2没有顺序关系,即何者在前何者在后都不影响语句的执行。 2、WIDTH宽度,支持小数。用1和用0.1,会有很大的差别。取7时和主图的K线宽度差不多。 以下的副图公式,画出的K线,与主图中显示的K线差不多。有些“主图叠加公式”,叠加在副图中也未尝不可了。 STICKLINE(C>O OR (C=O AND C>REF(C,1)),O,C,7,1),colorred;{画出红K实体} STICKLINE((C>O AND C<>H) OR (C=O AND C>REF(C,1)),C,H,0.1,0),colorred;{画出红K上影线} STICKLINE((C>O AND L<>O) OR (C=O AND C>REF(C,1)),L,O,0.1,0),colorred;{画出红K下影线} STICKLINE(C STICKLINE(C MA(C,5); 3、用STICKLINE可以用两种方法做出多色彩K线效果。 一种是横向的,将K线实体从O到C分为N等份,每个小格中放入不同的但比较连续的颜色。 这里随便举个例子,N取4,只对阳线加了效果。其它变化,道理是一样的。 A:=C-O; B:=C>O; STICKLINE(B,O,O+A/4,8,0),COLORFF99FF; STICKLINE(B,O+A/4,O+A*2/4,8,0),COLORFF00FF; STICKLINE(B,O+A*2/4,O+A*3/4,8,0),COLOR9900FF; STICKLINE(B,O+A*3/4,O+A,8,0),COLOR0000FF;{主图叠加} 还有一种方法就是纵向的了。先在较宽的K线中加颜色,然后把宽度逐步收窄,再加颜色覆盖以前的的,这样从纵向看,一根K线中就有不同颜色了。效果做得好的,可以做到赏心悦目。 B:=C>O; STICKLINE(B,O,C,8,0),COLORFF99FF; STICKLINE(B,O,C,6,0),COLORFF00FF; STICKLINE(B,O,C,4,0),COLOR9900FF; STICKLINE(B,O,C,2,0),COLOR0000FF;{主图叠加} 六、 函数: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION) 参数: NUMBER(可以为常数或数组序列),PRECISION为精度(取值范围0-3),即显示到小数点后PRECISION位。 用法: DRAWNUMBER(COND,PRICE,NUMBER,PRECISION),当COND条件满足时,在PRICE位置书写数字 说明: 在图形上显示数字。 示例: DRAWNUMBER(CLOSE/OPEN>1.08,HIGH,(CLOSE-OPEN)/OPEN*100,2);表示当日涨幅大于8%时在最低价位置显示涨幅(相对开盘价的百分比)。 这个函数的特色是,在NUMBER位置可以放变量。 NUMBER,数字。DRAWNUMBER是DRAWTEXT的“兄弟”,也可以用ALIGN(0~2)来定义水平位置,方法相同。 A:="FENG2.LD"; B:="FENG2.HD"; DRAWICON(A,L,11),ALIGN1; DRAWICON(B,H,10),ALIGN2; D1:=BACKSET(ISLASTPERIOD,BARSLAST(B)+1); E1:=D1>REF(D1,1);{离目前最近的一个高点} D2:=BACKSET(E1,REF(BARSLAST(B),1)+2); E2:=D2>REF(D2,1);{倒数第二个高点} DRAWTEXT(E1,H*1.02,'高点价:'),COLORGREEN,ALIGN2; DRAWNUMBER(E1,H*1.02,H,2),COLORGREEN,ALIGN1; DRAWTEXT(E2,H*1.02,'高点价:'),COLORYELLOW,ALIGN2; DRAWNUMBER(E2,H*1.02,H,2),COLORYELLOW,ALIGN1;{主图叠加} 七、 函数: FILLRGN(COND,PRICE1,PRICE2) 参数: 用法: FILLRGN(COND,PRICE1,PRICE2),当COND条件满足时,以COLOR填充PRICE1和PRICE2的区间 说明: 绘制指标区间彩带。 示例: FILLRGN(MA1>MA2, MA1,MA2),colorred; 表示MA1>MA2时以红色填充MA1和MA2之间的区域。 FILL,充满,填充。RGN可能是REGION,地区,地域。 用这个函数,再加DRAWICON可以调用BMP图象文件的功能,可以作出象风景一样的图。 这里举个简单的例子: A:=MA(C,5); B:=MA(C,10); FILLRGN(1,H*1.01,H*1.02),COLORFFFF66; FILLRGN(A>=B,A,B),COLORMAGENTA; FILLRGN(A FILLRGN(1,L*0.99,L*0.98),COLORFF99CC;{主图叠加} 416 八、 函数: PARTLINE(COND,PRICE) 参数: 用法: PARTLINE(COND,PRICE),满足COND条件绘制PRICE连线。 说明: 分段绘制指标线 示例: PARTLINE(C>REF(C,1),C),colorred;表示收盘大于前收以红色绘制收盘价连线。 PART,部分,局部。值得一提的是,PARTLINE支持多种描述函数,如例所见。 A:=MA(C,5); B:=MA(C,10); PARTLINE(A>=B,A),COLORRED,POINTDOT; PARTLINE(A>=B,B),COLORGREEN,CIRCLEDOT; PARTLINE(A PARTLINE(A 九、 函数: VERTLINE(COND) 参数: 用法: VERTLINE(COND),在COND条件满足的周期处画垂直线 说明: 在图形上绘制垂直线段 示例: DVERTLINE(HIGH>=HHV(HIGH,20);表示在创20天新高时画垂直线 VERTICAL,垂直的。 VERTLINE目前可以用POINTDOT、LINETHICK、COLOR、SHIFT这四个描述函数来描述。 这个函数,主要是用于画线看时间的。费波纳契周期,可以用这个函数画出来的。 这里举个例子,把日K线中每月的第一个交易日中,画一根垂直线。 A:=MONTH>REF(MONTH,1); VERTLINE(A),COLOR808040,POINTDOT;{主图叠加} 十、 函数: DRAWYITEXT(COND,PRICE,CODE,TYPE) 参数: 用法: 在COND在图形上显示易学文字,可ALIGN0-3定义对齐方式。 说明: 当COND条件满足时,在PRICE位置书写TYPE类型的CODE的对应文字 示例: DRAWYITEXT(CLOSE/OPEN>1.05,LOW, GANZHI(DATE*100, 2),0),表示当日涨幅大于5%时在最低价位置显示日干支; 如下例子:K线卦 kk:=KGUA(0,6); 十一、 函数: DRAWBKBMP(COND,BMP) 参数: 用法: 当图形上最后一组COND条件满足时,以MyBMP做背景: 说明: 根据条件设置背景图 示例: 因为系统K线先画,会被后来的指标图覆盖了 这种公式K线要自己画,以下供参考 STICKLINE(c 把公式设为主图、主图叠加 十二、 函数: DRAWGBK(COND,COLOR1, COLOR2,D) 参数: 用法: 当COND条件满足时,以COLOR1到COLOR2渐变色填充子图区域,D=0表示从左到右,D=1表示从上到下 说明: 绘制渐变背景色 示例: DRAWGBK(C>O, COLORRGB(255,0,0), COLORRGB(255,255,0),0);
TYPE为常数,取0--1,分别表示计算的是干支、64卦,CODE为对应的代码
DRAWYITEXT(REF(CLOSE,2)>REF(OPEN,2) AND REF(CLOSE,1)>REF(OPEN,1) AND CLOSE>OPEN, LOW, KGUA(1, 1), 1 ),表示连二阳时在最低价位置显示K线卦象。
DRAWYITEXT(c>0,mod(BARSCOUNT(c),6),kk,1); {附图指标}
DRAWBKBMP(c>0,'mybmp');
STICKLINE(c>o or c=o and c>ref(c,1),l,h,0.1,0),colorred;
STICKLINE(c>o or c=o and c>ref(c,1),o,c,7,0),colorred;
表示图形上最后一组C>O时从左到右从红色到黄色渐变填充子图。