Loading...
墨滴

yuanzhoulvpi

2021/10/26  阅读:38  主题:橙心

股票数据下载

股票数据搞到手难

搞时间序列的,难免会需要用到股票数据,但是现在搞股票数据岂不是一言难尽,有下面几个困难吧:

  1. 数据下载需要积分,积分越高,下载的时间范围就可以选择久一点。
  2. 数据完全需要买,不买还不给你用。

这些痛,我在做我大学毕业设计的时候,都经历过😭。现在我有时间了,我决定要解决这个痛点。

解决方法

我自己写了一个python脚本,可以下载任意股票数据(只是个股股票,不包括指数型股票)。对股票的时间范围下载没有任何限制。

脚本特点

这个脚本有什么特点:

  1. 使用起来简单:放到文件夹里面,或者复制到代码里面,直接就能使用。
  2. 速度快:我把耗时长的部分全部用并行改写了,这样可以充分的利用计算机的多核并发功能,保证数据下载更快!
  3. 参数简单:就几个简单的参数,而且直接模仿我的案例就可以使用起来。
  4. 文档丰富:全中文,我就是面向中国国内用户的,所以文档介绍直接写的中文。
  5. 下载方便:这个代码仓库直接放在gitee上面,方便国内用户直接下载,无需翻墙到GitHub。
  6. 社区成熟:下载股票数据这个功能我是放在python与时间序列板块里面的,因此有什么问题,也都可以直接在群里问,有什么bug直接提出来,我马上给你解决。
  7. 没有任何套路!!!免费!!!开源!!!

使用教程

下载脚本

直接去我的gitee代码仓库,下载代码。代码仓库地址为:https://gitee.com/yuanzhoulvpi/time_series 这个仓库里面的【下载个股股票数据】📁就是我们整个项目集合。里面的downloaddata.py就是我的整个的代码脚本。代码不到80行。

1. 简单版本

  1. stock_id: 是传递的股票的代码,这个股票包含沪深所有个股,但是不包括指数。在传递参数的时候,需要传递参数类型为字符串,也就是前后加上双引号或者单引号。比如:'000001'
  2. start_date: 想要的开始时间,需要注意这个时间传递的样式是yyyy-mm-dd,格式是文本形式,比如'2021-01-02'
  3. end_date: 要求和start_date一样,在这个基础上,还要求 start_date < end_date

返回结果:一个pandas的数据框,这个数据框的列为:'日期', '开盘价', '最高价', '最低价', '收盘价', '涨跌额','涨跌幅(%)', '成交量(手)', '成交金额(万元)', '振幅(%)', '换手率(%)'

# 导入这个文件里面的DlStock函数
from downloaddata import DlStock

# 创建一个新对象
dlstock_object = DlStock(stock_id='600000', start_date='1999-11-10', end_date='2021-10-25')

# 运行这个对象的run函数
data1 = dlstock_object.run()

# 就可以查看数据的前几行了
data1.head()

2.加入睡眠模式

如果你下载的数据比较多,或者担心频繁的访问服务器,对服务器造成压力,可以设置休眠参数

  1. need_sleep: 是开启休眠参数,默认不开启休眠,代表每一轮运行,中间不间断的对服务器访问。
  2. sleep_time_range: 当不开启休眠后(也就相当于:need_sleep=True,这个时候默认每一轮的休眠时间是在[0,10] 内整数任意选择一个值,然后程序休眠对应的秒数。当然你也可以自己设置休眠的时间范围,比如[a,b],但是要求a < b.
# 导入这个文件里面的DlStock函数
from downloaddata import DlStock

# 创建一个新对象
dlstock_object = DlStock(stock_id='600000', start_date='1999-11-10', end_date='2021-10-25',
                         need_sleep=True, sleep_time_range=[010])
data1 = dlstock_object.run()
data1.head()

3. 并行下载

如果你觉得下载数据太慢了,希望提高并行的数量,那么你可以设置njobs参数。

  1. njobs: 这个参数默认是10,代表最高同时有10个下载器在分批下载你的数据。如果你觉得10个太小了,可以设置更多,比如12,16,20等,只要是正整数即可。
# 导入这个文件里面的DlStock函数
from downloaddata import DlStock

# 创建一个新对象
dlstock_object = DlStock(stock_id='600000', start_date='1999-11-10', end_date='2021-10-25',
                         njobs=10)
data1 = dlstock_object.run()
data1.head()

联系我

希望加入社区的话,可以加入我的【python与时间序列】的微信群。

代码仓库地址

  1. https://gitee.com/yuanzhoulvpi/time_series

写在最后

我的公众号和别的公众号还是有点区别的。

虽然我可能和别的公众号比起来,也都是写python、写R。

但是我不想做那种把免费的资料整理整理发给你们的公众号;

我也不想只是的介绍别人写的R包有多牛逼,或者介绍python的某个包有多牛逼的公众号。

因为这些内容,任何人都可以做,毕竟我刚开始也就是这么做的。不是说这样的不好,我可没有这样的意思。

而是我的志向是分享我写的代码、我写的脚本、我的学习过程等。希望我的代码、我的脚本 可以给别人带来帮助。别人用了我的代码都说好~

我想形成我自己的技术护城河,我想拥有我自己的用户罢了。

有人问我,你这把代码分享给别人,你不怕别人抄你代码吗?这个问题,我也想过。就那这个下载股票数据的脚本为例,我完全可以不给你们,我可以拉个群,定时发布股票数据,这个群还是收费的。

可是没有这么做,因为我觉得:一花独放不是春,满园春色才是春。

如果很喜欢我的脚本,可以收藏我的代码仓库,收藏我的文章。

那就说这么多,后面我将继续产出更多优质内容,致力于让我的读者看到别人看不到的内容。继续开源~~~

yuanzhoulvpi

2021/10/26  阅读:38  主题:橙心

作者介绍

yuanzhoulvpi