用Excel实现自动获取期货、期权、股票行情及下载历史数据 您所在的位置:网站首页 steam余额怎么操作 用Excel实现自动获取期货、期权、股票行情及下载历史数据

用Excel实现自动获取期货、期权、股票行情及下载历史数据

2023-05-03 05:51| 来源: 网络整理| 查看: 265

2023年1月14日:更新一下之前的股票下载器,目前把相关制作过程已经新录制成了教学视频(PS:不是产品演示视频!),感兴趣的同学可以访问B站链接:https://www.bilibili.com/video/BV15A411f7s9/

距离上次发这个贴子已经过去了半年了,期间又在之前的基础上完善细化了多版,可能比下面介绍的又多了些功能,如果要看新的成品的演示和获取软件程序,这里就总结在开头,如果想看细节,请直接下滑:

股票行情、基本面、财报、历史数据批量下载器:https://www.bilibili.com/video/BV12T4y1h7Fd/

股票资金流向历史分时资金下载器:https://www.bilibili.com/video/BV1ma411v7FM/

股票国家队持股下载器:https://www.bilibili.com/video/BV1E541117ei/

股票历史分价表下载器:https://www.bilibili.com/video/BV1cu411r7qp/

股票高频Tick历史数据下载器:https://www.bilibili.com/video/BV16g411S7nU/

股票历史市盈率下载器:https://www.bilibili.com/video/BV1fr4y1u7kY/

期货期权行情及历史数据下载器:https://www.bilibili.com/video/BV1sS4y1C7GU/

期货成交持仓龙虎榜下载器:https://www.bilibili.com/video/BV1ES4y1h7mk/

如果要获取完整程序,可以访问(高能预警,为了恰饭,付费分享):https://item.taobao.com/item.htm?ft=t&id=666428898403

——————分割线20220917——————

最初诞生VBA网抓的想法,还是因为自己炒股想要更快速获取信息,又不想买费用高昂的券商软件。后来调查发现,其实Python才是最出名的爬虫制作工具,但是要安装环境,最后做出来又只能在自己电脑上用,通用性不太强,所以就把目光对准了使用Excel或者VBA网抓。

(一)使用Excel自带的Power Query获取网页表格

如果一个方法能解决现有需求,说实话,我是没有动力去找第二个方法的。在使用VBA网抓之前,我就已经开始使用Excel的Poewr Query在做股票信息分析,最开始用的Power Query的“新建查询”功能,从网页获取表格数据(具体方法可以参考:https://finance.sina.com.cn/tech/2021-05-06/doc-ikmyaawc3588981.shtml),可以直接更新到Excel表格中。数据源当时选取的是中财网数据引擎(https://data.cfi.cn/cfidata.aspx),不得不说这个网站真的对使用Excel自动网页数据源获取真的非常友好,因为都是可以识别的表格形式数据。更新Excel后是这个样子。之后利用简单学习的Power Query操作就可以快速清洗并分析处理大量数据。

然而,后来其实发现了这个方法的局限性,就是对数据源要求太高了,很多网站的表格数据,用Excel导入网站数据源的形式识别不了,而且我想要的股票或者期货历史数据,也不在这个网站中。并且Power Query这个方法,WPS是不支持的。这样无奈最后放弃了这个思路,开始探索真正的VBA网抓实现方法。

(二)Excel VBA 实现期货行情获取及历史数据下载

第一步,选择数据源。如果是用Python网抓,其实数据源是非常好找的,网上很多都是为Python开放的接口,开发者甚至都不需要找源网页,直接用各种接口提供的现成的结构化数据就可以,连数据处理的步骤都省略了。然而,毕竟还有很多人像我一样,电脑上没有Python,电脑上更不会去安装Python库(这些现成的接口都需要在电脑上安装Python库),或者说不希望看到换了电脑软件就用不了的情况,所以数据源还是选择通用一点的。经过调研中国的期货市场情况后,发现其实获取数据只要从四大交易所(郑州、大连、上海、中国金融期货交易所)官网获取就可以了,这些网站都提供有下载链接和一键下载的功能。然而,在后续分析html请求和响应的时候,最让我这个强迫症患者接受不了的情况发生了,四个交易所里面,三个可以抓,一个有反爬虫抓不了。。。这样还得再找其余的接口,不行,接受不了!后来发现,新浪接口真是个宝贝,四个交易所都包括了,好的就决定分析这个网页,然后抓取,成功!附新浪接口链接(需要自行分析这个网页,找到适用的名称规则并简化):

实时行情:http://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1

历史数据:https://vip.stock.finance.sina.com.cn/q/view/vFutures_History.php?jys=czce&pz=AP&hy=AP0&breed=AP0&type=inner&start=2021-11-23&end=2021-12-23

第二步,代码实现。VBA网抓入门可以参考B站的一位UP主发布的免费教程(链接https://www.bilibili.com/video/BV1uJ411t7hY/)在这次抓取期货时,先分析的新浪财经的网页,发现这个接口并不复杂,可以直接用Winhttp请求,然后用正则表达式处理返回数据即可。核心代码如下:

发送请求部分

正则表达式匹配及写入数组部分

需要注意的是,在更新产品行情时,产品的名称网抓返回的是unicode码,所以还需要额外将其转为汉字,这部分编写了一个自定义函数,代码如下:

网抓的部分还有一个需要注意的就是对返回json格式数据的处理。其实VBA可以引用script组件,实现对json数据的快捷方便的解析,而且引用此类组件解析json,自动会实现unicode转汉字。但是此类方法测试中wps运行正常,但是有的excel会报错,说是缺少ActiveX控件的429错误,这个就不好解决了。一般这类错误不是excel版本导致的,大概率是没有完整安装,或者同时安装wps及office导致某些系统组件注册失败。这种错误通过修改代码解决不了(除非更改代码逻辑,不调用其余组件),是系统的问题,例如注册表项受损、操作系统的文件被删除、安装了不完整的excel、系统文件受损等。所以最后为了增加兼容性,避免此类错误,又重新修改了代码,不用script组件解析json,而是用正则表达式。

网抓后,简单写一些数据处理的函数公式,以及设计了两种存储模式(存储到当前工作簿,或新建工作簿),这样软件功能就算是完整了。计算日期的时候,excel自带的workday函数非常好用。

第三步,交互窗体。最后设计了一个用于数据输入的交互窗体,代码的话主要就是用到了inputbox方法,核心代码及界面如下:

目前我将我的这个软件已经分享在了我的网盘中,并且后续的更新(如果网抓不管用了)版本也会在同一个网盘链接分享。但辛辛苦苦开发一个软件,还是希望得到点支持,可以试试访问:

ExcelVBA期货期权行情历史数据下载器支持68类期货15类期权含ETF

用类似的方法实现股票信息获取的教程,可以参考我的另一篇文章https://zhuanlan.zhihu.com/p/442447962

或者访问:

股票信息下载软件历史股价股息财务报表自动更新Excel网抓爬虫VBA

最后,我个人不是金融和投资方面的专家,只是懂一些爬虫和数据分析,距离真正的金融专家还很远。很遗憾不能在业务上指导,但是我感觉如果有办法教散户投资或者股票期货基金交易持续盈利的话,多看书或许会有帮助吧,找了几本书,难的是花时间去看。。。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有