大连火车站到发现王国:飞狐基本函数简介之指标函数
来源:百度文库 编辑:中财网 时间:2024/05/08 06:17:28
飞狐基本函数简介之指标函数
所谓指标函数,就是头疼函数。一些指标的算法极为繁琐,做成基本函数,用起来就方便了。
我自己也是摸着石头过河。
一、
函数: ZIG(K,N)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等。
返回: 返回数组
说明: 当价格变化量超过N%时转向
示例: ZIG(3,5) 表示收盘价的5%的ZIG转向
ZIG(MA(C,20),5)表示均线的5%的ZIG转向
ZIG,之字形。
1、K可以作为参数调整,也可以直接写其它的指标线,如"kd.k"。N也可以做成参数调整。
2、在K线中,ZIG只能对一根指标线进行转向处理。要想高点在H位置,低点在L位置,ZIG是做不到的。
3、ZIG到底是如何体现“未来”的?即它是怎么画出来的?见最后的说明。
4、ZIG输出的是数值,不是直线。
5、ZIG一般使用在看波浪、看形态上。
ZIG函数是未来函数之第二大嫌疑。在交易系统中用未来函数,就是用BACKSET或ZIG,可以使许多人“梦想成真”。
由于“未来函数”在交易系统中可以大大作弊,才使其在指标和选股公式中也一起“臭名昭著”。
二、
函数: PEAK(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波峰的数值
示例: PEAK(1,5,1) 表示%5最高价ZIG转向的上一个波峰的数值
PEAK(MA(C,20),5,1) 表示均线的5%的ZIG转向的上一个波峰的数值
PEAK,高峰。
这个函数可以取到ZIG波峰的数值。如果K取1,波峰取的是H。如果K取3,波峰是C的波峰,可不是H。
三、
函数: PEAKBARS(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波峰到当前的周期数
示例: PEAKBARS(1,5,1)
表示%5开盘价ZIG转向的上一个波峰到当前的周期数
PEAKBARS(MA(C,20),5,1)表示均线的5%的ZIG转向的上一个波峰到当前的周期数
这个函数用来定波峰的位置的。有了位置,画两根线试试。
ZIG(1,N);
A1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,1)+1);
A2:=A1>REF(A1,1);
B1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,2)+1);
B2:=B1>REF(B1,1);
C1:=BACKSET(ISLASTBAR,PEAKBARS(1,N,3)+1);
C2:=C1>REF(C1,1);
DRAWLINE(B2,H,A2,H,1);
DRAWLINE(C2,H,B2,H,1);{N:3.1.99,主图叠加}
四、
函数: TROUGH(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波谷的数值
示例: TROUGH(2,5,2) 表示%5最低价ZIG转向的前2个波谷的数值
TROUGH(MA(C,20),5,2) 表示均线的5%的ZIG转向的前2个波谷的数值
TROUGH,水槽,波谷。
与PEAK对应。
五、
函数: TROUGHBARS(K,N,M)
参数: N为常数,参数K可为序列或常数,K取0--3,表示0:开盘价,1:最高价,2:最低价,3:收盘价;也可为ma(close,5)等,M为大于等于1的整数
返回: 返回数组
说明: 表示之字转向ZIG(K,N)的前M个波谷到当前的周期数
示例: TROUGHBARS(2,5,2) 表示%5最低价ZIG转向的前2个波谷到当前的周期数
TROUGHBARS(MA(C,20),5,2) 表示均线的5%的ZIG转向的前2个波谷到当前的周期数
对应于PEAKBARS。
这样在应用时,ZIG的各点的数值是知道的,波峰和波谷的数值和位置也可以引用到了。
“综合运用”:
ZIG(3,N),CROSSDOT;{主图叠加}
ZIG(3,N),CIRCLEDOT,COLORMAGENTA;
A:=PEAKBARS(3,N,1);
B:=TROUGHBARS(3,N,1);
B>A,COLORGREEN;
A>B,COLORRED;{五彩K线}
六、
函数: SAR(N,S,M)
参数: N为计算周期,S为步长,M为极值
返回: 返回数组
说明: 计算抛物转向点
示例: SAR(10,2,20)
表示计算10日抛物转向,步长为2%,极限值为20%
STOP AND REVERSE,转向点指标,停顿指标,又称抛物线指标,全称为抛物线转向指标。
SAR指标,也是王尔德(RSI的发明人)发明的,主要用于与趋向指标DMI(DIRECTION MOVEMENT INDEX)结合使用。
SAR一般以圆圈的形式输出,实际上也是输出数值的,形式可以用描述函数进行改变。
说是抛物转向,输出的并不是标准的抛物线。
目前的转向指标,典型的有三个,ZIG、SAR(因为做成基本函数了,所以有数值输出),还有一个是结构波浪,可以用基本函数做出,但只能输出直线,不能输出完整的数值。
SAR的画法,在众多的股票软件中,是一种百花齐放的局面。由于飞狐提供了开放可定制的公式平台,所以,只要有明确思路的SAR画法,都可以在飞狐实现。飞狐中基本函数SAR的具体画法在最后介绍。
SAR的画法,矛盾集中在数个方面,所以没有一种方法能够一统江山。
1、起算点,是从看涨开始还是从看跌开始?怎么判断画前的看涨和看跌?
2、转向条件满足时,是迟一个周期跳转还是迟两个周期跳转?
3、跳转后的第二个周期,以0步长计算,还是以STEP步长计算?
4、当N取1时,应不应该有输出?等等
飞狐的主要问题是在起算点就满足跳转条件时,会延迟一个周期跳转,而后面的就不延迟跳转了。分析家的问题是起算点有时是找不准前期极值的。这些都不是大问题,因为后面的计算是趋向于统一的,起算点附近的SAR问题,一般无人问津。
七、
函数: SARTURN(N,S,M)
参数: N为计算周期,S为步长,M为极值
返回: 返回数组
说明: 若发生向上转向则返回1,若发生向下转向则返回-1,否则为0
由于可以返回三个值,就可以判断是向上的跳转还是向下的跳转。
SA:=SAR(3,2,20);
A:=SARTURN(3,2,20);
B:=A=1;
D:=A=-1;
E:=BARSLAST(B)>BARSLAST(D);
F:=NOT(E);
DRAWICON(E,SA,10);
DRAWICON(F,SA,11);{主图叠加}
如果想颜色更鲜艳一些,可调用BMP文件,把最后两句改为:
DRAWICON(E,SA,'S31');
DRAWICON(F,SA,'S28');
八、
函数: COST(N)
参数: N为常数,表示百分比
返回: 返回数组
说明: 计算成本分布情况,该函数仅对日线分析周期有效
示例: COST(10)
表示10%获利盘的价格是多少,即有10%的持仓量在该价格以下,其余90%在该价格以上,为套牢盘
函数: WINNER(A)
参数: A为数组或常数
返回: 返回数组
说明: 计算获利盘比例,该函数仅对日线分析周期有效
示例: WINNER(CLOSE)
表示以当前收市价卖出的获利盘比例,例如返回0.1表示10%获利盘
WINNER(10.5)
表示10.5元价格的获利盘比例
COST,成本。WINNER,优胜者,获利。
两者互相换算。COST是根据获利盘估算价格,WINNER是根据价格估算获利盘。
之所以说估算,是因为要精确算,必须把每笔成交的价格和成交量都记录下来,一般这是很难做到的。
就算能做到,筹码分布方面的技术分析有效么?这就看各人自己的取舍了,股市中目前还没有发现包赚不赔的技术指标。
COST(WINNER(C)*100);
C;
此两者趋于相等。也说明这两个函数支持序列变量。
平均成本价的计算。将刚好完全换手的每笔成交量和成交价格相乘,然后除以这期间总的成交量,即为平均成本价。
平均成本价格:COST(50);
AA:=SUMBARS(VOL,CAPITAL);
平均成本价:SUM(C*V,AA)/SUM(V,AA);
实际上这两种方法都是估算出来的,后者的误差可能更大一些。
相当于一箱苹果是2元一斤,另两箱苹果是5元一斤。三箱苹果的平均价格就是(2*1+5*2)/(1+2)=4元。
这有点统计学中的调和平均值的味道了。筹码分布,要搞得复杂,可以计算中位值、众位值,研究正态分布、偏态分布,还有集中度、穿透力,当真是花样繁多,只能留给有兴趣的朋友自己研究了。
筹码分布的峰位在哪个价格区域,是筹码分布爱好者很想知道的一个指标。用COST可以估算出来,留作思考题吧。
九、
函数: PPART(N)
参数: N为常数
返回: 返回数组
说明: 远期成本比例,表示N周期前的成本占总成本的比例,如返回0.3表示30%
示例: PPART(20); 20天前的成本占总成本的比例
远期成本比例,只要把近N天之成本比例算出来,远期的自然就出来的。因为总成本为百分之百的换手率。
远期成本比例:PPART(N)*100;
A:=100*V/CAPITAL;
远期成本:100-SUM(A,N);{参数N:10.1.999}
两者基本相等。
十、
函数: PWINNER(N,X)
参数: N为常数,X为数组或常数
返回: 返回数组
说明: 远期获利盘比例
示例: PWINNER(20,CLOSE);表示20天前的那部分成本以当前收市价卖出的获利盘比例,例如返回0.2表示20%获利盘
以上几个筹码指标,在飞狐中,目前已经支持多周期分析,即在分笔、五分钟、周等周期上都有输出。
附一、ZIG线的画法。
假设在手工画线年代,ZIG线是怎么画出来的,实际上也介绍了算法。
以zig(3,5),即收盘价转向,转向要求5%,在600036招商银行上为例。
从第一根K线上的收盘价,慢慢往后看。直到当天的C,和以前的K线的最低C值相比的涨幅,或与最高C值相比的跌幅超过5%时,才在当天作出记号,称之为拐点。涨幅超过5%的,称为向上的拐点,跌幅超过5%的,称为向下的拐点。
例中,先有向下的拐点,于是第一根K线上的C值,就是高点了。在向下的拐点出现之后的每根K线上,相比较记录最低之C值。然后把当天的C值,与记录的最低C值比较,看有没有涨幅超过5%。例中,到6月24日,才产生满足条件之向上的拐点。向上的拐点出现之后,回过头,在与上一个向下的拐点之间,找到一个最低的C,作为ZIG的低点。
产生向上拐点之后,就在之后的K线中记录C的最大值。当出现当天的C值,与最大C值相比,跌幅超过5%时,记为向下的拐点。例中,到7月12日,产生向下的拐点。于是从向下的拐点回过头来,在与上一个向上的拐点之间,找到一个最高的C,作为ZIG的高点。如此循环。也就是说,ZIG的高点和低点,是根据向上和向下的拐点出来之后,回溯过去才找到的。这就是ZIG未来数据的实质所在。
在最近期间,ZIG的未来数据,要追溯到最近的一个拐点之前的一个峰点。且看最近期间的ZIG线是怎么画出的。
从最后一根K线往前,如果先出现向下的拐点,则在此拐点到目前的K线中求出最小收盘价所在的K线,为低点。这个低点可能与目前的K线重合。重合的话目前的K线为低点,不重合的话目前K线为高点。
如果先出现向上的拐点,则在此拐点到目前的K线中求出最高收盘价所在的K线,为高点。此高点与目前的K线重合,则目前的K线为高点,否则为低点。
附二、SAR的画法。
SAR(N,S,M),参数:N为计算天数,STEP=调整系数×100,MAXP=调整系数上限×100。
以sar(5,2,20),circledot;用在日线中为例。
SAR只跟K线中的H、L有关,与O、C无关。
一、起画点
当N取5时,起画点就在第六根K线上。第一步要做的事,就是由第一根K线到第五根K线判断是看涨还是看跌。如是看涨,就要把起画点画成看涨SAR,如是看跌,就要把起画点画成看跌SAR。
A:(H-REF(H,1)+L-REF(L,1))>0 AND BARSCOUNT(C)=2;
如果A成立,则先画看跌SAR(SAR在K线之上);如果A不成立,则先画看涨SAR(SAR在K线之下)。这是我的观察所得,各位不妨去看看是不是如此。就是说不管N取多少,起画点是根据第一、二根K线上的H、L决定的。
二、看涨SAR
第一个看涨SAR的值,是前五天的最低价,即REF(LLV(L,5),1);然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
第二个看涨SAR的值,是
SAR(2)=SAR(1)+AF1*(REF(HHV(H,5),1)-SAR(1)),
SAR(1)即为第一个看涨SAR的值。AF1是调整系数,如果当天的H比前五天的最高H大,则要+0.02(得0.04),否则还是取0.02。然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
第三个看涨SAR的值,是
SAR(3)=SAR(2)+AF2*(REF(HHV(H,5),1)-SAR(2)),
计算方法与求第二个看涨SAR类同,只是当天的H是否比前五天的最高H大还要判断,是的话AF2=AF1+0.02,否则取AF1。
然后看看SAR值是不是比L小,是的话继续,否则在下一天跳转。
因为没有跳转的话,REF(HHV(H,5),1)-SAR(2)的值肯定大于0,所以看涨SAR一直是向上升的。
如此循环往复,直到跳转条件成立就跳转,去画看跌SAR了。而调整系数AF的值,经过反复累积的话,最大是不能超过0.2的。
三、看跌SAR
第一个看跌SAR的值,是前五天的最高价,即REF(HHV(H,5),1);然后看看SAR值是不是比H大,是的话继续,否则要在下一天跳转。
第二个看跌SAR的值,是
SAR(2)=SAR(1)+AF1*(REF(LLV(L,5),1)-SAR(1)),
SAR(1)即为第一个看跌SAR的值。AF1是调整系数,如果当天的L比前五天的最低L小,则要+0.02(得0.04),否则还是取0.02。然后看看SAR值是不是比H大,是的话继续,否则在下一天跳转。
第三个看跌SAR的值,是
SAR(3)=SAR(2)+AF2*(REF(LLV(L,5),1)-SAR(2)),
计算方法与求第二个看跌SAR类同,只是当天的L是否比前五天的最低L小还要判断,是的话AF2=AF1+0.02,否则取AF1。
然后看看SAR值是不是比H大,是的话继续,否则在下一天跳转。
因为没有跳转的话,REF(LLV(L,5),1)-SAR(2)的值肯定小于0,所以看跌SAR一直是向下跌的。
如此循环往复,直到跳转条件成立就跳转,去画看涨SAR了。而调整系数AF的值,经过反复累积的话,最大是不能超过0.2的。
SAR没有未来之嫌,但是N、S、M的调整对SAR影响都很大,感觉灵敏性过大。