VeighNa量化社区
你的开源社区量化交易平台
Member
加入于:
帖子: 158
声望: 71

个人修改Rollover移仓助手代码,为了避免一次移仓是发出交易数据过大,造成难以成交或者成交价滑点过大问题。采用算法交易中分时发单来分批发出交易请求单。
这个时候发现以前没有注意到问题,RolloverTool 继承QDialog 对话框来实现,启动是用exec,这个时候,会阻塞主程序;至少在我的观察中,主程序的行情策略都停止了。
如果像我这样分批发单时间过长,可能回造成行情损失。
建议改为show(), 这样不会造成主程序堵塞。只是暂停主界面消息循环。

def roll(self):

    dialog = RolloverTool(self)
    dialog.show()


另外扩展下,虽然还有一个定义是模态对话框很这个很像,但是即使是定义为模态对话框(Qt.ApplicationModal),如果是show()启动,一样不会阻塞主程序。

模态对话框(Modal Dialogue Box,又叫做模式对话框),是指在用户想要对对话框以外的应用程序进行操作时,必须首先对该对话框进行响应

Administrator
avatar
加入于:
帖子: 4502
声望: 321
  1. 改为show会导致dialog对象被立即回收,无法弹出对话框
  2. exec只是让图形界面停住不处理其他部分,而非阻塞了事件驱动引擎(后台逻辑不受影响)
© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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