为什么QMT策略运行正常、有信号但是不发单?

今天写一个关于QMT实际运用中的内容,这个是叮当目前遇到最多的共性问题,就是关于:为什么策略运行正常、有信号但是不发单?

今天叮当就给大家整理了几个QMT策略不发单的排查步骤,下次遇到类似的问题大家就可以先排查一下是否存在下面这些情形。

01

确认是在“策略交易”模块创建了策略并开始运行。在“策略开发”模块点“运行”是无法产生交易信号的;

02

确认“运行模式”切换到了“实盘”。在“模拟”模式下只会产生略信号,但不会往柜台(仿真柜台或生产柜台)发单;

上图中“实盘”与“模拟”二者并非交易中模拟盘与实盘的区别。

(1)实盘:对资金账号进行下单等操作;

(2)模拟:不对资金账号进行下单等操作,只记录信号

03

确认“策略交易”模块下的“策略信号”分页,如果有信号产生,确认“委托”分页的信息,注意左上角状态选“全部状态”,来源选“本终端”。如果勾选后仍没看到委托信息,则确认信号里的证券代码是否是“可以在iQuant交易”的代码,如果没有信号产生,查看策略代码,判断是否达到触发下单的条件或者时间(参考下述第4项)

如何判断是否是“可以在iQuant交易”的代码:在“交易”的下单面板入代码,有相应的盘口行情,则是可下单代码(之前有遇到过财哥下单代码是指数或者多打了一个0的情况,这些都是无法发单的)。

注意:

仿真环境只支深圳的国债逆回购,上海的不支持。

04

确认“策略周期”。除设置quicktrade=1或2的情况,策略只会在选定的周期的最后一个tick满足发单逻辑时触发下单指令,如果策略周期选择的是日线,则盘中没有发单。

注意:

只有passorder、algo_passorder、smart_algo_passorder这三个下单函数的参数里有quickTrade这一项可以设置。

如果策略周期选的时间很长,例如30m、60m、1d这种,建议设置quickTrade=1或2(具体选哪个,根据具体的需要进行选择)。

如果不设置的话,默认quickTrade=0,则只有本周期内最后一个tick满足发单条件才会触发发单语句,其他时候不发单。

对于于其他周期来说,quickTrade=0增加了发单难度,于是看起来可能就是一直都不发单,对于日线来说,quickTrade=0意味着只有15:00的行情满足条件才会发单并且此时发出去只会是废单。

上述所列3个函数之外的其他下单函数,例如order_lots、order_value,etc.,都是没有quickTrade这个参数可以设置的,相当于是quickTrade=0的情况。

05

查看“消息提醒”里有无异常信息。

查看位置:“交易”模块,下单面板旁边的分页。如果没有,界面左上角“操作”→“查看”→“操作提示”点击一下就有了,把“消息”列拉开看,可以看到有无异常发单信息。

06

策略在实盘模式下,调用下单后不下单的情况,简单总结一下,大致有以下解决方案:

1、不建议使用除passorder外的其他下单函数;

2、在passorder语句后边进行一次print,确保进行了调用;

3、查看策略信号栏,如果有策略信号,但是没有实际下单到账户,应该是选错了运行模式;

4、passorder的快速下单参数设置错误,关于快速下单的说明,可以参考QMT文档;

5、账号/仓位是否配置正确;

6、被柜台拒绝:在界面下方“消息提示”或“执行中任务”查看被拒原因。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值