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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → variable数组赋值问题

   

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


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

主题:variable数组赋值问题

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


加好友 发短信
等级:论坛游侠 帖子:415 积分:0 威望:0 精华:0 注册:2013/6/13 17:00:05
variable数组赋值问题  发帖心情 Post By:2018/11/20 12:29:40    Post IP:58.30.68.118[只看该作者]

后台模型。定义的variable型数组AAA,BBB,CCC,DDD,采用UBOUND函数获取各数组最大下界,若数组不为空,则输出数组角标1~ubound(xxx)的所有值。调试中发现的问题:i为数组最大角标情况下,为什么有时候数组xxx[i]与xxx输出的值不一样。调试记录如下:
2018-11-20 11:11:34.199    i=: 1  AAA[i]: -0   AAA: 43
2018-11-20 11:11:34.200    i=: 1    BBB[i]: -0    BBB: 43
2018-11-20 11:11:34.200    i=: 1       CCC[i]: -0       CCC: 46
2018-11-20 11:11:34.200    i=: 1          DDD[i]: -0          DDD: 46
2018-11-20 11:11:43.244    i=: 1  AAA[i]: -0   AAA: 43
2018-11-20 11:11:43.245    i=: 1    BBB[i]: -0    BBB: 43
2018-11-20 11:11:43.245    i=: 1       CCC[i]: -0       CCC: 46
2018-11-20 11:11:43.246    i=: 1          DDD[i]: -0          DDD: 46
2018-11-20 11:11:52.517    i=: 1  AAA[i]: -0   AAA: 43
2018-11-20 11:11:52.517    i=: 1    BBB[i]: -0    BBB: 43
2018-11-20 11:11:52.518    i=: 1       CCC[i]: 54       CCC: 54
2018-11-20 11:11:52.518    i=: 1          DDD[i]: 54          DDD: 54

[此贴子已经被作者于2018/11/20 12:30:48编辑过]

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


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

 代码贴下,这个记录我看不出具体什么情况。


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


加好友 发短信
等级:论坛游侠 帖子:415 积分:0 威望:0 精华:0 注册:2013/6/13 17:00:05
  发帖心情 Post By:2018/11/20 17:05:52    Post IP:58.30.68.118[只看该作者]

代码没什么可看的啊
{定义数组}
VARIABLE:AAA[]=1;
{数组运算}
……
{获取数组长度}
NdataAAA:=UBOUND(AAA);
{调试输出}
if NdataAAA>0 and islastbar then begin
for i=1 to NdataAAA do begin
DEBUGFILE('C:\RCD\RECORD.TXT','i=: '&numtostr(i,0)&'  AAA[i]: '&numtostr(AAA[i],0)&'   AAA: '&numtostr(AAA,0),1000);
end
end

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


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

是不是数组是动态变化的,按照你上面代码的话,i怎么一直输出都是1?你这个数组是不是中间还有赋值之类的操作?你上面代码看不出来问题,只是输出语句而已。


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


加好友 发短信
等级:论坛游侠 帖子:415 积分:0 威望:0 精华:0 注册:2013/6/13 17:00:05
  发帖心情 Post By:2018/11/20 17:53:39    Post IP:58.30.68.118[只看该作者]

i=1,表示数组只包含一个数啊。中间根据算法有可能多次赋值,。若没有赋值,则UBOUND(AAA)=0,就不输出了。问题在于从输出结果看,AAA[UBOUND(AAA)]有时候等于0(值不对),而AAA的输出是对的。从数组的操作讲,AAA的输出值应该是等于AAA[UBOUND(AAA)]啊。

后台轮询,逐k线。
[此贴子已经被作者于2018/11/20 17:54:46编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:415 积分:0 威望:0 精华:0 注册:2013/6/13 17:00:05
  发帖心情 Post By:2018/11/20 18:01:27    Post IP:58.30.68.118[只看该作者]

再贴一段记录:
2018-11-20 14:55:30.333    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:55:30.334    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:55:40.392    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:55:40.392    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:55:50.496    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:55:50.497    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:56:00.981    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:56:00.982    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:56:12.257    i=: 1       CCC[i]: -0       CCC: 64
2018-11-20 14:56:12.258    i=: 1          DDD[i]: -0          DDD: 64
2018-11-20 14:57:19.040    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:57:19.040    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:57:30.124    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:57:30.125    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:57:41.365    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:57:41.366    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:57:52.301    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:57:52.301    i=: 1          DDD[i]: 64          DDD: 64
2018-11-20 14:58:02.579    i=: 1       CCC[i]: 64       CCC: 64
2018-11-20 14:58:02.579    i=: 1          DDD[i]: 64          DDD: 64

可以看到CCC[i]和DDD[i]有一次忽闪=-0,然后恢复到正确值64。 请高人解释一下原因

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


加好友 发短信
等级:超级版主 帖子:14496 积分:0 威望:0 精华:0 注册:2017/7/4 13:40:18
  发帖心情 Post By:2018/11/21 16:12:42    Post IP:180.169.30.6[只看该作者]

 提供完整代码,我们本地重现下。没有代码的话,无从下手的。


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


加好友 发短信
等级:论坛游侠 帖子:415 积分:0 威望:0 精华:0 注册:2013/6/13 17:00:05
  发帖心情 Post By:2018/11/21 19:40:50    Post IP:58.30.68.118[只看该作者]

跟代码有什么关系啊,贴出来几千行代码有什么用?上面说的够清楚了,这是纯粹关于数组输出值的问题,我一直以为直接用数组名不带角标输出的值,就是数组最后一个数据的值。但上面的数据颠覆了我的认知,仅包含一个数据的数组AAA,为什么有时AAA[1]=-0,AAA不等于AAA[1]。如果版主认为需要了解AAA是怎么计算出来的,那就算了。

 回到顶部