大连火车站到发现王国:飞狐基本函数简介之指标函数

来源:百度文库 编辑:中财网 时间: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影响都很大,感觉灵敏性过大。