我是靠谱客的博主 典雅世界,最近开发中收集的这篇文章主要介绍小散量化炒股记|要克服人性弱点?激活股票全自动化交易!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

450e2eb0966580353e115ec8aaffa256.png

前言

8e7c248e8528f410e4b70a34791b0e81.png

股票的自动化交易接口在2015年之后就被管制了,于是对于普通股民来说只能通过手动下单方式完成量化交易最后一个环节。

当然,对于股票交易来说,大部分人更偏向于中低频的交易范畴,毕竟高频交易在政策限制下一般人并没有什么优势。因此大多数股民大可不必对自动下单有如此强烈的需求。

不过仍然有不少股民希望能够实现自动下单功能,特别是对于特别容易上头买卖股票,或者平时没时间操作股票的人群。

于是出现了一种曲线救国的方法——用程序自动操作交易客户端。


0ae4326d1b98fa89216002cccea95801.png

概述原理

4157c035cefa4bab4fcc8a86889806cb.png

通常使用PC时,与PC交互的主要途径是看屏幕显示、听声音,点击鼠标和敲键盘等等。

在自动化办公的趋势下,繁琐的工作可以让程序自动完成,比如自动化测试等,这时会使用到不少的软件程序。

很多软件除了可以GUI方式操作外还可以用CLI接口操作,不过当一些软件未提供CLI接口时,我们应该怎么办呢?

答案是我们可以用程序控制桌面上的窗口、模拟点击鼠标或按下键盘等动作来释放自己。这类方案当前只适用在windows桌面软件。

所以目前市面上股票量化交易中所谓的外挂软件、easytrader库等等,它们即是基于这个原理,利用程序登陆证券账号客户端,模仿人为交易。


217754907bdd903f85b9f19aea41d174.png

实现方案

0ca652add2a1d0ce74e28dda76beb9f7.png

由于不同券商的客户端操作方法是不一样的,所以不同券商的自动交易程序也都不一样。

接下来,我们主要以同花顺客户端为例来进一步介绍自动交易股票的实现方案。

实现自动交易股票的核心是pywinauto这个Python库。它可以将鼠标和键盘操作发送到窗口对话框和控件,常用于在Windows平台上自动化操作GUI界面。

目前比较流行的easytrader库就是基于这个原理实现了调用一些券商客户端完成股票自动化交易的功能。

不过easytrader对于同花顺客户端已经无法跑通了,另外一个THSTrader库,测试了下目前也是失效的(有可能和不同版本的客户端不一致了)。

我在THSTrader库的基础上做了二次调整完成了查余额、查持仓自动买卖的功能。

自动下单的第一步是打开交易软件并且登陆上去。

选择登陆同花顺交易客户端的原因是同花顺客户端是可以用来登陆其他证券公司账户的,这样就不用再使用广发、方正等证券客户端了。176ba3c8a5938d9440851f6a2487450a.png

从交易客户端可以看到需要填入验证码,说明一下的是,当有验证码要识别的时候,可以使用esseract库完成。

不过如果事先勾选了自动登录的话就不需要输入验证码了,打开后则自动完成登录。

登陆以后,再接下来的工作就是调用pywinauto提供的处理窗体句柄的接口,配合上鼠标和键盘操作来模拟人操作界面上的一些菜单项。88f366dd3f63aeda93384095c63b8a8f.png

需要注意的是,有些可以简化的步骤选择默认确定:

5ea4efcb7d303bef30c47223cfb70091.png

在pywinauto中Application()实例是与自动化的应用程序的所有工作的联系点。 因此,Application实例需要连接到进程。有两种方法可以做到这一点:

start(self, cmd_line, timeout=app_start_timeout)  # 实例方法:
connect(self, **kwargs)  # instance method:
  • start() 在应用程序未运行且需要启动它时使用。

  • connect() 是指定已在运行的应用程序,也就是说在使用connect ()之前,应用程序必须已经打开了。

我们这里使用的是以下语句,其中exe_path为:r"C:同花顺软件同花顺xiadan.exe"

self.app = pywinauto.Application().connect(path=exe_path, timeout=10)

一旦应用程序实例知道它连接到哪个应用程序,就需要指定要处理的对话框。

我们可以使用标题或者属性来选择对话框。比如:

self.main_wnd = self.app.window(title_re="网上股票交易系统5.0")

然后在对话框上通过control_id和class_name指定控件进行操作。对于如何确定要操作控件的control_id和class_name,可以使用Spy++ 小工具。

self.main_wnd.window(control_id=129, class_name='SysTreeView32')

发送键盘和鼠标处理是用以下方式:

pywinauto.keyboard.send_keys("{ENTER}")
self.app.top_window().window(control_id=0x417, class_name='CVirtualGridCtrl').double_click(coords=(x, y))

68f0547d703b77a03909a39ce8ab179e.png

效果展示

fb66c63b97bb18070ebb88b1e698bb86.png

本篇内容我们介绍了市面上推行的股票自动交易原理,一方面是揭开这层神秘的面纱,另一方面也是为了给想实现自动交易的朋友们指引一个可行的方向。

我们基于THSTrader库做了二次更改调通了关键的功能。比如自动下单的效果展示如下,我们将全市场中筛选出来的双底形态按现价买入。

当然不同券商客户端具体的下单、撤单、查询资金、查询持仓等方法略有不同,更多地是需要不断地去调试出模拟的方法。

说明

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

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

245ec285d9b61435b59cff76b6862d38.png

元宵大师的量化交易书籍开售!!
京东、当当、天猫有售!!

3d124c1550cc195057d39deec5900df5.png 

最后

以上就是典雅世界为你收集整理的小散量化炒股记|要克服人性弱点?激活股票全自动化交易!的全部内容,希望文章能够帮你解决小散量化炒股记|要克服人性弱点?激活股票全自动化交易!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部