根据https://github.com/vnpy/vnpy/blob/master/examples/cta_backtesting/portfolio_backtesting.ipynb 里面的方法进行了多品种的回测,遇到了以下问题:
回测的多品种时,内存占用一直在增长。
portfolio_backtesting.ipynb里面的方法是每测试一个品种都重新建立回测引擎 engine = BacktestingEngine(),添加策略add_strategy(),载入数据load_data(),最终得出df累加到dfp进行统计。每次加载行情数据的时候都会存储在self.history_data上,不知道为何,每次重新新建engine对象的时候,旧的对象里面变量的的存储空间不应该是自动释放的吗?既然没有自动释放,我的想法是,每次执行完engine.run_backtesting()测试一个品种完毕的时候,把self.history_data所占用的内存显式释放掉,我用的是del history_data,gc.collect().,但是并不能释放,内存占用并不减少。 不知道是否我释放内存的方式有错,还是说有别的原因,请各位不吝指教。