股票数据搞到手难
搞时间序列的,难免会需要用到股票数据,但是现在搞股票数据岂不是一言难尽,有下面几个困难吧:
- 数据下载需要积分,积分越高,下载的时间范围就可以选择久一点。
- 数据完全需要买,不买还不给你用。
这些痛,我在做我大学毕业设计的时候,都经历过😭。现在我有时间了,我决定要解决这个痛点。
解决方法
我自己写了一个python脚本,可以下载任意股票数据(只是个股股票,不包括指数型股票)。对股票的时间范围下载没有任何限制。
脚本特点
这个脚本有什么特点:
- 使用起来简单:放到文件夹里面,或者复制到代码里面,直接就能使用。
- 速度快:我把耗时长的部分全部用并行改写了,这样可以充分的利用计算机的多核并发功能,保证数据下载更快!
- 参数简单:就几个简单的参数,而且直接模仿我的案例就可以使用起来。
- 文档丰富:全中文,我就是面向中国国内用户的,所以文档介绍直接写的中文。
- 下载方便:这个代码仓库直接放在gitee上面,方便国内用户直接下载,无需翻墙到GitHub。
- 社区成熟:下载股票数据这个功能我是放在python与时间序列板块里面的,因此有什么问题,也都可以直接在群里问,有什么bug直接提出来,我马上给你解决。
- 没有任何套路!!!免费!!!开源!!!
使用教程
下载脚本
直接去我的gitee代码仓库,下载代码。代码仓库地址为:https://gitee.com/yuanzhoulvpi/time_series 这个仓库里面的【下载个股股票数据】📁就是我们整个项目集合。里面的downloaddata.py
就是我的整个的代码脚本。代码不到80行。
1. 简单版本
- stock_id: 是传递的股票的代码,这个股票包含沪深所有个股,但是不包括指数。在传递参数的时候,需要传递参数类型为字符串,也就是前后加上双引号或者单引号。比如:
'000001'
- start_date: 想要的开始时间,需要注意这个时间传递的样式是
yyyy-mm-dd
,格式是文本形式,比如'2021-01-02'
- 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.加入睡眠模式
如果你下载的数据比较多,或者担心频繁的访问服务器,对服务器造成压力,可以设置休眠参数。
- need_sleep: 是开启休眠参数,默认不开启休眠,代表每一轮运行,中间不间断的对服务器访问。
- 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=[0, 10])
data1 = dlstock_object.run()
data1.head()
3. 并行下载
如果你觉得下载数据太慢了,希望提高并行的数量,那么你可以设置njobs
参数。
- 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与时间序列】的微信群。
代码仓库地址
https://gitee.com/yuanzhoulvpi/time_series
写在最后
我的公众号和别的公众号还是有点区别的。
虽然我可能和别的公众号比起来,也都是写python、写R。
但是我不想做那种把免费的资料整理整理发给你们的公众号;
我也不想只是的介绍别人写的R包有多牛逼,或者介绍python的某个包有多牛逼的公众号。
因为这些内容,任何人都可以做,毕竟我刚开始也就是这么做的。不是说这样的不好,我可没有这样的意思。
而是我的志向是分享我写的代码、我写的脚本、我的学习过程等。希望我的代码、我的脚本 可以给别人带来帮助。别人用了我的代码都说好~
我想形成我自己的技术护城河,我想拥有我自己的用户罢了。
有人问我,你这把代码分享给别人,你不怕别人抄你代码吗?这个问题,我也想过。就那这个下载股票数据的脚本为例,我完全可以不给你们,我可以拉个群,定时发布股票数据,这个群还是收费的。
可是没有这么做,因为我觉得:一花独放不是春,满园春色才是春。
如果很喜欢我的脚本,可以收藏我的代码仓库,收藏我的文章。
那就说这么多,后面我将继续产出更多优质内容,致力于让我的读者看到别人看不到的内容。继续开源~~~