QTYX系统简介
股票量化交易系统QTYX是一个即可以用于学习,也可以用于实战炒股分析的系统。
分享QTYX系统目的是提供给大家一个搭建量化系统的模版,最终帮助大家搭建属于自己的系统。因此我们提供源码,可以根据自己的风格二次开发。
关于QTYX的使用攻略可以查看链接:QTYX使用攻略
QTYX一直迭代更新,当前版本V2.8.9。后续升级版本会同步更新文档内容。
功能概览
止盈止损是交易领域中是不可或缺的风险管理方法,有助于限制损失、锁定利润。于是,股票量化交易系统QTYX推出止盈止损实时监控模块。
在实盘时“量化机器人”会读取当前持有个股的止盈止损条件,并且周期获取全市场最新数据,当判断到个股符合条件就触发报警并执行交易。
这样一来,我们可以把QTYX部署在云服务器上,让QTYX帮我们实时监测个股,当到达我们设定的止盈止损目标时,通过邮箱、微信等即时聊天工具通知我们,同时也可以委托“量化机器人”自动下单。
配置交易参数
点击QTYX“交易”后进入子页面。
点击“查看配置参数”按钮后,左边日志栏显示当前实盘配置参数,主要关注QMT下单相关的配置,比如客户端安装路径和账号等。
如果要更改参数,可以打开configfiles/trade_para.json文件手动更改。
配置完成后,可以在“交易”界面上测试下单接口是否配置成功。
添加监测条件单
如何生成“监测条件单”呢?
点击“导入股票池”后会把自选股中的股票最新行情数据加载到界面中(用于建立条件单)。
点击股票代码后会出现买入/持有单配置界面。
“持有股票池”中记录的是已持有股票的止盈止损设定值。
盘中触发到止盈止损值时会触发卖出信号。(买入股票池是准备买入的股票清单,目前作为预留功能)选择“持有股票池”会出现配置界面。我们可以更改止盈止损的模式和幅度,同时配置界面也会显示买入的价格和持有后最高的价格。
目前我们支持的止盈模式是固定比例的,比如买入后涨幅达到10%止盈。止损模式是动态回撤止损,比如买入后股价从最高价下跌5%后就止损退出。
我们填写“航天晨光”的止盈止损配置参数,点击确认后会添加到“持有股票池”中。
如果要删除该股,更改止盈止损参数的话,双击持有股票池中的股票代码进行选择即可。
关于“买入股票池”,后续把策略和“买入股票池”关联起来后,当策略触发“买入股票池”中股票的条件后,会自动更新至“持有股票池”中。
目前,下单买入的股票,除了通过界面添加到“持有股票池”外,也可以通过在ConfigFiles/trade_para.json中添加信息方式更新“持有股票池”。
启动止盈止损功能
我们点击“策略导航—>实盘监测—>动态监测”,然后会出现一个操作对话框,如下所示:
接下来,我们介绍下界面上的功能。
监测周期:支持3秒、5秒、1分钟级别扫描监测信号
发送邮件使能:出现止盈止损信号后邮件通知
自动交易使能:出现止盈止损信号后直接下单
点击“开始扫描”后,程序就开始监测“持有股票池”中是否有出现止盈止损信号。结束时需要先点击“停止扫描”,然后再退出。
可以从对话框中看到,002214在账户中持有,触发止损信号后机器人自动卖出,而000505未在账户中持有,监测到触发止损信号能够正确提示。当出现交易信号时,系统会链接上QMT客户端(提前登录QMT客户端,并且在configfiles/trade_para.json文件中填写下单参数),自动交易个股。建议提前在QTYX“交易”界面中测试下QMT下单是否成功!
远程报告配置
实盘时发现该股已经符合止盈止损交易条件时,会远程发送信息提醒。(要记得在ConfigFiles/sys_para.json中填写邮箱信息,在微信上开启QQ邮箱提醒功能,效果如同微信提醒)
如何填写邮箱信息:
发送邮件和核心是SMTP(Simple Mail Transfer Protocol)协议,它是一组用于由源地址到目的地址的邮件传输规则。
Python真的是什么都能做,它对SMTP进行了简单的封装,只需用到两个模块,就可以轻松实现发送纯文本邮件、HTML邮件以及带附件的邮件。
哪两个模块呢?Python内置的email模块负责构建邮件,另一个smtplib模块负责发送邮件。
常规的流程,先把涉及到的模块全部导入进来,如下所示:
首先用MIMEText()构造一个最简单的纯文本邮件,其中第一个参数是邮件正文,第二个参数是内容的类型,比如'plain'表示纯文本邮件,'html'表示HTML邮件。
创建的邮件对象中,要添加From、To和Subject这些属性,否则就不是一封完整的邮件,比如会出现邮件没有主题,发件人的名称为匿名,明明收到了邮件却提示不在收件人中这些情况。
典型的例程如下所示:
再来说说负责发送邮件的smtplib模块,这个模块主要是用smtplib.SMTP()类去连接SMTP服务器,然后发送邮件。
例程中我们会用到几个常用的方法,比如set_debuglevel(1)打印和SMTP服务器交互的所有信息。login()登录SMTP服务器,sendmail()方法发邮件。
典型例程如下所示:
这里的password是个比较容易混淆的地方。不是邮箱登陆的密码,而是授权码。
第三方客户端登录QQ邮箱时是需要授权码的,包括其他邮箱也都一样,比如126、163邮箱等等。授权码可以认为是一个专用密码,适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。
如何设置呢?以QQ邮箱为例,我们在QQ邮件的帮助中心找到了方法。
在个人邮箱页面进入[设置] -> [帐户] 页面找到入口,然后把POP3/IMAP/SMTP这几个服务开启。
开启的时候有验证密保环节,需要发送短信,接着就获取到授权码,在第三方客户端的密码栏里面输入这16位授权码进行验证即可。
这样一来邮件就发送成功了!
总结
有了这个框架后,我们就打通了QTYX的风险管理环节了。当QTYX选出强势股,根据择时信号买入标的后,即可启动风险管理模块,实时监测个股止盈止损信号。
接下去大家可以在这个基础上结合自己的风格进行二次开发,把这些模块根据自己的需求组合起来使用。
说明
想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!
知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览