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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → [求助]为什么数组的下界总是0呢?

   

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


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

主题:[求助]为什么数组的下界总是0呢?

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
[求助]为什么数组的下界总是0呢?  发帖心情 Post By:2017/3/9 12:46:20    Post IP:60.31.255.238[显示全部帖子]

为什么数组的下界总是0呢?

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 13:40:45    Post IP:60.31.255.238[显示全部帖子]

教程说数组下标从1开始,为啥下界是0呢?下标为1与下界为0一样吗?

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 13:53:18    Post IP:60.31.255.238[显示全部帖子]


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

 

数组有上标数,却下标数是0。我理解是数组里有数据才会有上标数,如果没有下标数怎么会有之后的上标数呢?所以理解不了为啥下标数是0?


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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:04:26    Post IP:60.31.255.238[显示全部帖子]

VAR1:C;n1:=SETLBOUND(VAR1,10);

这样写之后,其中"n1"有啥用——就是为了设置一下最小下标吗?


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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:08:44    Post IP:60.31.255.238[显示全部帖子]

//问题:为啥数组最小下标是0?

RUNMODE:0;//运行模式为逐K线计算

VARIABLE:arrSHV[] = 0;//短期波峰数组
VARIABLE:arrSHT[] = 0;//短期波峰周期位置数组
VARIABLE:arrSLV[] = 0;//短期波谷数组
VARIABLE:arrSLT[] = 0;//短期波谷周期位置数组

//===短期波峰===================================================================================
IF BARPOS > 2 THEN BEGIN
SHIF:=H[BARPOS-2] <= H[BARPOS-1] AND H[BARPOS-1] >= H[BARPOS];//判断波峰的条件
IF SHIF THEN BEGIN
 arrSHV:=H[BARPOS-1];  //波峰值
 arrSHT:=BARPOS-1;     //波峰位置
END
SHN:UBOUND(arrSHV),NODRAW;//波峰个数
SH:arrSHV,COLORGREEN;//短期波峰轨道

//===短期波谷=====================================================================================
SLIF:=L[BARPOS-2] >= L[BARPOS-1] AND L[BARPOS-1] <= L[BARPOS];//判断波谷的条件
IF SLIF THEN BEGIN
 arrSLV:=L[BARPOS-1];  //波谷值
 arrSLT:=BARPOS-1;     //波谷位置
END
SLN:UBOUND(arrSLV),NODRAW;//波谷个数
SL:arrSLV,COLORRED;//短期波谷轨道

END

波峰数组最大上标:UBOUND(arrSHV),NODRAW;
波峰数组最小下标:LBOUND(arrSHV),NODRAW;
波谷数组最大上标:UBOUND(arrSLV),NODRAW;
波谷数组最小下标:LBOUND(arrSLV),NODRAW;

 

 


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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:14:53    Post IP:60.31.255.238[显示全部帖子]

还是想问为啥数组的最小下标是0不是1?——在数组有最大上标值并且不为0的状况下为啥最小下标值是0不是1呢——金字塔教程说数组下标值从1开始的呀?

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:37:53    Post IP:60.31.255.238[显示全部帖子]

明白了,谢谢大师!建议在教程里补充说明白。再把教程修订补充完善一下吧——里面说的简单、还有好多错字、错字母

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:39:53    Post IP:60.31.255.238[显示全部帖子]

以下是引用jinzhe在2017-3-9 14:36:21的发言:
因为最开始定义的数组是大小为0的数组,所以导致了一开始的下标是从0开始的。但是后面的计算填充数组时,数组是从1开始填充的,所以导致了能正常的填充数组但是0仍然存在

仔细一想不对呀,按照老师说的那么最大上标数是增加了一个呀(意思是数组里的标数包含了0)——事实上没有增加一个呀。所以对于老师您的解释我还是有这个疑问


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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:48:35    Post IP:60.31.255.238[显示全部帖子]

例如数组ARR1,里面有数组10、11、12、13、14这五个数字,按照金字塔教程的意思,最小下标1对应数字10、最大上标5对应数字14。但事实上我上面的代码的最大上标数显示对了,但最小下标数显示是0不是1。按照您刚才的意思,原来数组里占位的都是0,填充之后第一个0没有被填充,所以数组最小下标是0。如果是这样,那么数组ARR1就是有0、10、11、12、13、14这六个数字,那么对应的最大上标数是6不是5了,但金字塔函数计算出来的最大上标数是5不是6呀????

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


加好友 发短信
等级:论坛游民 帖子:108 积分:0 威望:0 精华:0 注册:2016/12/13 12:08:16
  发帖心情 Post By:2017/3/9 14:53:44    Post IP:60.31.255.238[显示全部帖子]

以下是引用jinzhe在2017-3-9 14:47:11的发言:

并不增加的,常规数组才是返回大小,序列变量是返回最大下标。

你的常规数组通过被序列变量赋值变成了序列变量,用ubound时返回的是最大下标。但是不会因为数组多一个下标为0的元素就变大最大下标的

比如原来的数组是 0啥都没的 ,经过计算后赋值了3个元素变成了 0 1  2  3 ,那么数组大小是4,但是最大下标是3,用ubound来计算序列变量就返回最大下标3了

明白了,金字塔就是这样规定的——对于规定用户必须服从,哈哈哈哈


 回到顶部
总数 13 1 2 下一页