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(ts0
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)表示求收盘价线与一马平川收盘价线的最后一组的相关系数