buick gl8油耗:飞狐基本函数简介之数学函数、统计函数

来源:百度文库 编辑:偶看新闻 时间:2024/05/04 16:33:18

飞狐基本函数简介之数学函数
飞狐的数学函数,主要支持三角函数、对数、和幂的运算。

先回忆一下。如图,

sin(X)=a/c,cos(X)=b/c,tg(X)=a/b,ctg(X)=b/a。这里没有提供ctg(X)函数,是因为正切和余切互为倒数关系。

实际上正弦值的平方加上余弦值的平方等于1,有正弦函数之后,余弦函数也可以求出来了。

图中的角度X,一般有两种表达方式,一种是一个圆周为360度,还有一种是一个圆周为2π弧度。

这里的三角函数中的数组或常数X,取的都是弧度。

 

一、

函数: SIN(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的正弦值

函数: COS(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的余弦值

正弦波是自然界最常见的波形。正弦波和余弦波的波形是一样的,无非是相差π/2弧度(90度)的相位。

主要应用在技术分析中的周期分析上。

那么在指标中画出正弦波应该是很容易了吧。

A:=COUNT(C,0)=1;

B:=BARSLAST(A);{1,2,3,4,.....}

正弦值:SIN(B);

余弦值:COS(B);

正余平方和:POW(正弦值,2)+POW(余弦值,2);

正弦180度:SIN(3.1415926);

但是看起来不太光滑:(

 

究其原因,是因为正弦波的周期是2π,当X取值较大时(1,2,3,...)时,返回值就不太“精密”了,也就是说构成波形的点数不够。

这个就好办了,我们可以把数列的值都减小N倍,再来看看效果。

A:=COUNT(C,0)=1;

B:=BARSLAST(A)/N;

正弦值:SIN(B);

余弦值:COS(B);{参数N:10.1.999}

调整参数N,就可以发现,N取值越大,波形就越光滑。当N取3时,就有不错的光滑度。当N取10时,就非常光滑了。

N调整得越大,在2π周期中的点数就越多,一个完整波形的周期内所含的日期差(在日K线中)就越大了。

 

二、

函数: TAN(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的正切值

TANGENT,正切。

正切值的绝对值,最小是0,最大趋向于无穷大。

当正弦值接近1时,正切值接近于无穷大。

A:=COUNT(C,0)=1;

B:=BARSLAST(A)/N;

正弦值:SIN(B);

余弦值:COS(B);{参数N:10.1.999}

TAN(B);

三、

函数: ASIN(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的反正弦值

函数: ACOS(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的反余弦值

函数: ATAN(X)

参数: X为数组或常数

返回: 数组或常数

说明: 返回X的反正切值

Y=SIN(X),是已经知道X的弧度值求正弦值。反正弦值是已经知道正弦值,去求弧度是多少。其它类推。

ASIN(1);

返回1.57080弧度,相当于是π/2。

四、

函数: LOG(X)

参数: X为数组或常数

返回: 数组或常数

说明: 取得X的10为底对数

示例: LOG(100) 等于2

Y是10的N次方值,那么LOG(Y)=N。


五、

函数: LN(X)

参数: X为数组或常数

返回: 数组或常数

说明: 以e为底的对数

示例: LN(CLOSE) 求收盘价的对数

函数: EXP(X)

返回: X为数组或常数

参数: 数组或常数

说明: 为e的X次幂

示例: EXP(CLOSE) 返回e的CLOSE次幂

LN(X)是取自然对数。自然数e=2.718281828...

呵呵,连自然数都到股市中来了。

EXP(X)在正态分布中要用到,可。。。晕,不说了。

六、

函数: POW(A,B)

参数: A、B为数组或常数

返回: 数组或常数

说明: 返回A的B次幂 

示例: POW(CLOSE,3)

求得收盘价的3次方

函数: SQRT(X)

参数: X为数组或常数

返回: 数组或常数

说明: 为X的平方根

示例: SQRT(CLOSE) 收盘价的平方根

POWER,幂。SQUARE ROOT,平方根。

POWER(A,B)中的B支持小数,即可用0.5,那么POW(A,0.5)=SQRT(A)了。

POW(C,0.5);

SQRT(C);

这两根线是一样的。

飞狐基本函数简介之统计函数
这组函数,是统计学中的最典型的几个指标,在基本函数中提供了算法。有几个是可以相互转换的,看似众多,实际上没有几个。

“统计学理论划分成描述统计学和推导统计学两部分。描述统计学指用图表达资料数据,比如用一张标准的线图展示价格历史。推导统计学则指从资料推导出概括的、预测的或推延性的结论。所以价格图表属于前者的范畴,而针对价格图表进行的技术分析则属于推导统计学的范畴。

综合起来,技术分析以过去的价格数据预测未来,有充分的统计学根据。”<期货市场技术分析>P16

实际上,我们常用的技术指标,都自觉或不自觉地利用了统计学中的相关原理。比如均线指标MA(C,N),是N个周期中收盘价的算术平均值,就利用了统计学中集中趋势度量法的原理。

先回忆一下统计学中几个指标的算法。

统计对象可以看成是一个数列,数列中数据的总个数为N,以今天(2002.11.22)五天内的600036招商银行收盘价为例,N就为5。数列的内容为:{9.17,9.24,9.11,8.85,8.87}。

1、算术平均值:数据总和除以总个数N。

(9.17+9.24+9.11+8.85+8.87)/5=9.048。

可以用公式MA(C,5),从今天的值上看出。

2、偏差:每个数据,减去算术平均值的结果。

9.17-9.048=0.122,

9.24-9.048=0.192,

9.11-9.048=0.062,

8.85-9.048=-0.198,

8.87-9.048=-0.178,

各偏差相加,应该是等于0的。

3、平均绝对偏差:将偏差的绝对值相加,除以总个数N。

(0.122+0.192+0.062+0.198+0.178)/5=0.150

4、(总体样本)方差:将偏差的平方相加,总和除以总个数N。用公式可以这样算:

(POW(0.122,2)+POW(0.192,2)+POW(0.062,2)+POW(0.198,2)+POW(0.178,2))/5=0.025

方差的算法,经过化简,也可以这样算:每个数据的平方的平均数,减去平均数的平方。

在公式里就可以这样编了:

MA(POW(C,2),5)-POW(MA(C,5),2);{0.025}

5、估算样本方差:是总体方差的N/(N-1)倍。

0.025*5/(5-1)=0.031

估算样本方差,总比总体样本方差大一点,当N够大时,两者趋于相等。

6、(总体)标准差:方差的开方。

POW(0.025,0.5);{0.158}

7、估算标准差:估算样本方差的开方。

POW(0.031,0.5);{0.176}

同样,估算标准差也比总体标准差大一点,当N够大时,两者趋于相等。

8、最小二乘法求回归直线方程:放在后面讲。

以下的例子,也以在今天(2002.11.22)五天内的600036招商银行收盘价为例。

一、

函数: AVEDEV(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: 平均绝对偏差

AVEDEV(C,5);{0.150}

二、

函数: DEVSQ(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: 数据偏差平方和DEVSQ

数据偏差平方和,除以N,即为方差。

DEVSQ(C,5)/5;{0.025}

DEVSQ(C,5);{0.126}

三、

函数: VARP(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: X的N日总体样本方差

总体样本方差用数据偏差平方和,已经求出了,看看一样吗?

DEVSQ(C,5)/5;{0.025}

VARP(C,5);{0.025}

四、

函数: VAR(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: X的N日估算样本方差

估算样本方差是总体方差的N/(N-1)倍,看看一样吗?

VARP(C,5)*(5/(5-1));{0.032}

VAR(C,5);{0.032}

五、

函数: STDP(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: X的N日总体标准差

总体标准差,即为总体样本方差的开方,看看一样吗?

POW(VARP(C,5),0.5);{0.159}

STDP(C,5);{0.159}

六、

函数: STD(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: X的N日估算标准差

估算标准差,即为估算样本方差的开方,看看一样吗?

POW(VAR(C,5),0.5);{0.178}

STD(C,5);{0.178}

好了,以上六个统计函数,除了第一个,其它五个,只要求出方差,就可以找到相应关系,全部求出来。而方差,可以用公式MA(POW(C,2),5)-POW(MA(C,5),2);求出,所以说,新东西只有一个:平均绝对偏差。

以上六个函数中的N,目前均不支持序列变量,但可以用参数来调整。

下面介绍线性回归的概念,仍以前例为例。

如图,坐标中的各点不存在明确的关系,它们不在同一直线上,也不在同一曲线上。但仔细观察可以看到,它们还是存在着一定的相关关系,图a中的点分布在一根直线附近,图b中的点分布在一根曲线(抛物线)附近。

在图a中,如果能够画出一根直线,使各点到直线的垂直距离总和达到最小,那么这根直线无疑是很有参考价值的,用股市中的行话说,就是这根直线代表了点以后的发展趋势。这种分析方法,就是统计学中的回归分析法。

图a中的X轴,相当于K线图中的时间轴,Y轴相当于价格轴,一个点相当于是由两个变量决定位置。

两个变量之间的回归分析称为简单回归或一元回归,三个以上变量之间的回归分析称为复回归或多元回归。如果变量间相关关系表现为线性相关的回归称为线性回归,表现为曲线相关的回归称为非线性回归。所谓一元线性回归,则是指两个变量之间表现为线性相关关系的回归。

 

一元线性回归的方法,就是在众多的点中,找到一根直线,而这根直线,最能代表众多点的平均“趋势”。

直线的表达方程是:y=a+bx。只要两个参数a、b定下来,直线的位置就定了。

求参数a、b的方法一般有两种,一种较为简便,但精度不够,称为平均数法。还有一种精度较高,应用也最多,叫最小二乘法。可想而知,飞狐中的线性回归预测值,是根据最小二乘法求出来的。这里就只介绍最小二乘法。

设在众多点中穿过的回归直线的方程是y'=a+bx。而每个点的垂直高度为y。那么对应于每个点,都可得到类似于偏差的值y-y'。这些值的平方的总和达到最小,而求出参数a、b,就是最小二乘法的基本原理。

y-y'=y-a-bx。每个点,都有对应的x、y值,那么将这些值,分别代入(y-a-bx),求平方,最后进行累计。最终的表达式Q中,就只有a和b两个变量了。为使Q具有最小值,必须使其对a,b的偏导数等于0。由这两个等式中,就可以求出a、b的值了。

 

同例,x:{0,1,2,3,4}, y:{9.17,9.24,9.11,8.85,8.87}

     xy:{0,9.24,18.22,26.55,35.48}

     x的平均值是:(0+1+2+3+4)/5=2,x的平均值的平方是:4,y的平均值是:9.048

     x平方{0,1,4,9,16},x平方总和是:30

   b=(89.49-5*2*9.048)/(30-5*4)=-0.99/10=-0.099

     a=9.048-(-0.099*2)=9.246

y=9.246-0.099*x。这就是我们求出的回归直线方程。

在前四天,y值为9.246,在今天,y=9.246-0.099*4=8.85。

有了这两个值,就可以在主图上画线了:

A:=BACKSET(ISLASTBAR,5);

B:=A>REF(A,1);

DRAWICON(A,C,10);

DRAWLINE(B,9.246,ISLASTBAR,8.85,0);

{主图、主图叠加}

 

各位看到,计算过程比较麻烦,一般只要了解回归线的意义即可。具体计算,也有以下两个基本函数帮忙。

七、

函数: FORCAST(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: X的N周期线性回归预测值

示例: FORCAST(CLOSE,10) 表示求10周期线性回归预测

用最小二乘法,求出N周期内,X的一元线性回归线上的当天的值。与以上介绍的a值不同,a值是(N-1)周期前的回归线上的值。N取值为1时没有意义。

FORCAST(C,5);{8.85}

八、

函数: SLOPE(X,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: 为X的N周期线性回归线的斜率

示例: SLOPE(CLOSE,10) 表示求10周期线性回归线的斜率

用最小二乘法,求出N周期内,X的一元线性回归线的斜率,相当于以上介绍的b值。在K线图上是(价差/时间差)的关系,与角度没有任何关系。N取值为1时没有意义。

SLOPE(C,5);{-0.099}

那么有了这两个函数,要画出回归线还是不容易。今天的回归线的值和斜率知道了,可(N-1)天之前的回归线上的值(相当于前面说的a值)还是不知道,因为指标均为序列变量,无法倒推。

一般来说,有两种方法,一种是全用基本函数,用起来有点麻烦,要调整参数。还有一种是借用VBS来倒推数据。

留作思考题吧。

九、

函数: CORR(X1,X2,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: 求2个序列间的相关系数。

示例: CORR(CLOSE,HIGH,10)表示求10周期VAR1与VAR2的相关系数

转贴《教育统计学》中,对相关系数的描述:

相关系数

在教育研究中,常涉及到两个事物(变量)的相互关系问题,例如,学习成绩与非智力因素的关系,数学成绩与物理成绩的关系,男女生学习成绩的关系,等等。其关系表现为以下三种变化;第一,正相关:一个变量增加或减少时,另一个变量也相应增加或减少;第二,负相关:一个变量增加或减少时,另一个变量却减少或增加;第三,无相关:说明两个变量是独立的,即由一个变量值,无法预测另一个变量值。统计学中,就用“相关系数"来从数量上描述两个变量之间的相关程度,用符号“r"来表示。

相关系数取值范围限于:-1≤r≤+1


PHP代码:--------------------------------------------------------------------------------
相关系数表示的意义

相关系数(r) 0.00   0.00-±0.3   ±0.30-±0.50
相关程度     无相关  微正负相关    实正负相关

相关系数(r) ±0.50-±0.80     ±0.80-±1.00
相关程度      显著正负相关       高度正负相关
--------------------------------------------------------------------------------
相关系数函数CORR,可以比较两只个股或个股与大盘的指标或价格在N周期内走势的相似程度,函数返回的数值越大,相似程序越高。

下面是最后N周期内,个股与大盘收盘价走势相似程度的示例代码:

ts0:=barssince(c);
ts1:=barslast(barssince(backset(islastbar,N+1))=0);
ts:=if(ts0bl:=ref(IndexC/C,Ts);{确定基准日压缩比率}
fc:c*bl/bl;
fIndexC:IndexC/bl;{按比率压缩大盘指数,以便跟个股收盘比较}
相似程度:CORR(fc,fIndexC,N),linethick0;

简单的应用方法:
1、指标作为副图指标,可通过对“相似程度”排序,找出近期走势跟大盘相似程度较高的个股。
2、也可以把代码中的IndexC换成其它作为样本的个股,找出同类走势的个股。

代码中,有一行:
fc:c*bl/bl;

大家可能会有疑问,“bl/bl”不是等于1吗?乘以1那不是多此一举?
不妨在代码中删除“*bl/bl”,再试试效果。
您理解了吗?这是一个小技巧:)

 

十、

函数: CORRTPL(TPLNAME,X,D,N)

参数: X为数组,N为统计周期

返回: 返回数组

说明: CORRTPL(TPLNAME,X,D,N),求与模板相关系数。
D为常数,表示0:开盘价,1:最高价,2:最低价,3:收盘价,4:成交量,5:成交额
N表示计算最后多少组,为0表示计算所有,用于当前选股时设为1可大大减小计算量

示例: CORRTPL('一马平川',CLOSE,3,1)表示求收盘价线与一马平川收盘价线的最后一组的相关系数