以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  这公式解释错误,何解?  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=92694)

--  作者:a141027
--  发布时间:2016/2/27 0:01:22
--  这公式解释错误,何解?

公式有时能正常运行,有时不行,不行的时候报错最后一行解释错误。

 

截图见图片,公式代码如下:

 

variable:FHtmp[]=0,RLtmp[]=0;

if isdown then FHtmp:=-1;
if isup then RLtmp:=1;
FHnum:ubound(FHtmp),nodraw,colorwhite;
RLnum:ubound(RLtmp),nodraw,colorwhite;
checkFH1:FHtmp[FHnum],nodraw,colorwhite;
checkRL2:RLtmp[RLnum],nodraw,colorwhite;


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

--  作者:王锋
--  发布时间:2016/2/27 0:09:52
--  
是3.8新版吗
--  作者:a141027
--  发布时间:2016/2/27 9:12:10
--  
不是,3.63 x64
--  作者:a141027
--  发布时间:2016/2/27 10:31:23
--  
我发现如果在一条公式里面建立超过一个以上的空数组,如a[]=0, b[]=0...那样,并分别填充不等长度的任意数据,如if isup then a:=1, if isdown then b:=-1...那样,对这些数组进行各种运算,如求平均值,回归...等,似乎都没有问题,但当你试图调用第二组数组中某个数据时,公式就经常会解释错误,奇怪的是在什么都不改动的情况下偶尔公式又能够正常解释并运行。还有就是如果不调用第二组数组数据,只调用第一组数组数据则不会出现问题。

我检查过数据完整性没有问题,而且公式运行在任意周期,任意品种上都出同样的错误,错误应该和数据无关。

我现在已把要建立的多个数组在n条公式里分别逐一建立,先解决了我的问题,至于上述bug请你们关注。

哦,我的系统环境:3.63 x64,win10 x64。

--  作者:admin
--  发布时间:2016/2/27 11:39:52
--  

试试新发布的3.90版本,谢谢


--  作者:a141027
--  发布时间:2016/2/27 13:41:09
--  
以下是引用admin在2016/2/27 11:39:52的发言:

试试新发布的3.90版本,谢谢

刚升级了3.9 beta1,问题依然存在。另外,我上面用的解决办法也无效,即使一条公式内只有一个空数组,当你试图通过数组下标调用数组数据时,经常会发生公式无法解释而停止运行,见下图。请速解决。谢谢。

 


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


--  作者:a141027
--  发布时间:2016/2/27 14:30:56
--  
我在公式内将数组复制至一个新的数组,然后再来调用就再没出现问题了,同时建立n个空数组都很正常。盼告知原因。

公式(简化了)
variable:a[]=0,a1[]=0,b[]=0,b1[]=0;

if isup then a:=1;
if isdown then b:=-1;

a_num:=ubound(a);
b_num:=ubound(b);

//如果这时直接通过下标调用a,b两个数组中的数据就会出现公式无法解释的错误
setubound(a1,0);
setubound(a1,a_num);
setubound(b1,0);
setubound(b1,b_num);
a1:=a;
b1:=b;

//这时通过下标来调用a1,b1就一切正常。我就不截屏了。

--  作者:a141027
--  发布时间:2016/2/27 14:49:02
--  
顺便赞一个,3.9版本small,lod2,large,hod2快了真不只是一点点。。。很好!图片点击可在新窗口打开查看
--  作者:admin
--  发布时间:2016/2/28 0:30:24
--  

查了代码,你是哪行语句使用了空数组,数组未置任何数据导致数组越界了


--  作者:a141027
--  发布时间:2016/2/28 10:51:57
--  
谢谢管理员,不过我没看明白。以7楼代码为例,不是已通过if isup then a:=1对空数组赋值了吗?为什么说未置任何数据?

还以7楼为例,如果不用a1, b1数组,如何通过下标调用a, b数组而不出错?