以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://www.weistock.com/bbs/index.asp)
--  高级功能研发区  (http://www.weistock.com/bbs/list.asp?boardid=5)
----  调用vba自定义函数时,内存消耗极快  (http://www.weistock.com/bbs/dispbbs.asp?boardid=5&id=95750)

--  作者:microsoft
--  发布时间:2016/4/1 14:20:06
--  调用vba自定义函数时,内存消耗极快
使用的是后台预警,监控期货主力合约和股票主要指数,一共57个品种,1、3、5、10、15、30、60分钟和1日周期,
使用指定数量500刷新计算,固定时间间隔1秒,
开始预警不到五分钟金之塔占用内存8G

vba代码是

Function getBoDuan4(Formula,openArr,highArr,lowArr,closeArr,dateArr,timeArr,macdArr,macdDisArr)
    \'系统会在逐K线模式解释公式时的每个周期都会调用此函数一遍,因此设计时应该注重程序的执行效率,不要重复的执行一些没必要的代码
    getBoDuan4=0
    arrLen = ubound(openArr)
    dim rtnVal
    \'redim rtnVal(arrLen*6)
    
     getBoDuan4 = rtnVal
End Function

pel代码是

WARNING_DISABLE:6; 

arrayLen:=ubound(close);

diff1:= EMA(CLOSE,S) - EMA(CLOSE,P);  
dea1:= EMA(diff1,M); 
macd1:=2*(diff1-dea1);  
macd_not_dis:barslast(macd1*ref(macd1,1) <=0),nodraw;

boduan:=boduanTmp+1;
tmp0:=boduan*3+1;
tmp1:= boduan * (boduan-1)/2;
VARIABLE:flag[boduan]=0;
VARIABLE:dateArr[boduan]=0;
variable:timeArr[boduan]=0;
variable:boHighDArr[boduan]=0;
variable:boHighTArr[boduan]=0; 
variable:boLowDArr[boduan]=0; 
variable:boLowTArr[boduan]=0;
variable:boduanArr[boduan*11]=0;

boduanArr:=getBoDuan4(open,high,low,close,date,time,macd1,macd_not_dis),nodraw,colorwhite;

signal:0,nodraw,colorwhite;

参数boduanTmp为8,P、S、M随意。序列模式。

--  作者:王锋
--  发布时间:2016/4/1 14:25:28
--  

使用排除法试试,将 getBoDuan4 这个函数的调用注释掉呢?


--  作者:microsoft
--  发布时间:2016/4/1 14:29:41
--  
不调用自定义函数不会有这个问题,但是自定义函数已经删除得没什么功能了,还是会出现这种情况
--  作者:admin
--  发布时间:2016/4/1 16:44:20
--  

您好,感谢您的问题提交,下个升级版本我们将修复该问题


--  作者:microsoft
--  发布时间:2016/4/1 17:07:44
--  
翘首以待,十分感谢