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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → pel中数组的使用

   

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


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

主题:pel中数组的使用

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


加好友 发短信
等级:论坛游民 帖子:127 积分:145 威望:0 精华:0 注册:2011/9/29 17:10:38
pel中数组的使用  发帖心情 Post By:2017/8/17 16:14:55 [只看该作者]

请问pel中用variable定义了数组, variable:A1[10]=0 , 在使用中可以调整数组的大小(元素个数),或者该数组赋值后有没有语句能再把数组的元素值全都置为0 吗?

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


加好友 发短信
等级:超级版主 帖子:4994 积分:0 威望:0 精华:0 注册:2016/9/1 10:46:51
  发帖心情 Post By:2017/8/17 16:27:17 [只看该作者]

参考函数SETUBOUND

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/8/17 16:30:02 [只看该作者]

如果你定义数组的时候不指定长度,就可以动态扩充数组大小的。楼上那个要注意设置的长度小于当前数组长度的问题。


命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
linxingywei
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:127 积分:145 威望:0 精华:0 注册:2011/9/29 17:10:38
  发帖心情 Post By:2017/8/17 16:46:23 [只看该作者]

请问定义数组的时候不指定长度,是这样设定吗?variable:A1[]
动态扩充数组大小,是用SETUBOUND函数吗?
如果设置的长度小于当前数组长度,会有什么问题?

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/8/17 17:29:02 [只看该作者]

以下是引用linxingywei在2017/8/17 16:46:23的发言:
请问定义数组的时候不指定长度,是这样设定吗?variable:A1[]
动态扩充数组大小,是用SETUBOUND函数吗?
如果设置的长度小于当前数组长度,会有什么问题?

3楼回复错了。

VARIABLE:t[10]=0;//或者VARIABLE:t[]=0
t:=open-close;

 

上面的代码,就是动态填充的例子。新的元素会不断填充到数值后面。不断扩充数组大小。SETUBOUND的话,如果你现在数组长度是100,你设置成50,你数组就有一半的数据被砍掉了。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
linxingywei
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:127 积分:145 威望:0 精华:0 注册:2011/9/29 17:10:38
  发帖心情 Post By:2017/8/17 17:38:01 [只看该作者]

我看SETUBOUND的函数说明,
使用SETUBOUND(x,0),可以使清空数组,但是我用了下,发现这种写法并不能清空数组,之前对数组的赋值,还是保留。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/8/18 9:17:18 [只看该作者]

以下是引用linxingywei在2017/8/17 17:38:01的发言:
我看SETUBOUND的函数说明,
使用SETUBOUND(x,0),可以使清空数组,但是我用了下,发现这种写法并不能清空数组,之前对数组的赋值,还是保留。

我看下你代码怎么写的。

VARIABLE:t[]=0;
if open>close then t:=open-close;
a:UBOUND(t);
if a>100 then SETUBOUND(t,0);
s:UBOUND(t);

 

我测试了可以的啊。



命数如织,当如磐石。
 回到顶部
帅哥哟,离线,有人找我吗?
linxingywei
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:127 积分:145 威望:0 精华:0 注册:2011/9/29 17:10:38
  发帖心情 Post By:2017/8/18 15:09:57 [只看该作者]

但是我测试下来,清空没有作用。
VARIABLE:t[]=0;
if open>close then t:=open-close;
a:UBOUND(t);
a1:t[1];
if a>100 then SETUBOUND(t,0);
s:UBOUND(t);
s1:t[1];
SETUBOUND(t,20);
s2:t[1];

显示的结果:

图片点击可在新窗口打开查看此主题相关图片如下:2017-08-18_150736.jpg
图片点击可在新窗口打开查看
如果SETUBOUND(t,0), 是把数组清空的话,s 应该显示 0 ,但是显示的和a的值是一样的。
a1和s1取的数组第一个元素值也是相同的。

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2017/8/18 15:33:41 [只看该作者]

以下是引用linxingywei在2017/8/18 15:09:57的发言:
但是我测试下来,清空没有作用。
VARIABLE:t[]=0;
if open>close then t:=open-close;
a:UBOUND(t);
a1:t[1];
if a>100 then SETUBOUND(t,0);
s:UBOUND(t);
s1:t[1];
SETUBOUND(t,20);
s2:t[1];

显示的结果:

图片点击可在新窗口打开查看此主题相关图片如下:2017-08-18_150736.jpg
图片点击可在新窗口打开查看
如果SETUBOUND(t,0), 是把数组清空的话,s 应该显示 0 ,但是显示的和a的值是一样的。
a1和s1取的数组第一个元素值也是相同的。

1.我按照你的代码测试,a无法大于100(你那上边是825)。每次扩充数据就报错,数组报“越界错误”,这说明清空是成功的。这个应该是这样的:在数据较小的情况下,阴线数目达不到100,但是一旦扩充数据。就能触发清空操作,然后t[1]这种语句就会报错。

 
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

2.你那边是不是用了序列模式?只有序列模式才会这样,其中细节我再测试下。我研先究下序列模式下数组的操作问题。回头在这个帖子我会继续回复的。



命数如织,当如磐石。
 回到顶部