上一篇文章简单的股票行情演示(一) - 实时标的数据中讲述了从新浪接口抓取免费股票实时行情数据,其中缺点也明显,缺乏良好的接口说明文档,不知道可以获取哪些数据,并且返回数据格式为字符串,传输效率低下,兼容性就更差,后台数据几乎没有扩展性。
本篇文章将介绍一款神奇工具 - AKShare,它是专门用来获取金融行情数据使用的,基于该库也衍生出了不少优秀框架,其中Backtrader就是其中一款优秀的量化投资开源回测和交易框架。AKShare本身由Python
脚本编写,为了突破Python
语言的限制,该库还专门配套发布了专用的AKTools工具。
AKTools 是一款用于快速搭建 AKShare HTTP API 的工具,通过 AKTools 可以利用一行命令来启动 HTTP 服务,从而让原本专属服务于 Python 用户的开源财经数据接口库 AKShare 的使用 突破编程语言的限制。无论您使用的是 C/C++、Java、Go、Ruby、PHP、JavaScript、R、Matlab、Stata 等编程语言或软件都可以快速、轻松获取财经数据,助力您更好地展开研究和开发工作。
上述内容是引用子AKTools官方文档中对AKTools的一段描述,意思简单易懂,说白了就是在本地启动了一套HTTP服务,任何语言都可以对该本地服务发起数据请求,然后由该服务进行互联网请求,请求成功后在把数据回复给本地请求者,完全突破了Python
语言的限制,最重要的是该库返回的数据基本都是json格式,可扩展性强,并且文档比较完善。
本篇文章的内容比较简单,主要是为后续行情数据来源提供强大支持,有了AKShare提供的数据源后,我们接下来就只需要关心C++侧的数据请求、存储、转发和一些UI效果展示。接下来的内容将围绕AKShare环境搭建和笔者使用过程中总结的一些小经验进行展开分享。
熟悉Python
语言的同学安装AKShare和AKTools应该很容易,就是安装两个Python
库,而且这两个库对应的官网上也有详细的安装说明,这里仅以作者当时摸索安装环境时的过程做以简单说明。
需要使用这两个库,首先需要安装Python
环境,AKShare官网推荐的有最低版本,这里一定要遵守,最开始摸索阶段使用了32位的Python
版本,搞的好久一直报错,后来切换为64位后正常。
环境安装好之后,通过Python
命令即可启动AKTools服务,如下图所以,截图来自官网说明
python -m aktools
,按下回车,将会在本地默认启动一个HTTP服务,IP为127.0.0.1
,端口号为8080http://127.0.0.1:8080/api/public/stock_zh_a_hist
请求,能获取到数据时代表环境安装成功下图同样来自AKTools官网,是执行了上述第二步请求A 股日频率数据-东方财富
接口返回的数据
测试请求结果能正常返回数据后,说明我们的环境搭建成功,之后只需要安心发送各种数据请求即可。
AKShare 快速入门中介绍了大量接口,并且配备有中文说明,可以作为一个字典快速检索使用
AKShare 数据字典主要介绍 AKShare 提供的数据接口的详细说明,并且每一个Case都做了详细说明,比如A股-实时行情数据-新浪数据,点开此链接后大致说明如下,由于截图原因不能展示的非常全面,使用时大家可自行去官网查阅所有接口,会使用任何一种语言发起HTTP请求,那配套该库就可以请求更加多样化的金融数据。
如下图所示,作者在本地搭建好环境后,通过Talend API Tester
工具发起的获取股票5分钟K线测试请求,图中右下角为请求到的数据,为了展示更多数据,这里没有进行Json Pretty展示
对于要正式使用该模式获取数据的同学来说,每次启动该服务后,都会有一个CMD命令行窗口存在,影响美观的同时还有可能不小心误操作给关掉,对于Linux电脑来说这应该不是问题,据说命令行后加一个&
符号就可以后台执行,对于Windows电脑的作者来说表示很尴尬,不过我一直相信80%的问题都可以通过百度解决,果然办法还真有,下面我就简单贴上命令行代码,这也是从其他的coder那里拷贝而来。
- @ECHO OFF
- if "%1" == "h" goto begin
- mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
- :begin
- start /b python -m aktools --host 127.0.0.2 --port 1920
把如上脚本放入一个Bat脚本中,通过双击脚本启动的HTTP服务,将会在后台运行,此时在也没有显眼的Cmd窗口打扰。
后台进程启动后,怎么杀死呢?作者这里偷了一个烂,使用了Windows
通用杀死进程的办法,直接干掉Python.exe
可执行程序,不过这个方法缺点也比较明显,会杀死所有的Python进程,对于写C++的我足够啦。
taskkill /im python.exe /f
希望区分进程名的同学可以自行研究哈,或者有啥好的办法也可以进行留言,或者私信,感激不尽。之前在StackFlow
上有一个同学提供了一种思路,就是启动服务的时候使用不同的Python.exe
,意思就是在Python
安装目录拷贝多个Python.exe
,然后命名成不同的名称,比如启动AKTools
可以命名为AKToolsPython.exe
,这样就可以和其他进程区分。
此篇文章主要讲述了数据源获取方式,后续还会有更多文章出来,比如K线展示、分时图展示等,敬请期待。。。
值得一看的优秀文章:
如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!!
很重要--转载声明
本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords
如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。