很多朋友在使用QMT的时候,常常会遇到很多问题不知道如何解决,比如“为什么获取不到期货数据?”“财务数据里没有找到pb roa”“如何获取总市值?”等等问题
收集了一些常见问题,今天给大家做解答,如各位朋友还有其他见解,欢迎在评论区留言交流;
一、为什么运行了策略,但是下单却没有成功?
这个问题,估计很多朋友都遇到过,如果你填写的参数的正确的,一定可以下单成功。但是能造成下单不成功的原因也是很多的。
出现这种情况,首先我们需要来排查:
1、在下单语句后面进行一次print 输出任何内容都可以,这个动作是为了确定代码里真正调用到了passorder;
2、如果确定调用到了passorder,但是没有下单,可以看下自己是不是在策略交易界面运行的,如果是在编辑器直接点击运行,是没法交易的;
3、如果有策略信号,但是没有实际下单,那就是策略选错了运行模式,此时只需要把策略运行模式改成【实盘】,策略就可以交易下单了
4、如果确定是实盘模式,并且确实调用了passorder,但是没有下单那就可以考虑:订单被柜台拒绝/passorder报错/快速下单参数填写错误/账号没有正确配置 这4种情况
①订单被柜台拒绝/passorder报错:出现这两种情况,一般会出现提示框,提示具体原因以及解决办法,根据提示解决就可以了;
②快速下单参数填写错误:对新人来说,这个问题几乎最难发现,因为既不会报错,也不会看到代码错误执行。针对这种情况出现,大家可以参考快速下单参数的描述,详情可见官方文档:快速下单参数;
③账号没有正确配置:这种情况就可以检查下代码,是不是填错了交易账号;
二、连接xtquant时失败,返回-1?
1、首先先判断登录客户端是否是以极简模式登录的;
2、检查路径是否正确,mini qmt:路径指定到安装目录下 \userdata_mini 文件夹;
3、客户端如果是安装在C盘的,需要每次都用管理员权限运行策略,这样才可以连接,不然会出现权限问题;
不建议安装在C盘,大家可以通过一下测试来验证是否有写入权限
如果出现 permissionError,那就是文件权限存在问题;
4、路径正确时换个session (任意整数即可)
由于机制限制,同一个session的两次python进程connect之间必须超过3秒;
5、如果上述方法都不行,那多半就是QMT用户权限的问题了,可联系开户券商解决
三、passorder使用对手价下单报错/有误,怎么办?
passorder参数 prType填写14(对手价下单)时,委托价格有误,或者信息提示“对手价无效,无法下单!”
如遇此问题,可以修改行情源对应的全推行情级别,“get_full_tick、subsceibe_while_quote函数中获取分笔行情没有5当行情,只有最新价”这个问题同样适用此解决方法

上图两种方式均可
四、使用QMT下单,提示失败?
1、检查客户端是否是测试端,测试模式中只显示策略信号,不支持发出委托;
2、如运行到交易函数,而没有看到策略信号,检查交易函数是否使用了快速下单参数 quickTrade,默认是0,只会在K线结束发出委托,日线及以上周期等于全天不会委托;
传1时,非历史bar上执行时(Contextlnfo.is_Iast_bar()为True),只要策略模型中调用到就触发下单交易。传2,无论是否是历史bar,运行到交易函数时立刻发出委托;
如果希望盘中出现信号立即下单,建议传1,这种情况下会有策略信号闪烁的风险,需要自己处理;如果希望K线结束下单(信号不闪烁),建议传0,通常情况下不建议传2;

3、如果看到实盘的策略信号,未找到对应委托,可以检查客户端左下角消息提示是否有报错,如有,那可以根据消息提示的描述修改下单参数
五、策略回测时,实际回测时间与右侧栏设置的回测时间不一致?
1、如果在 init 内指定了回测开始和结束时间,那么会以 init 指定的时间为准,没有指定的时候,以右侧栏设置为准
2、回测行情依赖主图数据进行推进,如果主图没数据,啊回测就会结束再错误的时间,或者无法回测。
以上整理仅供参考,具体问题具体分析



