如题,我发现engine.close()并不能起到关闭引擎的作用。
而用gateway.close()关闭接口后,整个主进程也会随之关闭。这样每天都要再重新运行一次。
各位大神,
有什么办法可以在收盘后断开ctp,而不关闭主进程,
这样主进程循环到特定时间会重新登录CTP,
省去了每日重新手动再次运行登录CTP的烦恼。
难道只有每次新开一个进程才行么,这样感觉效率较低。
如题,我发现engine.close()并不能起到关闭引擎的作用。
而用gateway.close()关闭接口后,整个主进程也会随之关闭。这样每天都要再重新运行一次。
各位大神,
有什么办法可以在收盘后断开ctp,而不关闭主进程,
这样主进程循环到特定时间会重新登录CTP,
省去了每日重新手动再次运行登录CTP的烦恼。
难道只有每次新开一个进程才行么,这样感觉效率较低。
发现ctp_gateway.close()中的代码是直接exit()退出进程。简单粗暴啊,不知道封装的时候有没有disconnect的方法而不用直接exit还能继续执行下面的程序的
没吧,贴下哪里exit退出进程的代码?
用Python的交易员 wrote:
没吧,贴下哪里exit退出进程的代码?<
我用的是2.0.9版本
在vnpy/gateway/ctp/ctp_gateway.py文件中,
class ctpgateway的.close代码是def close(self): """""" self.td_api.close() self.md_api.close()
调用的是td_api和md_api的.close()方法,
而在class CtpMdApi(MdApi)和class CtpTdApi(TdApi)类中.close()方法的代码是def close(self): """""" if self.connect_status: self.exit()
因此在脚本模式里我自己加了个直接用
gateway = get_gateway(gateway_name) if gateway: gateway.close()
获取gateway然后用ctpgateway的.close()方法想要断开ctp接口,直接主程序就会退出。在接口py文件中也没有找到其他关闭或者断开ctp接口的函数
这里的self.exit,调用的是CTP封装中的函数,是在退出程序的时候才用的。
vn.py的CTP接口目前在设计上还是到点需要直接关闭进程,不支持直接退出销毁对象。