国金QMT量化交易系统中的 账号成交状态变化主推 deal_callback() , 当账号成交状态有变化时,这个函数被客户端调用。
我的策略是,在handlebar()里面挂单,等待成交,而判断成交的方式是根据系统主推deal_callback()通知。收到系统通知后,经过一系列的计算再次挂单,把成交反向操作,相应的买入或卖出。
第一次发现系统的BUG是在某交易日的晚上八九点钟,我正在调试策略代码,突然间我发现deal_callback()被调用了几十次,当时我以为是系统在清算,就没有在意,就默默的在我的策略的deal_callback()里面增加了一个时间判断,下午3点后,直接return。我还把这个发现的问题,跟我的国金客户经理讲了一下,他在公司内部反馈了一下之后,让提供截图,我没有截图,就过去了。
今天,这个Bug再次出现,导致我出现了亏损。在下午2点45左右,突然出现了十几个挂单,成交了好几个。我看着非常奇怪,一直在查代码的问题,最后才发现,是因为系统在这个时间点,把今天已经成交的十几条交易记录,在几秒内又重新发送给了deal_callback(),我的代码认为有新的成交,就相应的进行了买入卖出挂单。造成了实质性的亏损。我立刻联系了我的客户经理,进行了反馈,希望这个Bug可以被快速的修复。
我的客户经理还是比较给力的,直接给我拉了一个群,以下是券商的工程师给我的回复
基本的逻辑就是QMT在使用的过程中,可能会存在网络连接问题,系统重新进行连接。每当系统重新进行连接的时候,QMT就会把当天的所有的交易成交重新推送一次给deal_callback(),而且这个逻辑未来也会是这样。
大家一定要注意在deal_callback()处增加判断,不可相信系统推送。可以考虑自己搭建小数据库,记录自己的下单和成交记录,基于自己的数据库数据进行买卖。文章来源:https://www.toymoban.com/news/detail-510718.html
文章来源地址https://www.toymoban.com/news/detail-510718.html
到了这里,关于国金QMT量化交易系统的Bug及应对策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!