morgan66b5694ca1a94a98 wrote:
hxxjava wrote:
morgan66b5694ca1a94a98 wrote:
self.event_engine:EventEngine = self.strategy_engine.event_engine
这行在价差回测引擎执行的时候报错,strategy_engine:BacktestingEngine 是没有event_einge的
是不是说有事件信号的,回测引擎都暂时不支持?印象中价差回测是没有现成的测试界面,你是如何编写回测代码的呢?
总之交易线需要和策略引擎使用同一个消息引擎就可以了。
本来合约价格是可以通过订阅获得的,就是考虑到回测时无法订阅价格,
所以改成了由策略通知交易线价格发生了变化的。def on_spread_tick(self, tick: TickData): """ Callback when new spread tick data is generated. """ self.bg.update_tick(tick) if self.trading: pc = PriceData(sponsor=self.strategy_name,price_name=self.spread_name,price=tick.last_price) self.event_engine.put(Event(EVENT_PRICE_CHANGE,data=pc))
当然如果你的米筐账号没有tick数据(通常贵多了),那么你也可以把通知价格更新的语句放在on_bar()中,
tick.last_price用bar.close代替,当然这也是没有办法的事情。感谢大佬!
我没用界面回测,直接写个vnpy.vnpy_spreadtrading.backtesting.BacktestEngine实例,设置参数跑回测的。
只需要在策略初始化处,加判断若它是回测引擎,则新建一个EventEgine(),并手工给它start() ,最后在run_backtesting轮播bar数据时,要sleep(0.01)一下,毕竟是不同的线程在做,防止交易线处理得慢。单这样做回测起来确实慢很多。
大哥能贴一下回测代码吗?
首次启动程序后,运行正常,
在同一个回测框架下更改回测时间段后,会出现如下报错
Can't get attribute 'dtype' on <module 'numpy' from 'C:\vnstudio\lib\site-packages\numpy\init.py'>
numpy版本,为最新。
提前感谢各位大神。
求各位大神指点,vnpy版本:2.8.1