
免费开源的股票数据Python库为量化投资者和数据分析师提供了丰富的金融数据接口,这些库可以帮助用户轻松获取股票、基金、期货等金融产品的历史数据和实时数据。以下是一些常用的免费开源股票数据Python库:
akshare,yfinance,tushare,adata,baostock...
开源python库优势:
免费使用:这些库大多数是免费的,用户无需支付费用即可获取丰富的金融数据。
数据丰富:提供了包括股票、基金、期货、债券等多种金融产品的历史数据和实时数据,数据种类丰富。
易于使用:通过Python接口,用户可以方便地获取所需数据,API接口相对简洁直观,对初学者比较友好。
社区支持:作为开源项目,这些库拥有活跃的社区,用户可以在社区中交流和解决遇到的问题。
数据格式友好:返回的数据格式通常为Pandas DataFrame,便于进行数据分析和可视化。
开源python库劣势:
数据延迟:免费的数据接口通常存在一定的延迟,实时性可能不如付费服务。
数据完整性:部分免费库的数据完整性可能不如付费服务,某些高级数据(如* 深度财务报表)可能需要额外的积分或付费。
请求限制:免费接口通常有请求频率限制,用户在短时间内请求过多数据可能会被限制。
数据更新频率:免费库的数据更新频率可能不如付费服务,某些数据可能不是实时更新。
稳定性:免费库的稳定性可能不如付费服务,偶尔会出现数据获取失败的情况。
(2) 付费金融终端
付费金融终端为专业投资者提供了全面、准确、及时的金融数据和强大的分析工具。虽然这些服务需要付费,但其在数据实时性、完整性和稳定性方面的优势,使其成为金融机构和专业投资者的首选工具。
常用的付费金融终端有:Wind,东方财富Choice,通达信等
付费金融终端优势:
数据实时性:付费金融终端通常提供更实时的数据,减少数据延迟。
数据完整性:付费服务提供更完整、更详细的数据,包括深度财务报表等高级数据。
无请求限制:付费用户通常没有请求频率限制(或低限值),可以更自由地获取数据。
稳定性:付费服务的稳定性更高,数据获取更可靠。
专业支持:付费用户通常可以享受更专业的客户支持和技术服务。
(3) 券商
可以咨询自己所使用的券商,看是否提供量化、数据支持。
安装 AKShare 非常简单,只需要几行命令即可完成。首先,确保你的系统中已安装了 Python 环境。接着,在命令行或终端中输入以下命令:
pip install akshare
安装完成后,就可以开始使用 AKShare 了。在 Python 脚本或交互式环境中,通过导入 akshare 模块来启动 AKShare:
import akshare as ak
AKShare 提供了丰富的金融数据接口,可以获取股票、期货、期权、基金、债券、外汇等多种金融产品的数据。以下是一些常见的数据下载示例:
# 设置股票代码
stock_code = "000001" # 平安银行
# 获取指定股票信息
df_info = ak.stock_individual_info_em(symbol=stock_code)
print(df_info)
item value
0 总市值 224526473550.860016
1 流通市值 224522994798.959991
2 行业 银行
3 上市时间 19910403
4 股票代码 000001
5 股票简称 平安银行
6 总股本 19405918198.0
7 流通股 19405617528.0
# 获取指定股票的历史行情数据
df_stock = ak.stock_zh_a_hist(symbol=stock_code)
# 显示最后五行数据
print(df_stock.tail())
日期 开盘 收盘 最高 最低 成交量 成交额
5597 2025-01-10 1447.10 1436.00 1451.95 1436.00 21872 3.154678e+09 \
5598 2025-01-13 1425.00 1443.98 1444.44 1422.01 21083 3.030807e+09
5599 2025-01-14 1444.95 1472.50 1478.68 1442.00 30957 4.535652e+09
5600 2025-01-15 1467.00 1471.27 1474.60 1460.01 18399 2.701519e+09
5601 2025-01-16 1474.00 1446.38 1482.66 1442.00 26342 3.840411e+09
振幅 涨跌幅 涨跌额 换手率
5597 1.10 -0.55 -8.00 0.17
5598 1.56 0.56 7.98 0.17
5599 2.54 1.98 28.52 0.25
5600 0.99 -0.08 -1.23 0.15
5601 2.76 -1.69 -24.89 0.21
# 获取所有沪深A股实时行情数据
df_realtime = ak.stock_zh_a_spot_em()
print(df_realtime)
序号 代码 名称 最新价 涨跌幅 涨跌额 成交量 成交额
0 1 872374 云里物里 35.30 20.27 5.95 85776.0 2.889094e+08 \
1 2 300344 立方数科 9.16 20.05 1.53 2378915.0 2.048266e+09
2 3 300894 火星人 15.23 20.02 2.54 219561.0 3.211429e+08
3 4 300792 壹网壹创 37.60 20.01 6.27 792469.0 2.890420e+09
4 5 688288 鸿泉物联 21.24 20.00 3.54 133265.0 2.727261e+08
... ... ... ... ... ... ... ... ...
5680 5681 603166 福达股份 8.81 -10.01 -0.98 1161207.0 1.059518e+09
5681 5682 301037 保立佳 11.98 -10.33 -1.38 111943.0 1.367115e+08
5682 5683 301600 慧翰股份 226.98 -12.91 -33.66 65641.0 1.559392e+09
5683 5684 688162 巨一科技 23.21 -13.72 -3.69 63312.0 1.545102e+08
5684 5685 688256 寒武纪-U 594.00 -14.65 -101.96 194292.0 1.221874e+10
振幅 最高 ... 量比 换手率 市盈率-动态 市净率 总市值
0 29.95 36.96 ... 2.44 25.46 98.24 11.35 2.877585e+09 \
1 18.61 9.16 ... 2.08 37.22 -85.46 17.75 5.878031e+09
2 16.78 15.23 ... 3.32 7.47 308.57 4.70 6.209583e+09
3 10.12 37.60 ... 8.49 37.29 70.54 3.11 8.909047e+09
4 20.96 21.24 ... 3.57 13.24 -53.53 3.04 2.137677e+09
... ... ... ... ... ... ... ... ...
5680 9.91 9.78 ... 1.88 18.17 35.33 2.45 5.693098e+09
5681 13.55 13.40 ... 1.38 22.44 -18.06 2.34 1.671231e+09
5682 29.37 285.05 ... 2.42 37.40 88.54 12.67 1.592265e+10
5683 13.49 26.51 ... 3.83 10.13 -119.19 1.39 3.184384e+09
5684 16.52 695.00 ... 2.29 4.65 -256.70 48.26 2.479693e+11
流通市值 涨速 5分钟涨跌 60日涨跌幅 年初至今涨跌幅
0 1.189253e+09 -0.14 -0.42 78.55 40.19
1 5.855176e+09 0.22 0.88 100.00 105.84
2 4.478695e+09 0.00 0.00 3.46 11.17
3 7.991266e+09 0.00 0.00 78.88 56.67
4 2.137677e+09 0.38 0.00 23.70 31.93
... ... ... ... ... ...
5680 5.629666e+09 0.00 0.00 48.32 21.18
5681 5.976072e+08 -1.64 -1.64 15.19 16.20
5682 3.983499e+09 -0.01 0.31 191.94 15.45
5683 1.451107e+09 0.13 0.26 7.80 -14.45
5684 2.479693e+11 0.00 -0.32 41.77 -9.73
[5685 rows x 23 columns]
AKShare 本身不直接提供画图功能,但可以结合 pandas 和 matplotlib 等库进行数据可视化。以下是一个简单的示例,展示如何使用 matplotlib 绘制股票的股价图和成交量图:
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 获取股票历史行情数据
stock_code = "600519"# 贵州茅台
df_stock = ak.stock_zh_a_hist(symbol=stock_code, adjust="qfq")
# 转换日期格式
df_stock.index = pd.to_datetime(df_stock['日期'])
# 计算移动平均线
df_stock['MA5'] = df_stock['收盘'].rolling(window=5).mean()
df_stock['MA20'] = df_stock['收盘'].rolling(window=20).mean()
# 选取最近200个交易日绘图
df_stock = df_stock.iloc[-200:]
# 设置绘图风格
plt.style.use('ggplot')
# 创建子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8), sharex=True)
# 绘制股价折线图
plt.subplot(2, 1, 1)
df_stock['收盘'].plot(color = 'black', linewidth = 2)
df_stock['MA5'].plot(color = 'blue', linewidth = 1)
df_stock['MA20'].plot(color = 'red', linewidth = 1)
plt.title(f'{stock_code}股价走势')
plt.ylabel('股价')
plt.legend()
# 绘制成交量柱状图
plt.subplot(2, 1, 2)
plt.bar(df_stock.index, df_stock['成交量'], color='orange')
plt.title('成交量')
plt.xlabel('日期')
plt.ylabel('成交量')
Text(0, 0.5, '成交量')
在选择金融数据源时,需要综合考虑多个因素,以确保所选数据源能够满足特定的量化投资需求。对于初学者而言,免费数据源如AKShare基本能满足学习需要。
在量化投资中,数据是驱动一切的最底层、最核心的要素。股票数据的获取和清洗是量化投资的基础环节,通过使用AKShare、pandas等工具,可以高效地获取并处理多维度的股票数据,为后续的策略分析与回测奠定基础。掌握股票数据的获取与处理技巧,有助于投资者在复杂多变的市场中做出更加科学的决策。
上一篇:没有了
下一篇:没有了