个人修改Rollover移仓助手代码,为了避免一次移仓是发出交易数据过大,造成难以成交或者成交价滑点过大问题。采用算法交易中分时发单来分批发出交易请求单。
这个时候发现以前没有注意到问题,RolloverTool 继承QDialog 对话框来实现,启动是用exec,这个时候,会阻塞主程序;至少在我的观察中,主程序的行情策略都停止了。
如果像我这样分批发单时间过长,可能回造成行情损失。
建议改为show(), 这样不会造成主程序堵塞。只是暂停主界面消息循环。
def roll(self):
dialog = RolloverTool(self)
dialog.show()
另外扩展下,虽然还有一个定义是模态对话框很这个很像,但是即使是定义为模态对话框(Qt.ApplicationModal),如果是show()启动,一样不会阻塞主程序。
模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应