Python专题, 语言

使用AKShare库获取股票数据

很久之前写过一篇关于Tushare获取股票数据并进行股票回测的博文,由于Tushare库改为门槛比较高的积分制和收费制,使用起来很麻烦,因此目前不再推荐Tushare库,已把原博文删除。

除了Tushare库外,还有Baostock库可以获取股票数据。虽然Baostock库目前不需要注册和登录,但调用代码时实际上是用默认的匿名API账号和密码登录的,因此也存在类似于Tushare库转为收费的风险。

本篇推荐AKShare库来获取股票数据。这个库本质是爬虫,调用时获取各个权威网站的股票数据以及其他数据。该工具可以用于学术(经济/社会)研究的目的。具体使用方法见官网的说明。AKShare官网:https://akshare.akfamily.xyz/。安装方法:pip install akshare --upgrade。

代码示例:

import akshare as ak

stock_zh_a_hist_df = ak.stock_zh_a_hist(symbol="000002", period="daily", start_date="20170101", end_date='20250101', adjust="")
print(stock_zh_a_hist_df)

个人把一些代码集成到Guan软件包中,在本篇中可以更加简洁地进行调用,从而实现一些基本功能。Guan软件包的安装:pip install guan --upgrade。网址:https://py.guanjihuan.com。在这里同样也需要安装AKShare。代码如下:

"""
This code is supported by the website: https://www.guanjihuan.com
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/35979
"""

import guan

print(len(guan.all_stock_symbols()), '\n')
print(guan.all_stock_symbols(), '\n')
print(guan.find_stock_name_from_symbol(symbol='000002'), '\n')
title, stock_data = guan.history_data_of_one_stock(symbol='000002', period='daily')
print(title, '\n')
print(stock_data[0])

# 日线
plt, fig, ax = guan.import_plt_and_start_fig_ax()
guan.plot_without_starting_fig(plt, fig, ax, stock_data[:, 0], stock_data[:, 2], style='-')

# 月线
title, stock_data = guan.history_data_of_one_stock(symbol='000002', period='monthly')
guan.plot_without_starting_fig(plt, fig, ax, stock_data[:, 0], stock_data[:, 2], style='or-')

guan.plot_without_starting_fig(plt, fig, ax, [], [], xlabel='Time', ylabel='Stock Price')
import datetime
ax.set_xlim(datetime.date(2017, 1, 1), datetime.date(2023, 9, 5))
plt.show()

运行结果:

5512 

['301507' '300537' '300538' ... '300050' '300226' '870976']

万  科A 

['日期' '开盘' '收盘' '最高' '最低' '成交量' '成交额' '振幅' '涨跌幅' '涨跌额' '换手率']  

[datetime.date(2023, 9, 5) 13.99 13.88 13.99 13.81 603137 836482034.65
 1.28 -1.14 -0.16 0.62]
47 次浏览

【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code