欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 求教一个数组的构建

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有5173人关注过本帖树形打印复制链接

主题:求教一个数组的构建

帅哥哟,离线,有人找我吗?
dwjgwsm
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
求教一个数组的构建  发帖心情 Post By:2013/5/29 9:25:00 [只看该作者]

我想把每周最后一根K线的收盘价和最新一根K线的收盘价组成一个数组。请教如何构建?谢谢!

图片点击可在新窗口打开查看此主题相关图片如下:2013-05-29_090115.jpg
图片点击可在新窗口打开查看

如图上的红色收盘价

麻烦回答详细一些、最好是复制过来就能用,还没学习过高级教程
[此贴子已经被作者于2013-5-29 9:25:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/5/29 9:41:31 [只看该作者]

1、声明数组。

数组的声明方式和其它的变量是一样的,它可以使用Dim、Static、Private 或 Public 语句来声明。标量变量(非数组)与数组变量的不同在于通常必须指定数组的大小。若数组的大小被指定的话,则它是个固定大小数组。若程序运行时数组的大小可以被改变,则它是个动态数组。

数组是否从0 或1 索引是根据Option Base 语句的设置。如果Option Base 没有指定为 1,则数组索引从零开始。

(1)声明固定大小的数组

下面这行代码声明了一个固定大小的数组,它是个 11 行乘以 11 列的 Integer 数组:

Dim MyArray(10, 10) As Integer

(2)声明动态数组

若声明为动态数组,则可以在执行代码时去改变数组大小。可以利用 Static、Dim、Private 或 Public 语句来声明数组,并使括号内为为空,如下示例所示。

Dim sngArray() As Single

2、获得数组的最大与最小下标。利用LBound 函数与UBound 函数函数可以分别来获得数组的最小与最大下标,其语法是:

LBound(arrayname[, dimension])

UBound(arrayname[, dimension])

语法包含下面部分:

部分 描述

arrayname 必需的。数组变量的名称,遵循标准的变量命名约定。

dimension 可选的;Variant (Long)。指定返回哪一维的下界。1 表示第一维,2 表示第二维,如此类推。如果省略dimension,就认为是 1。

3、ReDim 语句。ReDim 语句用来定义或重定义原来已经用带空圆括号(没有维数下标)的 Private、Public 或 Dim 语句声明过的动态数组的大小,其语法是:

ReDim [Preserve] varname(subscripts) [As type] [, varname(subscripts) [As type]] . . .

ReDim 语句的语法包括以下几个部分:

部分 描述

Preserve 可选的。关键字,当改变原有数组最末维的大小时,使用此关键字可以保持数组中原来的数据。

varname 必需的。变量的名称;遵循标准的变量命名约定。

subscripts 必需的。数组变量的维数;最多可以定义 60 维的多维数组。subscripts 参数使用下面的语法:

[lower To] upper [,[lower To] upper] . . .

如果不显式指定lower,则数组的下界由Option Base 语句控制。如果没有Option Base 语句则下界为 0。

type 可选的。变量的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(对变长的字符串)、String * length(对定长的字符串)、Object、Variant、用户定义类型或对象类型。所声明的每个变量都要有一个单独的 As type 子句。对于包含数组的 Variant 而言,type 描述的是该数组的每个元素的类型,不能将此 Variant 改为其它类型。

可以使用 ReDim 语句反复地改变数组的元素以及维数的数目,但是不能在将一个数组定义为某种数据类型之后,再使用ReDim 将该数组改为其它数据类型,除非是 Variant 所包含的数组。如果该数组确实是包含在某个Variant 中,且没有使用Preserve 关键字,则可以使用As type 子句来改变其元素的类型,但在使用了此关键字的情况下,是不允许改变任何数据类型的。

如果使用了Preserve关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。


 回到顶部
帅哥哟,离线,有人找我吗?
rushtaotao
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 czt
等级:蜘蛛侠 帖子:1445 积分:6114 威望:0 精华:3 注册:2012/1/16 10:31:19
  发帖心情 Post By:2013/5/29 9:42:14 [只看该作者]

Dim MyArray(10, 10) As Integer

在金字塔中把As Integer去掉就能定义 不报错了


 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2013/5/29 9:52:42 [只看该作者]

我再想想
[此贴子已经被作者于2013-5-29 9:53:44编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2013/5/29 10:29:40 [只看该作者]

想不出来,坐等高手

 回到顶部
帅哥哟,离线,有人找我吗?
dwjgwsm
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:864 积分:607 威望:0 精华:0 注册:2013/3/14 23:16:32
  发帖心情 Post By:2013/5/29 11:16:51 [只看该作者]

自己搞定了!
VARIABLE:spj[]=0;
rc:=ref(c,1);
if barpos>1 and DATEDIFF(REF(DATE,1),DATE)>1 then spj:=rc;
us:=UBOUND(spj);
if islastbar then 
begin
  SETUBOUND(spj,us+1);
  spj[us+1]:=c;
end;

版主评定:好评,获得10个金币奖励好评,获得10个金币奖励
(理由:好文章)
 回到顶部
帅哥哟,离线,有人找我吗?
BruceX
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:64 积分:30 威望:0 精华:0 注册:2013/3/25 12:13:58
  发帖心情 Post By:2013/8/19 9:33:10 [只看该作者]

你这个程序在逐K线模式下是不是会出现越界操作啊?


 回到顶部
帅哥哟,离线,有人找我吗?
BruceX
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:64 积分:30 威望:0 精华:0 注册:2013/3/25 12:13:58
  发帖心情 Post By:2013/8/19 10:14:32 [只看该作者]

这些数组声明,在金字塔中能用吗?好像不行啊

 回到顶部