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

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 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
## 讲师介绍: 近 5 年个人投资理财年化收益平均超 25%。如果你也想提升自己的睡后收入,轻松赚钱,那么这门课就是为你量身打造。课程基于一个完整真实的量化交易业务来讲授,并融入老师的理财经验以及使用编程技术辅助投资的技巧,让你面对各种复杂投资情况也能做到游刃有余。 ## 学习目标: 从不懂“理财”开始到实现自动交易,成为一个“技术流”理财高手 编程技术 + 核心量化策略 + 交易系统开发 + 讲师经验分享,学会用技术辅助理财 本课程从最基础的什么是量化开始讲起,即使对投资理财不了解同样可以学习,轻松入门无压力。 从如何获取数据开始,到实现实盘交易,课程对量化交易的每一步都进行细致讲解,为你铺开量化交易的每一个细节。 不仅仅只是教你学会使用某种工具,更会教给你量化交易的投资思想,让你面对各种情况都游刃有余。 ## 课程亮点: 设计适合自己并能适应市场的交易策略,才是量化交易的灵魂 课程亲手带你设计并实现两种交易策略,快速培养你的策略思维能力 1. 择时策略:通过这个策略学会如何利用均线,创建择时策略,优化股票买入卖出的时间点。2. 选股策略:掌握选股策略的核心逻辑,并基于收益率创建动量选股策略,并验证其有效性。 手把手带你打造一个易扩展、更安、效率更高的量化交易系统 第三方平台大而,不易扩展,效率还差,信息安也是大问题,打造自己的交易平台才是更优解

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值