QMT常见的报错及解决方法:新手排查指南

使用QMT编写策略或运行时,难免会遇到各种报错。对于新手来说,红色错误信息往往让人不知所措。下面总结最常见的几类QMT报错及其解决方法,让你能快速定位问题。


第一类:连接错误。提示“连接服务器失败”、“登录超时”等。原因可能是网络不通、券商交易服务器维护、或者你的账号未开通程序化权限。解决方法:先检查电脑网络是否正常,尝试打开网页;然后确认是否在工作日交易时段(非交易时间部分券商模拟盘可用,但实盘服务器可能关闭);最后联系券商确认你的账号已授权QMT登录。


第二类:数据获取失败。例如xtdata.get_market_data返回空值。常见原因是股票代码格式错误(QMT通常需要类似000001.SZ的后缀),或者请求的时间段内该股票未上市(如请求2010年数据但股票2015年才上市)。解决方法:打印出代码,核对格式;使用xtdata.get_stock_list_in_sector获取该板块的有效代码列表。


第三类:下单被拒绝。提示“非法委托”、“资金不足”、“证券不足”等。资金不足比较好理解;证券不足是指卖出时持仓数量不够。还有“价格超出涨跌停范围”,说明你的买入价高于涨停价或卖出价低于跌停价。解决方法:下单前用query_stock_quote获取当前最新价,动态计算委托价。另外,检查是否在集合竞价时间段发送了市价单(部分市场不支持)。


第四类:API使用错误。比如调用了不存在的函数,或者参数类型不对。常见于新手直接复制网上的老版本代码,而QMT的API有过更新。解决方法:查阅QMT自带的帮助文档(一般在安装目录下PDF文件),或者使用help(函数名)查看用法。


第五类:策略运行缓慢或卡死。通常是循环中频繁调用行情接口导致。例如在每个tick中都查询全市场5000只股票的数据,会造成大量IO阻塞。解决方法:缓存数据,使用xtdata.subscribe_quote订阅后异步获取,而不是每次调用get_market_data。


第六类:回测结果中交易记录为空。可能是指标计算错误导致始终没有触发买入条件。解决方法:在handle_bar中加入print语句打印出均线值等中间变量,检查是否符合预期。


遇到报错时,建议先完整复制错误信息,然后利用搜索引擎或量化社区查找。很多常见问题都有人遇到过并提供了解决方案。同时,加入券商的量化社群可以获得即时帮助。国金证券的QMT用户群就是一个很好的平台,10万资金门槛即可开通后申请入群,有专门的运营和热心群友解答报错。此外,两融业务全线上开通,方便你在解决报错之余快速调整资金。不要被报错吓倒,每一个红色提示都是在帮你完善策略的稳定性。



温馨提示:投资有风险,选择需谨慎。

相关文章