1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 股票量化分析工具QTYX使用攻略系列——远程量化机器人

股票量化分析工具QTYX使用攻略系列——远程量化机器人

时间:2022-03-13 11:01:02

相关推荐

股票量化分析工具QTYX使用攻略系列——远程量化机器人

前言

不少上班族的股友在和我交流时提到,因为平时上班的原因总是错过最佳的买卖点,十分无奈!

也有很多加班一族的股友和我反应他们经常很晚才到家,几乎没有时间去复盘。确实,复盘挺花时间的,而且随着金融市场的发展,现在要看的东西也越来越多。

我最开始决定用量化这个工具的目的之一,是为了提高分析股票的效率。毕竟,在这个信息技术这么发达的时代,很多事情可以让计算机帮我们完成,这样可以节省下来很多时间。

于是,我们设计一款远程量化机器人就可以完美解决这些问题。

接下来我们罗列一些远程量化机器人应用场景。

应用场景举例

应用场景一:适合上班族盯盘的应用场景。

让远程量化机器人帮助我们盯盘,当实盘行情到达我们设定的目标时,通过QQ邮箱、微信或者钉钉等即时聊天工具通知我们。

虽然目前券商的APP上面也有提醒功能,但是种类比较单一和固定,当我们的触发逻辑比较复杂或者个性化的时候就无法满足了,所以投资交易领域需要一点特立独行,少一点从众随大流。

应用场景二:适合加班族的量化选股场景。

每天让家里的远程量化机器人对全市场的股票执行一遍选股分析,比如跑一下双底形态选股分析,然后把分析结果以附件的形式远程发送到你的手机上。

这样即使在加班,或者是在回家的路上,也可以利用碎片时间去制定第二天的投资策略。

应用场景三:每天定时自动更新数据库。

当我们获取的股票数据是爬虫方式的时候,有可能因为各种原因忘记了下载当天的数据,从而缺了某天的数据,要知道缺失一天的数据对回测及分析都是会有不小的影响。这个时候可以定时让远程量化机器人更新股票数据。

总体来说实现以上这些场景需要以下几部分功能:

获取实时行情数据

监测交易触发信号

远程发送分析报告

量化机器人任务调度

自动运行量化机器人

多线程实时行情获取

股票行情数据对量化交易者来说非常重要,无论是短线交易者还是中长线交易着。

对于短线交易者来说,获取实时行情数据的方案涉及到盘中分析和买卖点监测的时效性。

对于中长线交易中来说,盘后更新全市场数据也要求下载尽可能快。如果用第三方Python数据库,比如tushare等,会受到服务器端的限制,全市场个股行情数据获取需要几十分钟。

本主题提及的A股实时行情数据获取方案,只需要三秒内就能获取全市场个股行情数据。

对于短线交易者来说每间隔3秒调取一次即可。对于中长线交易者来说,每天收盘后调取一次后存储到自己的数据库即可。

接下来就和大家详细介绍下这个方案!

小散量化炒股记|基于多任务爬虫技术, 实现A股实时行情Level1采样

监测交易信号触发

量化机器人在实盘时会读取“交易条件单”和“持有股票池”的配置,然后每3s获取到全市场最新数据时,判断“交易条件单”和“持有股票池”中的指令,符合条件的就触发报警并执行交易。在合理的范围内时,表明该股符合正常的波动,无需过多的关注。

“交易条件单”和“持有股票池”是以Json格式存储的。

如何生成“交易条件单”和“持有股票池”中的内容呢?

首先要介绍下QTYX完整架构,如下所示。其中包括了QTYX股票量化分析系统和实盘机器人两部分,它们之间是以“交易条件单”及“持有股票池”的形式链接起来的。

“交易条件单”中记录的是实盘中需要交易的股票信息,比如买卖的股票、数量、价格、盘中执行的策略等

“持有股票池”中记录的是已持有股票的止赢止损设定值。盘中触发到止赢止损值时会触发卖出信号。

交易条件单是在自选股票池和编写的交易策略基础之上生成的,也就是说通过使用QTYX股票量化分析系统所提供的功能经过一系列的分析,然后生成条件单去交易股票。

这些分析功能比如双底形态选股、RPS排名选股、金叉死叉策略、跳空缺口分析等等。关于这方面具体介绍可以查看往期的公众号《搭建系统》专题。

如何生成交易条件单呢?点击“交易”后进入子页面。

点击“加载自选股”后会把自选股中的股票最新行情数据加载到界面中。

点击股票代码后会出现交易单配置界面。我们根据自己策略分析的结果填写交易方向(买或者卖)、买卖的价格、买卖的股票数量。

