按照指引,问题解决了,谢谢老大
我直接把@lru_cache(maxsize=999) 给注释掉就可以了,就不会缓存了,谢谢哈
根据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().,但是并不能释放,内存占用并不减少。 不知道是否我释放内存的方式有错,还是说有别的原因,请各位不吝指教。
好的,明白了,谢谢
vnpy tick级别回测的订单撮合机制是如何的?我在11:00:00.000的时候下了多单,价格为当时tick的卖一价,查看成交记录的时候,成交时间会显示是11:00:48.000?,如果对价有量的话,不应该是对价即时成交么?
横权霸 wrote:
yaqiang27 wrote:
yy10112001 wrote:
据我所知。self.trading 在vnpy的ui, 策略交易模块中,点击“初始化”,“启动” 就会为true。
所以self.trading 应该会在回测或策略交易模块被更改
已经找到问题了,我跟踪调试后发现,run_backtesting()会先调用on_init()在load_tick(1)上下载对应天数的tick,然后调用self.callback(data),这个时候策略初始化才算完成,剩下的数据才会用来做交易,所以我是数据载入天数不够,程序中也存在逻辑问题。已经能正常下单了。谢谢你的回答哈
您好,请问load_bar(1)不是代表的一天的数据吗?请问数据库中有数据会自动从数据库掉用吗?
是代表一天的数据,数据库中有数据的话会先在数据上获取的,如果不满足的话再到rqdata获取
yy10112001 wrote:
据我所知。self.trading 在vnpy的ui, 策略交易模块中,点击“初始化”,“启动” 就会为true。
所以self.trading 应该会在回测或策略交易模块被更改
已经找到问题了,我跟踪调试后发现,run_backtesting()会先调用on_init()在load_tick(1)上下载对应天数的tick,然后调用self.callback(data),这个时候策略初始化才算完成,剩下的数据才会用来做交易,所以我是数据载入天数不够,程序中也存在逻辑问题。已经能正常下单了。谢谢你的回答哈
我准备了一个月的数据了,共计91w条tick数据 策略引擎已经是完成初始化的,但交易记录为空.我确定已经下了单的了,为了测试,我是设置一到11点,我就调用self.buy(tick.last_price,1),断点调试也确定到了self.buy(tick.last_price,1)这一步。不知道为啥就是没看到下单记录
运行结果图
tick回测模式下,在on_tick()函数上用self.buy(tick.last_price,1)开多单,但下单没成功,self.pos没有变化,请问会是什么问题?
用米筐下载数据时出现了以上错误。我已经按照文档申请了米筐的试用账号,得到账号和密码,然后再在VN Trader全局配置的界面上配置好账号和密码。打开CTA回测模块时,显示了RQData数据接口初始化成功,然后点击下载时cmd上面会出现rqdatac.share.errors.PermissionDenied: Not permit to get minbar price 的错误,开始以为是试用账号没权限,但是我直接在命令行上调用get_price()函数的时候,能够正确地返回数据。请问这是什么原因呢?我用的是vnpy 2.06
好的,谢谢。我用的是3.6的版本,原以为不影响运行,现在改为3.7的就可以了。