资源描述:
《金字塔数组使用的高级编程技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、金字塔数组使用的高级编程技巧做为一款专业的量化交易软件,对于统计学的支持自然必不可少,金字塔在2.90版升级以来增加了大量的统计函数,但是对数组的支持确比较有限,影响到了大量统计函数的使用,从2.931版升级以来,金字塔对数组的支持更进一步增强,本教程就是着手金字塔的数组使用,结合范例,对大家一一做细致的讲解,祝大家在看完这篇教程后,都能编出更加有力的程序化交易武器。数组的概念:所谓数组,就是有序数据的集合 如{1,2,5,7,9}这样一组有先后顺序的数据,我们可以把它们定义成一个数组,例如定义为A,数组A就表示这组有序的数据,这里A就是数组的名称(即数组
2、名)。 数组中的每1个数据,称之为数组中的一个元素,显然上面所说的数组A,第1个元素是1,第2个元素是2,第3个元素是5......,用A[1]、A[2]、A[3]......来表示,用方括号括起来的部分称之为下标,用下标来表示第几个元素。大家可以看出,在本例中,A[1]等于1,A[2]等于2,A[5]等于7,数组A共5个元素,我们就说数组A的长度是5。 上面所举的例子,数组的每一个元素是数值型的,称之为数值型数组,数组的每个元素也可以是字符串的,即字符串型数组。 一般来说,数组的使用,要先定义,然后初始化(即赋予数组的每个元素一个初始的数据)。在金字
3、塔中,目前只支持一维数组,并且下标是从1开始的。数组的定义:金字塔中,数组有两种表现方式,序列变量和声明数组.序列变量: 序列变量其实就是一个数组,我们平时接触最多的是收盘价close,写一行代码“fc:close",就是定义了一个变量fc,并把收盘价赋值给变量fc。这里变量fc就是序列变量,因为fc不是一个值,而是一序列随时间而变化的值(收盘价),在K线图中,从第1根K线到最后1根K线都有一个收盘价,因此fc跟单值变量不同,是由一系列的值组成的变量,因此我们称之为序列变量。事实上,把“fc:close”这行代码做成一个指标,就可以看出fc是一条变化的曲线
4、而不是一条水平直线。 金字塔新的公式系统,可以把序列变量等同于一个数组,这是一个特殊的数组,这个数组的最小下标是从序列变量的起始有效位置开始,数组的最大下标是K线数量,其中K线的数量,可以从datacount函数得到。 比如“fc:close;",这行代码,可以把fc看成是一个下标从1开始直到datacount的数组。如果我们想知道第1、2、5、最后1根K线的收盘价,可以写成如下代码:代码:runmode:1;//序列模式fc:=close;//定义一个序列变量,相当于是一个数组k1:fc[1];//第1根K线的收盘价k2:fc[2];//第2根K线的收
5、盘价k3:fc[5];//第5根K线的收盘价k_end:fc[datacount];//最后1根K线的收盘价声明数组:在金字塔中,如何定义、初始化并使用数组?下面简单示例说明: 例1、在金字塔中,定义一个含10个元素的数值型数组 定义数组的语句是variable,公式代码如下:variable:A[10]=0;//定义一个含10个元素的数值型数组A,并把所有元素初始化为0; 例2:定义一个3个元素的字符串型的数组 公式代码如下:variable:B[3]='abc';//定义一个含3个元素的字符串型数组B,并把所有元素初始化为'abc' 例3:
6、把{1,3,5,7,9}定义为数组 分析:这组数据共有5个数值型数据,因此应定义长度为5的数组,并给每个元素赋值。公式代码如下:variable:A[5]=0;A[1]:=1;A[2]:=3;A[3]:=5;A[4]:=7;A[5]:=9; 得到数组的长度大小:数组在定义完成后,我们可以通过UBOUND函数来得到数组的长度.该函数的使用说明如下:UBOUND(X),返回序列的上界(最大下标)若X为序列数据,则返回当前可用的数组数据上界,若为VARIABLE定义的数组,则返回该数组当前的大小.例如:VARIABLE:x[5]=0;A:c;CDC:UBOUN
7、D(x);//返回定义数组的长度CDD:UBOUND(A);//返回序列数据的长度重新定义数组的大小:数据在定义完毕之后,在实际的操作中我们可能会重新对数组定义其大小用来动态伸缩扩展,金字塔通过函数SETUBOUND对其进行了支持,SETUBOUND函数的使用范例如下:VARIABLE:x[5]=0;//定义一个5个数据的数组SETUBOUND(x,10);//扩充数组个数为10个CDC:UBOUND(x);//显示重设数组大小后的数组大小小技巧:SETUBOUND(x,0);若将数组长度设为0,则表示清空该数组删除数组的数据:REMOVEBOUND(X,D
8、),X为数组名称,D为数据的下标例如:REMOVEB