Recent Posts
迅投QMT量化交易系统-国债逆回购-闲钱理财
国债逆回购
资金账户里面的闲钱,有时候我们希望可以购买国债逆回购。在QMT里面,我们可以通过代码定时实现国债逆回购。
国债逆回购的代码
代码仅供参考,不构成投资建议,请谨慎操作。
account = 'xxxxx'
def DRR(ContextInfo):
afund = get_trade_detail_data(account,'stock','account')[0].m_dAvailable
avolume = int((afund )/1000)*10
if avolume >= 10:
passorder(24,1101,account,'204001.SH',14,-1,avolume,'DRR',2,'DRR',ContextInfo)
print('DRR ' + str(avolume) )
else:
print('DRR skipped')
如上定义了个DRR函数,通过定时函数,在盘中的14:57分运行。
问题
如果有问题,可以到我的知乎上与我联系。https://zhuanlan.zhihu.com/p/23309424857
其他文章
其他相关文章,可以关注CSDN专栏(看本博客的最顶端),点进去专栏,可以看到所有与QMT量化交易相关的文章。感谢关注。
本文更新于2025年2月12日,关注本博客,csdn专栏(看本博客文章最顶端)或者WTSolutions的知乎,获取最新的更新提醒。
迅投QMT量化交易系统服务器连接 中断与再连接
行情和交易服务器的中断和再连接
在QMT程序化交易系统的右下角,能看到两个标签【行情】【交易】,如果是绿色的,则代表行情和交易服务器是连接正常的,如果变成了红色,则代表那个服务器连接中断了。 如果是红色的,则需要用鼠标点击红色部分,会弹出一个服务器的选择窗口,你需要手动的进行相应的切换,直到右下角的标签变成了绿色的。
服务器再连接
需要注意的是,有的券商的再连接发生时,当前的所有的交易数据,券商会完全再给你推送一次,所有的成交回报,所有的下单回报等等,大家一定要特别注意,不能相信券商给你推送的交易回报, 它可能是重复发送的(如deal_callback等等)。这个问题在我之前的新手指南的帖子里面已经讲解了解决办法。大家可以通过本文章顶端的博客专栏连接,进入我的专栏,查看其他的QMT相关的文章。
服务器中断的识别
很多时候,我们的QMT程序化交易系统是24小时运行的,那么我们其实希望能够识别到当前【行情】【交易】服务器连接是否正常。我自己所采用的方法比较简单,就是设置一个定时函数,在盘前的一个时间去通过获取行情来判断是否存在服务器中断。如果判断中断了,则给我发送一个消息。当然如果我在设定的时间完全没有收到任何消息的话,则说明整个QMT程序存在不正常运行的状况,需要人工干预。
我使用的方法非常简单,就是在9点15运行如下代码:
def DailySettings(ContextInfo):
if getLastClose('510300.SH',ContextInfo) != False:
sendMsg("morning")
def getLastClose(stock, ContextInfo):
stockList = [stock]
tick = ContextInfo.get_full_tick(stock_code = stockList)
if stock in tick:
if "lastClose" in tick[stock]:
return tick[stock]["lastClose"]
sendMsg("行情数据可能存在问题")
return False
如果我收到了morning,则通常QMT行情服务器连接正常。 sendMsg函数,大家可以自定义,比如发送短信,发送邮件,发送飞书消息,自己能接收到就行。
其他文章
其他相关文章,可以关注CSDN专栏(看本博客的最顶端),点进去专栏,可以看到所有与QMT量化交易相关的文章。感谢关注。
本文更新于2025年2月11日,关注本博客,csdn专栏(看本博客文章最顶端)或者WTSolutions的知乎,获取最新的更新提醒。
迅投QMT量化交易系统新手指南及常见问题
迅投QMT门槛
迅投QMT量化交易系统是一款基于python语言开发的量化交易平台,它提供了丰富的量化交易功能,包括策略开发、回测、实盘交易等。
迅投QMT量化交易系统的门槛相对较低,只需要具备一定的编程基础,资金门槛很低,就可以开始使用。
其实迅投QMT还是比较适合入门级和中级个人投资者的,如果是那种特别专业的个人投资者或者机构的投资者,不一定会选择迅投QMT,还有其他的量化交易平台,比如大家经常能在龙虎榜上面看到的华鑫某某某,当然华鑫的门槛会更高,对资金和对技术能力都会有更高的门槛。
首先就是开通一个券商,他们要能支持QMT的接入,然后开通QMT的账号,就可以开始使用了。有一些券商基本没什么开户门槛,可以开通QMT,如果有需要,可以通过底部的知乎链接,与我联系,可以与我的客户经理联系,其实也就只是帮个忙,不是全职干这个的哈。
python版本
QMT使用的语言是python,版本为3.6。如果完全不懂python的话,要么赶紧学习,要么这个帖子就是一个劝退帖。
QMT自带python库
QMT里面内置了一些常用的python库,包括:
- numpy, pandas, patsy, scipy, statsmodels, TA_Lib 其中多种指标如 ADX, MACD, RSI, 布林轨道等;K 线形态识别,如黄昏之星,锤形线等等可以使用TA_Lib库。
QMT自带策略
QMT里面自带了一些策略,包括:
- 均线策略
- 日内交易策略
- 国债逆回购策略 等等,当然这些仅供参考,基本上大家都要自己编写自己的策略。
QMT的安装
安装包要从你的券商那里下载,安装很简单,就普通安装一个软件有一样。
QMT的登陆
需要从自己的券商那里获取,有一个用户名和一个密码,然后登陆即可。一般在开通QMT交易权限的时候,券商会告诉你用户名和密码。
QMT的运行环境
需要一台Windows电脑,也可以使用云服务器,电脑的性能取决于你自己的策略,如果策略的数量不多,且策略并不复杂,其实普通的电脑都没有问题。对于新手来说,完全可以使用一台现有的电脑开始使用,如果后面上了复杂的策略,慢慢的再增加性能更好的电脑硬件。我自己的策略比较简单,我把我的电脑的一些硬件,比如USB接口只开启了一个,声卡什么用不到的硬件都关闭了,只保留了必须的硬件,这样可以保证电脑的性能,也可以保证电脑的稳定性,同时电耗也会比较低,目前我的电耗每天不到0.5度。
QMT的运行,很多时候,我们并不是一直盯着的,会需要在电脑上/云服务器上面安装一个远程协助软件,这样可以随时远程连接到QMT,然后进行一些操作。
一些Bug与解决方案
QMT量化交易系统中的 账号成交状态变化主推 deal_callback() , 当账号成交状态有变化时,这个函数被客户端调用。
在使用的过程中发现,deal_callback() 函数在会被调用多次,后来咨询国金证券QMT的工作人员后,才发现,会在至少如下两种情况下调用:
- 当账号成交状态有变化时,会调用 deal_callback() 函数。
- 当网络出现中断之后,QMT系统与服务器重新连接的时候,会调用 deal_callback() 函数, 并且把当日的所有成交全部都推送一遍。
因此务必不可以相信 deal_callback() 函数的推送数据,因为 deal_callback() 函数的推送数据可能是重复推送的。为了解决这个问题,我们需要自己建立数据库,去记录每一次下单,下单的成交状态。后续所有的下单,都要基于自己的数据库数据,不可相信QMT的推送数据。
如下摘取自迅投QMT的官方文档:
下单与回报相关
为保证以尽快的速度执行交易信号, qmt 客户端提供的交易接口是异步的, 以快速交易参数填2的passorder函数为例,调用后会立刻发出委托, 然后返回。不会等待委托回报, 也不会阻塞python线程的运行。
委托/成交/持仓/账号信息的更新, 是在客户端后台进行的, python策略中无法手动控制。python提供的取账号信息接口 get_trade_detail_data, 与四种交易回调函数, 都是从客户端本地缓存中读取数据 / 触发调用,不是调用时查询柜台再返回。客户端本地缓存状态定期接收柜台推送刷新,有交易主推的柜台50ms一次,没有交易主推的柜台1-6秒一次。 不能认为get_trade_detail_data查到的状态是与柜台完全一致的, 比如卖出委托后立刻查询, 不会查到对应委托, 可用资金也不会变多。