客服版主老师,最近我用自定义函数来开发程序化交易策咯,但是在模拟实盘是总是报警突破了内存极限,从任务管理器动态的内存使用情况看,启动这个策咯后,开始内存占用并不多只有50-60M,但是不断刷新,内存占用不断增加,每分钟增加十几个M,几个小时后又报警了。
我采用的是序列模式计算函数,做成序列计算的指标,然后在逐K线计算的(Buy, Sell)策咯中引用,后来我采用自定义数据方式来引用指标,能降低CPU和初始时的内存占用,但是内存不断刷新增加的问题还是存在。
再后来,我改用金字塔的范例自定义函数:序列模式计算的均线CU_MA1,来写一个策略测试一下,也是做成序列计算的指标,然后在逐K线计算的(Buy, Sell)策咯中引用,结果发现也有内存不断刷新增加的问题.
请问有什么好的建议,来解决这个问题???
你说的问题我们还在测试中,盘中的内存一定数量的增加是正常的,因为金字塔是全推数据架构,接收的数据是保存在内存中的,随着时间增加,行情tick数据越来越多自然也就需要增加内存占用。
经过我们技术人员排查,vba自定义函数功能除了存在少量内存泄漏(目前已修复)外,并不存在你说的存在1分钟几十M的大量泄漏情况。
你的这个问题需要你检查你的VBA代码了,是否存在大规模数据调用,或者调用后未释放对象等情况。你可以结合Application.msgout函数加以调试,打印出代码的工作流程,或者做排除法调试,逐步缩小代码空间以便于仔细分析问题代码。亦或者将问题代码发到论坛上我们技术人员帮你看一下。