VeighNa量化社区
你的开源社区量化交易平台
nuckykk's Avatar
Member
离线
3 帖子
声望: 0

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

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】