简单的股票行情演示(二) - AKShare

原文链接:简单的股票行情演示(二) - akshare

一、概述

上一篇文章简单的股票行情演示(一) - 实时标的数据中讲述了从新浪接口抓取免费股票实时行情数据,其中缺点也明显,缺乏良好的接口说明文档,不知道可以获取哪些数据,并且返回数据格式为字符串,传输效率低下,兼容性就更差,后台数据几乎没有扩展性。

本篇文章将介绍一款神奇工具 - 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语言的同学安装AKShareAKTools应该很容易,就是安装两个Python库,而且这两个库对应的官网上也有详细的安装说明,这里仅以作者当时摸索安装环境时的过程做以简单说明。

需要使用这两个库,首先需要安装Python环境,AKShare官网推荐的有最低版本,这里一定要遵守,最开始摸索阶段使用了32位的Python版本,搞的好久一直报错,后来切换为64位后正常。

  1. 安装Python 64 3.8.10 版本
  2. pip install AKShare
  3. pip install AKTools
  4. [pip install pyinstaller]打包使用,可以选择性安装
  5. [python -m pip --upgrade pip ]升级pip工具使用

环境安装好之后,通过Python命令即可启动AKTools服务,如下图所以,截图来自官网说明
image

  1. 命令行输入python -m aktools,按下回车,将会在本地默认启动一个HTTP服务,IP为127.0.0.1,端口号为8080
  2. 使用Postman模拟发送http://127.0.0.1:8080/api/public/stock_zh_a_hist请求,能获取到数据时代表环境安装成功

下图同样来自AKTools官网,是执行了上述第二步请求A 股日频率数据-东方财富接口返回的数据
image

测试请求结果能正常返回数据后,说明我们的环境搭建成功,之后只需要安心发送各种数据请求即可。

三、使用总结

1、API文档

AKShare 快速入门中介绍了大量接口,并且配备有中文说明,可以作为一个字典快速检索使用

2、数据字典

AKShare 数据字典主要介绍 AKShare 提供的数据接口的详细说明,并且每一个Case都做了详细说明,比如A股-实时行情数据-新浪数据,点开此链接后大致说明如下,由于截图原因不能展示的非常全面,使用时大家可自行去官网查阅所有接口,会使用任何一种语言发起HTTP请求,那配套该库就可以请求更加多样化的金融数据。

image

3、效果截图

如下图所示,作者在本地搭建好环境后,通过Talend API Tester工具发起的获取股票5分钟K线测试请求,图中右下角为请求到的数据,为了展示更多数据,这里没有进行Json Pretty展示

image

4、后台服务

对于要正式使用该模式获取数据的同学来说,每次启动该服务后,都会有一个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线展示、分时图展示等,敬请期待。。。

四、相关文章

  1. Qt 之股票组件 - 自选股 -- 列表可以拖拽、右键常用菜单
  2. Qt 之股票组件 - 股票检索 -- 支持搜索结果预览、鼠标、键盘操作
  3. 简单的股票行情演示(一) - 实时标的数据
  4. QCustomplot使用分享(一) 能做什么事
  5. QCustomplot使用分享(二) 源码解读
  6. QCustomplot使用分享(三) 图
  7. QCustomplot使用分享(四) QCPAbstractItem
  8. QCustomplot使用分享(五) 布局
  9. QCustomplot使用分享(六) 坐标轴和网格线
  10. QCustomplot使用分享(七) 层(完结)

值得一看的优秀文章:

  1. 财联社-产品展示
  2. 广联达-产品展示
  3. Qt定制控件列表
  4. 牛逼哄哄的Qt库

如果您觉得文章不错,不妨给个打赏,写作不易,感谢各位的支持。您的支持是我最大的动力,谢谢!!!




很重要--转载声明

  1. 本站文章无特别说明,皆为原创,版权所有,转载时请用链接的方式,给出原文出处。同时写上原作者:朝十晚八 or Twowords

  2. 如要转载,请原文转载,如在转载时修改本文,请事先告知,谢绝在转载时通过修改本文达到有利于转载者的目的。


posted @ 2022-11-24 11:51  朝十晚八  阅读(1197)  评论(0编辑  收藏  举报

返回顶部