飞狐的数学函数,主要支持三角函数、对数、和幂的运算。
先回忆一下。如图,
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的平均
所谓指标函数,就是头疼函数。一些指标的算法极为繁琐,做成基本函数,用起来就方便了。
我自己也是摸着石头过河。
一、
函数: 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);
大盘函数,就是公式应用于个股中时,可以引用相应大盘的相应数据。
常数函数用于取得一些常数数据。
一、
函数: indexo
参数:无
返回: 数组
说明: 表示对应大盘同期的开盘价。(该函数对分笔成交分析周期无效)
函数: indexh
参数:无
返回: 数组
说明: 表示对应大盘同期的最高价。(该函数对分笔成交分析周期无效)
函数: indexl
参数:无
返回: 数组
说明: 表示对应大盘同期的最低价。(该函数对分笔成交分析周期无效)
函数: indexc
参数:无
返回: 数组
说明: 表示对应大盘同期的收盘价。(该函数对分笔成交分析周期无效)
函数: indexv
参数:无
返回: 数组
说明: 表示对应大盘同期的成交量。(该函数对分笔成交分析周期无效)
函数: indexa
参数:无
返回: 数组
说明: 表示对应大盘同期的成交额。(该函数对分笔成交分析周期无效)
当主图显示的是沪个股时,取indexc就是上证指数的收盘价,其它类推。
当主图显示的是深个股时,取indexc等就是深成指的收盘价,其它类推。
这对引用大盘相应数据是很方便的。
如果你想引用0号指数的相应数据,就要先建立0号指数(自定义指数),比如0号指数的代码是“ 宋体”>bi01”,引用时就用
”bi01$close”;
”bi01$vol”;
等。
二、
函数: indexadv
参数:无
返回: 数组
说明: 表示对应大盘同期的上涨家数。(该函数对分笔成交分析周期无效)
函数: indexdec
参数:无
返回: 数组
说明: 表示对应大盘同期的下跌家数。(该函数对分笔成交分析周期无效)
当主图显示的是沪个股时,取indexadv就是沪a股中的上涨家数。
当主图显示的是深个股时,取indexadv就是深a股中的上涨家数。
indexdec的用法一样。
这与以前在行情函数中介绍的advance和decline有点类似,不过advance、decline只能用于大盘,在主图为个股时不会有输出。
三、
函数: capital
参数:无
返回: 返回常数
说明: 返回流通盘大小,单位为手。对于a股得到流通a股,b股得到b股总股本,指数为0
前面已经用过很多次了。
流通盘万股:capital/100,linethick0;
换手率:100*v/capital,linethick0;
四、
函数: volunit
参数:无
返回: 返回常数
说明: 返回每手股数,对于股票值为100,债券为1000
这样也可据此识别股票和债券了。
五、
函数: finance(n)
返回: 返回常数
说明: 取得参数对应的基本财务数据 n 含义 单位 n 含义 单位
1 总股本 万股 29 税后利润 千元
2 `!、,d`!bb、股 万股 30 净利润 千元
3 发起人法人股 万股 31 未分配利润 千元
4 法人股 万股 32 每股未分配元
5 b股 万股 33 每股收益元
6 h股 万股 34 每股净资元
7 流通a股 万股 35 调整每股净资元
8 职工股 万股 36 股东权益比率 %
9 a2转配股 万股 37 净资收益率 %
10 总资产 千元 38 经营现金流入 千元
11 流动资产 千元 39 经营现金流出 千元
12 固定资产 千元 40 经营现金流量 千元
13 无形资产 千元 41 投资现金流入 千元
14 长期投资 千元 42 投资现金流出 千元
15 流动负债 千元 43 投资现金流量 千元
16 长期负债 千元 44 筹资现金流入 千元
17 资本公积金 千元 45 筹资现金流出 千元
18 每股公积金 千元 46 筹资现金流量 千元
19 股东权益 千元 47 现金及等价物 千元
20 主营收入 千元 48 应收帐款周转率 %
21 主营利润 千元 49 存货周转率 %
22 其他利润 千元 50 总资产周转率 %
23 营业利润 千元 51 流动比率 %
24 投资收益 千元 52 速动比率 %
25 补贴收入 千元 53 主营业务增长率 %
26 营业外收支 千元 54 税后利润增长率 %
27 上年损益调整 千元 55 净资产增长率 %
28 利润总额 千元 56 总资产增长率 %
六、
函数: dynainfo(n)
返回: 返回常数
说明: 取得参数对应的动态行情数据
n 含义 n 含义
3 前收 31 卖一量
4 今开 32 卖二量
5 最高 33 卖三量
6 最低 34 卖一价
7 最新 35 卖二价
8 总手 36 卖三价
9 现手 37 换手率
10 总额(持仓) 38 5日均量
11 均价 39 市盈率
12 涨跌 40 成交方向
13 振幅 41 总市值
14 涨幅 42 流通市值
15 委比 43 买四量
16 委差 44 买五量
17 量比 45 买四价
18 委买 46 买五价
19 委卖 47 卖四量
20 委买价 48 卖五量
21 委卖价 49 卖四价
22 内盘 50 卖五价
23 外盘 51 成交笔数
24 涨速 52 每笔均量
25 买一量
26 买二量
27 买三量
28 买一价
29 买二价
30 买三价
七、
函数: splitdata(n)
返回: 返回常数
说明: 除权数据函数
示例: splitdata(n) 取得对应除权数据
n参数表示取那种分红数据
n=0 有除权时为1,否则为0
n=1 红股,得到当时每十股送几股
n=2 配股,得到当时每十股配几股
n=3 配股价,得到当时配股价格
n=4 红利,得到当时每十股派息几元
这些常数函数,完全没有必要记忆,在公式编辑器中,点一下插入函数,马上可以查到相关的说明。
函数: explain(cond,text)
参数:
用法: explain(cond,text),在cond条件满足时在[解]中输出解盘文字
说明:在[解]中输出解盘文字
示例: explain(high>=hhv(high,20), “创20天新高”);表示在创20天新高时在[解]中输出解说。
以下是的说明:
一、①新增解盘函数 explain(cond,text);(随十字游标对应位置对应cond是否成立在[解]中显示text)
{在[解]中输出解盘文字。
用法:explain(cond,text),在cond条件满足时在[解]中输出解盘文字。
例如:explain(high>=hhv(high,20), “创20天新高”)表示在创20天新高时在[解]中输出解说。}
②新增可输出带数值的解盘函数 explainex(cond,text,number,precision,type);
{在[解]中输出带数值的解盘。
用法:explainex(cond,text,number,precision,type),在cond条件满足时在[解]中输出数值解说。precision为小数显示位数,type为0不换行,1则换行显示下一个解盘
例如:explainex(high>=hhv(high,20), “20天新高价:”,high,2,1)表示在创20天新高时在[解]中输出数值解说。}
explain,解释、说明。单输出解盘文字的,用explain;要输出带数值的解盘要用explainex。
一个公式中可以输出多个解盘函数。交易信息中的“解”中,可以输出多个公式的解盘函数。
解盘函数的输出文字或数值,颜色均可设置,在函数中目前都可以设置。
以一个主图叠加公式和一个副图公式,同时运行,应该能说明问题了。
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
explain(ma5>ma10 and ma10>ma20, “ma5:”),colorred;
explainex(ma5>ma10 and ma10>ma20, “ma10:”,ma10,2,1),colorgreen;
explainex(ma5>ma10 and ma10>ma20, “ma20:”,ma20,2,1),coloryellow;{主图叠加}
副图公式:
ma5:ma(c,5);
ma10:ma(c,10);
ma20:ma(c,20);
explainex(ma5>ma10 and ma10>ma20, “ma5:”,ma5,3,1);
explainex(ma5>ma10 and ma10>ma20, “ma10:”,ma10,3,0);
explainex(ma5>ma10 and ma10>ma20, “ma20:”,ma20,3,1);
函数: explainicon(cond,icon)
参数: icon为数字时4种图标编码为1-4(阴雨、初彩、中彩、彩虹)。为字符串表示自制图标
用法: explain(cond,text),在cond条件满足时在[解]中输出解盘文字
说明:在[解]中绘制解盘图标。
示例: explainicon(high>=hhv(high,20), 2)
表示在创20天新高时在[解]中画2号图标(雨后初彩虹)。
explainicon(high>=hhv(high,20), “mybmp”)
表示在创20天新高时在[解]中画fmldll子目录下的自制图标mybmp.bmp。
可用align0中对齐,align1左对齐,align2右对齐
图例:
explainicon(c>0,1);
explainicon(c>0,2);
explainicon(c>0,3);
explainicon(c>0,4);
一、横向统计函数
函数: estdata(n)
参数: 1-13
用法: estdata(n)
在[横向统计管理]中定义并计算数据。
(本函数仅在日线分析周期有效)。
说明:取得横向统计日线数据(1-n)。
用法举例:
例:设计一个公式,统计当日a股板块涨停板的股票数。
建立方法如下:
①设计一个公式,判断个股是否涨停,代码如下,设公式名称是“涨停判断”:
bl:=if(stkinblock(“st板块”),1.05,1.1);{如果为st涨停为5%,否则为10%}
ztb:(c>=intpart(ref(c,1)*bl*100+0.5)/100);{如果涨停返回1,否则返回0}
{注:对新股的涨停未做判断,另外个股因历史的原因,是否被st或pt处理无法判断,因此对历史数据的判断并不准确}
②建立横向统计数据项:鼠标点菜单“管理/横向统计管理”,在“横向统计管理”对话框中,点“新增”,找到刚才设计的公式“涨停判断”,如下图所示进行设置。
图中,不选除权处理更加合理。应去掉该项选择。
至此,我们就设计了一个横向统计数据项“涨停板”,在图中序号是3,则引用时是estdata(3)。
二、扩展数据库
函数: extdata(n)
参数: 1-13
用法: extdata(n),n取1–13
在[扩展数据管理]中定义并计算数据。
(本函数仅在日线分析周期有效)
说明:取得日线扩展数据(1-13)
飞狐扩展数据简介及示例
飞狐扩展数据库:
一、 扩展数据库的功效:
1、 在公式设计时,由于系统的限制,无法在公式中直接实现横向排名的功能,例如,在公式中无法知道某股票的涨幅的排名,这时可将涨幅数据放入扩展数据库中,让飞狐自动对涨幅数据进行排序,从而获得股票的涨幅排名数据。
2、 由于考虑到磁盘空间及系统的效率,飞狐收盘时,保存的数据并未包含实时接收的全部数据,出于研究股票的需要,您可能需要其中的某些数据,这时可以把这些数据存入扩展数据库,以供调用。
3、 由于系统及磁盘空间的限制,一般保存的短周期的数据有时段的限制,例如设置了只保存10天的分笔数据,超过10天的分笔数据将被自动删除,此时若想对分笔数据进行统计研究,将无法进行,这时可将分笔统计数据存入扩展数据库。
4、 由于系统的限制,公式中无法从长周期引用短周期的指标数据,这时可将短周期的指标数据存入扩展数据库。
二、扩展数据库的调用:
飞狐的扩展数据库,最多可以保存13组数据,保存在扩展数据库中的数据,使用函数extdata(n)来调用,其中n表示第n组数据。
三、 使用扩展数据库示例:
例:如何知道股票在a股板块中的涨幅排名:
1、设计一个公式,设公式名称为“涨幅”,公式代码如下:
z,::(c/ref(c,1)-1)*100;
2、鼠标点菜单“管理/管理扩展数据”,弹出如图1所示扩展数据管理框,
由于是新增的一组数据,双击其中某组尚未设置的数据名称,如图2所示,步骤如下:
① 选择我们刚才设计的“涨幅”公式
② 修改数据名称为“涨幅排名”
③ 选择“生成排名数据(从大到小排)”
④ 去掉“使用除权后的数据”选项(避免涨幅失真)
⑤ “排序方法”选“0-n自然排序”
⑥ “设置范围”选a股板块。
⑦ 图中,“涨幅排名”的扩展数据,是第2组数据,因此调用的函数为extdata(2)
3、设计一个调用涨幅排名数据的公式,调公式名称为“调用涨幅排名”,参考代码如下:
z,pm:extdata(2);
在k线图中,调用“调用涨幅排名”公式,即可获知该股票的当日在a股板块中排列第几名。
说明:在第1步设计的公式中,由于本例中仅需要计算排序的结果,因此公式可以简化(优化),以便减少运算量。
z,::c/ref(c,1);
一、
函数: fft(x,n)
参数: n为常数,x为数组.
返回: 返回数组
说明: 傅立叶变换,对序列x进行傅立叶变换或变换处理后反变换
示例: 当n=0时对序列x进行傅立叶变换
当n=1时对序列x进行傅立叶变换并反变换回来,与原x一致
当n>1时对序列x进行傅立叶变换并略去周期小于n的成分再反变换回来
fft(close,30)
傅立叶变换是最常用的积分变换。原理和对数变换等差不多,无非是变换复杂为简单,广泛应用于工程技术领域。可傅立叶变换的算法,涉及高等数学的微积分知识,非三言两语说得清楚,也超过了本人的能力范围,这里只能从略了。
傅立叶变换的应用方面,见过的有二:
1、比如把fft(close,30),在主图中上移下移之后,可以构成非常光滑的通道。
2、用在周期分析上。语见<期货市场技术分析>p407。
aa:=fft(c,30);
aa*1.05;
aa*0.95
二、
函数: checkuser(n)
参数: n为常数1或0
返回: 返回数组
说明: 限制公式使用。
示例: check:=checkuser(0)
注册用户返回1,否则返回0
check:=checkuser(1)
对非注册用户不可用该公式
三、
函数: colorrgb(r,g,b)
参数: n为常数,x为数组.
返回: 返回rgb颜色值(常数)
示例: drawgbk(c>o, colorrgb(255,0,0), colorrgb(255,255,0),0);
表示图形上最后一组c>o时从左到右从红色到黄色渐变填充子图。效果如下图:
四、
函数: linevalue(cond1,price1,cond2,price2,expand,log)
参数:cond为数组,price为数组或常数,log为1表示按对数计算,expand为1表示向左延长.
返回: 返回数组
说明: linevalue(cond1,price1,cond2,price2,expand,log)
计算(cond1,price1)和(cond2,price2)2点决定的直线的数值
cond为数组,price为数组或常数,log为1表示按对数计算,expand为1表示向左延长.可用于趋势线预警、选股等
计算方式:先得到cond2条件满足的后点,再向左求cond1条件满足的前点,仅根据此2点计算
示例: linevalue(date=1020129,low,date=1020606,low,0,1);{表示计算连接2002年1月29日低点和2002年6月6日低点的以对数方式计算的趋势线}
五、
函数: username
参数: n为常数,x为数组.
返回: 返回数组
说明: 取用户注册名。
示例: check:=strcmp(username, “userid”)
为0表示用户注册名为userid,可用于公式只给指定用户使用。
六、
函数: username
参数:无
返回: 返回值范围为0-11
说明: 当前证券类型。
示例: stktype
返回值范围为0-11,
分别表示指数、a股、b股、基金、债券、其它、外汇、期货、其它股票、商品现货、期权、权证
七、
函数: dataperiod
参数:无
返回: 返回值范围为0-11
说明: 当前数据周期类型。
示例:dataperiod
返回值范围为0-11,分别表示
分笔成交、1分钟、5分钟、15分钟、30分钟、60分钟、日、周、月、年、多日、多分钟