实盘时发现该股已经到了符合交易的条件时,默认会远程发送信息提醒。

如果勾选自动交易的话,系统会根据设置的参数自动执行买卖操作。需要注意的是,使用自动交易功能要提前测试好自动交易环境。可以参考以下公众号文章。

小散量化炒股记|要克服人性弱点?激活股票全自动化交易!

如果大家把自动交易调试稳定的话,可以把自动交易的函数添加到以下代码处,这样就完成了自动交易这个末端环节。

if val['auto_trade'] == True:print("自动交易需调试交易环境,查看公众号《小散量化炒股记|要克服人性弱点?激活股票全自动化交易!》")

配置完成后就添加到了左侧的交易股票池中了。

如果要删除或者更改参数的话,只需双击股票池中的股票即可。

当触发买入“交易条件单”中的股票后,会自动更新至“持有股票池”中。如果有单独手动下单买入的股票,也可以通过在ConfigFiles/hold_para.json中添加信息方式更新“持有股票池”。

点击“持有股票池”股票代码后会出现配置界面。我们可以更改止盈止损的模式和幅度,同时配置界面也显示了买入的价格和持有后最高的价格。

目前我们支持的止盈模式是固定比例的,比如买入后涨幅达到40%止盈。止损模式是动态回撤止损,比如买入后股价从最高价下跌5%后就止损退出。

当然这个触发条件是一个非常基本的逻辑,相信每个人都有自己的一套判断条件,比如分成多档条件,逐一递进式地判断;比如拉升或者砸盘的速度;比如由涨转跌或者由跌转涨的过渡等等……

远程发生分析报告

远程提醒的功能,解决方案有用微信、短信、邮件、钉钉之类的方式。这里我们介绍下邮箱这种相对有效的方式来远程提醒。(我在微信上开启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位授权码进行验证即可。

这样一来邮件就发送成功了,我已经得到量化盯盘提醒了!!!手机邮箱也一样可以收到哦!

量化机器人任务调度

在量化机器人QuantRobot.py中有一个TimeTrigger类,可以在其中的trigger_run中添加自己要定时执行的任务:

def trigger_run(self):while True:if self.in_trade_time(cur_time):# 9:25--11:31 12:59--15:01 时段获取数据print(u"当前时间{0}".format(cur_time.strftime("%Y-%m-%d_%H:%M:%S")))elif self.before_trade_time(cur_time):print(u"开始时间{0}--未开盘".format(self.start_time.strftime("%Y-%m-%d_%H:%M:%S")))elif self.after_trade_time(cur_time):print(u"结束时间{0}--已收盘".format(self.end_time.strftime("%Y-%m-%d_%H:%M:%S")))else:print(u"休息时间-- 11:30至13:00")time.sleep(CONF_SCAN_TIME) # 3秒采集一次, 执行时间在2秒内, 等待1秒

比如我们在交易时间段三秒周期调用了实时行情获取类RealTimeData的get_daily_thread()接口,也可以在收盘的时候调用这个接口,并且把数据以csv格式存储到本地,或者存到本地的数据库。

注:QuantRobot.py中的RealTimeData类和CrawerDaily.py中的CrawerDailyData类实现方式类似,都是同一个爬虫接口。

自动运行量化机器人

我们已经准备好了量化机器人的Python脚本(QTYX目录下的QuantRobot.py),能达到定时执行Python程序的本质还是用到Windows下的任务计划,在日常工作中这个功能经常用于提高工作效率的。

接下来创建一个定时任务来执行这个脚本。

第一步,右键我的电脑,点击管理。在弹出的计算机管理对话框点击任务计划程序—>创建基础任务。

第二步,在弹出的创建基本任务向导输入名称和描述,然后点击下一步。

第三步,在触发器页面设置脚本执行的时间计划,选择每天,点击下一步。

第四步,设置每天触发的时间,点击下一步。

第五步,在操作页面,选择启动程序,点击下一步。

第六步,此处程序或脚本中填写的一般是编译器的名称,一般对Python来说就是Python.exe(找到你的安装路径),添加参数就是你所要执行的Python文件(完整路径),这样填写的本质其实就是在命令行中执行Python一样。

第七步,设置到这里已经算是完成了,接着就是等待它自动执行了。

说明

1. 我们会把完整的源码上传到知识星球《玩转股票量化交易》中,帮助小伙伴们更好地掌握这个方法。

2. 想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!

知识星球介绍点击:知识星球《玩转股票量化交易》精华内容概览

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。