Python获取股票数据——以沪深300成分股为例

这篇具有很好参考价值的文章主要介绍了Python获取股票数据——以沪深300成分股为例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求是下载比如从2020-01-01到2022-12-31区间的沪深300成分股每支股票的日K线数据,没错这是个面板数据,原本以为直接通过Python接口可以直接下载到,因为之前找的上证综指啥的用R的pedquant都是直接获取的(看来因为是单支)。
捣鼓了半天,还是我想的简单了……

试过Akshare、Tushare、Baostock以及聚宽量化平台下载,下面总结一下下载心得 o_0

1、Baostock

那就先说最后选用的这个开源的证券数据平台Baostock
链接附此 www.baostock.com
通过python API获取证券数据信息

# 豆瓣源下载包
pip install -i https://pypi.douban.com/simple baostock

首先获取沪深300成分股每支股票的code和code_name
日期这里就不做额外的要求了,默认更新到的哪天

import pandas as pd
import numpy as np
import baostock as bs

# 登陆系统
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

# 获取沪深300成分股
rs = bs.query_hs300_stocks()
print('query_hs300 error_code:'+rs.error_code)
print('query_hs300  error_msg:'+rs.error_msg)

# 打印结果集
hs300_stocks = []
while (rs.error_code == '0') & rs.next():
    # 获取一条记录,将记录合并在一起
    hs300_stocks.append(rs.get_row_data())
result = pd.DataFrame(hs300_stocks, columns=rs.fields)
# 结果集输出到csv文件
result.to_csv("D:/hs300_stocks.csv", encoding="gbk", index=False)
print(result)

# 登出系统
bs.logout()

获取到的300支股票名

login success!
login respond error_code:0
login respond  error_msg:success
query_hs300 error_code:0
query_hs300  error_msg:success
     updateDate       code code_name
0    2023-03-20  sh.600000      浦发银行
1    2023-03-20  sh.600009      上海机场
2    2023-03-20  sh.600010      包钢股份
3    2023-03-20  sh.600011      华能国际
4    2023-03-20  sh.600015      华夏银行
..          ...        ...       ...
295  2023-03-20  sz.300896       爱美客
296  2023-03-20  sz.300919      中伟股份
297  2023-03-20  sz.300957       贝泰妮
298  2023-03-20  sz.300979      华利集团
299  2023-03-20  sz.300999       金龙鱼

[300 rows x 3 columns]
logout success!

接着我们导入获取的股票名csv

hs=pd.read_csv('D:/hs300_stocks.csv',encoding='gbk')

通过循环300次code进行日K线数据获取

#### 登陆系统 ####
lg = bs.login()
# 显示登陆返回信息
print('login respond error_code:'+lg.error_code)
print('login respond  error_msg:'+lg.error_msg)

# 详细指标参数,参见“历史行情指标参数”章节;“分钟线”参数与“日线”参数不同。“分钟线”不包含指数。
# 分钟线指标:date,time,code,open,high,low,close,volume,amount,adjustflag
# 周月线指标:date,code,open,high,low,close,volume,amount,adjustflag,turn,pctChg
for i in range(300):
    rs = bs.query_history_k_data_plus(hs['code'][i],
    "date,code,open,high,low,close,preclose,volume,amount,turn,tradestatus,pctChg,isST",
    start_date='2021-01-01', end_date='2023-07-01',
    # 日K线,adjustflag="3"不复权
    frequency="d", adjustflag="3")
    print(f'query_history_k_data_plus respond error_code{i}:'+rs.error_code)
    print(f'query_history_k_data_plus respond  error_msg{i}:'+rs.error_msg)
    #### 打印结果集 ####
    data_list = []
    while (rs.error_code == '0') & rs.next():
        # 获取一条记录,将记录合并在一起
        data_list.append(rs.get_row_data())
    result = pd.DataFrame(data_list, columns=rs.fields)
    # to_csv中 mode='a'进行数据追加,去掉索引和表头
    result.to_csv("D:\hs300.csv",mode='a',index=False,header=False)
#### 登出系统 ####
bs.logout()

来看一下运行情况

login success!
login respond error_code:0
login respond  error_msg:success
query_history_k_data_plus respond error_code0:0
query_history_k_data_plus respond  error_msg0:success
query_history_k_data_plus respond error_code1:0
query_history_k_data_plus respond  error_msg1:success
query_history_k_data_plus respond error_code2:0
query_history_k_data_plus respond  error_msg2:success
......
query_history_k_data_plus respond error_code299:0
query_history_k_data_plus respond  error_msg299:success
logout success!

300支已就位,数据还是比较多的,除了常见的open、high、low、close等,还有turn换手率、tradestatus交易状态(1:正常交易 0:停牌)、pctChg涨跌幅、isST是否ST股(1是,0否)

python 股票接口,Python金融量化,python,股票量化,数据获取
想要其他指标还可以自己加,比如peTTM滚动市盈率、pbMRQ市净率等;
或者分钟线、周月线,通过frequency=" "修改,默认为d,日k线;w=周、m=月、5=5分钟、60=60分钟k线数据等

Baostock真的是很良心了,相比之下其余三个总是缺胳膊少腿

2、Tushare pro版

其实一开始比较想用的是Tushare,因为相对来说Tushare获取同样数据的代码量比Baostock少多了,也不用登录退出啥的,直接一步到位

链接附此 Tushare数据平台

需要先注册个账号,获取个人Token

python 股票接口,Python金融量化,python,股票量化,数据获取

在上述已经获得沪深300成分股的code条件下,以获取两支股票为例,代码量是相当的少

import tushare as ts
pro = ts.pro_api('your token')  # 复制上面的接口token就好
df1=pro.daily(ts_code='600000.sh,600009.sh', start_date='20220101', end_date='20220701')
df1

获取到的数据也是比较齐全的,排列跟Baostock不同,按同一时间的所有股票先排
python 股票接口,Python金融量化,python,股票量化,数据获取
但是这个平台特别坑的一点就是……我就下载了没几次怎么就下不下来了!!!
后面换了好几个时间继续下也还是空的,不知道是积分不够还是咋滴,还是弃了……

3、AKshare

这个接口的代码量也很少,少的我心动,获取到的数据名还都是中文的

import akshare as ak
df = ak.index_zh_a_hist(symbol = "000905", period = "daily", start_date = "20200101", end_date = "20221231" )
df

python 股票接口,Python金融量化,python,股票量化,数据获取
然而……
一时间没找到股票code在这里对应的symbol,没后缀名,连前缀的都不一样,统一code麻烦,还是算了

4、聚宽量化平台

链接附此 聚宽Join Quant

本来都已经注册好了,看着代码量也不是很多,最重要的是它可以动态地获取沪深300每一天包括的成分股,然后根据获取到的code下载数据,也免了上面这一顿code_name获取操作

可申请一年试用,就可以获取数据,但是好像数据种类不是很多,示例只看到常规的open、close那6个,不知道能否改参数
python 股票接口,Python金融量化,python,股票量化,数据获取

遍历日期,通过动态获取沪深300成分股code来获取数据,有需要的可以试试

#导入聚宽数据的sdk
import jqdatasdk as jd
from datetime import date,timedelta
jd.auth("账号","密码")
#数据储存路径
filename='D:\jukuan.csv' 

#遍历历史日期,并逐步导入数据到csv文件
for i in range(30):
    trade_date=date(2020,1,2)+timedelta(days=i)
    stocks=jd.get_index_stocks('000300.XSHG', date=trade_date)
    df=jd.get_price(stocks,start_date=trade_date, end_date=trade_date,
                    frequency='daily',skip_paused=False).to_frame()
    df.to_csv(filename,mode='a',header=None)

总的来看还是选择了Baostock,对这些平台也不是很了解,可能有些参数没注意到,如果有更好获取股票数据的方法,望留言分享一起学习,不胜感激!文章来源地址https://www.toymoban.com/news/detail-842136.html

到了这里,关于Python获取股票数据——以沪深300成分股为例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 沪深300股指期权一个点多少钱?

    沪深300股指期权是一种以沪深300指数为标的物的期权合约。它允许投资者在未来某个约定时间以约定价格(行权价)买入或卖出沪深300指数,交易沪深300股指期权的时候是需要关注它点数跳动,那么沪深300股指期权一个点多少钱?以上素材来源于:财顺期权~ 一、沪深300股指

    2024年03月11日
    浏览(53)
  • 沪深300ETF期权和其他期权有什么不同?

    沪深300ETF期权与其他期权在标的资产、交易特点和风险特征等方面存在一些不同。 1. 标的资产: 沪深300ETF期权: 沪深300ETF期权的标的资产是沪深300ETF,即上证50ETF(上证50指数ETF)。沪深300ETF跟踪沪深300指数,代表着中国A股市场中具有代表性的300只股票。 沪深300ETF期权合约

    2024年02月04日
    浏览(39)
  • Python获取全部股票数据

    目前整个沪深京A股市场总共有5000余支股票,那么我们怎么能获取到这些股票的数据(股价、市值、市盈率、市净率等)呢? 小编常用的有三个网站,分别是东方财富、同花顺、雪球,请自行查阅。 我们以东方财富为例,打开东方财富行情中心,找到全部股票数据后,找到对

    2024年02月15日
    浏览(36)
  • 如何用 python 获取实时的股票数据?

    Web爬取 Web爬取是指从网站上获取特定数据的过程。我们通常使用Python的Requests库来访问网站。网站会以HTML格式返回相应数据,我们需要使用Beautiful Soup库将HTML格式的数据转换为Python对象进行操作。 Python中,我们可以使用OpenPyXL库来读写Excel文件。使用OpenPyXL,我们可以创建、

    2024年02月20日
    浏览(87)
  • 通过python 获取股票数据的API接口

    用法: ContextInfo.get_bar_timetag (index)。 释义:获取当前K线对应时间的时间戳。 参数:number:K线索引号。 返回:number。 示例: 用法:ContextInfo.get_ sector(sector, realtime)。 释义:获取板块成份股,只支持取指数成份股。

    2024年02月11日
    浏览(38)
  • chatgpt赋能python:Python如何获取股票数据——详细介绍

    Python作为一款专业的编程语言,其应用领域十分广泛,其中之一就是股票数据的获取。本文将详细介绍Python如何获取股票数据的方法,帮助大家快速获取所需的股票信息。 pandas-datareader是一款很受欢迎的Python库,可以用来从多个数据源获取金融数据。使用这个库可以轻松获取

    2024年02月11日
    浏览(48)
  • python金融数据分析和可视化--03利用Akshare获取股票数据

    AKShare 是基于 Python 的财经数据接口库,目的是实现对股票、期货、期权、基金、外汇、债券、指数、加密货币等金融产品的基本面数据、实时和历史行情数据、衍生数据从数据采集、数据清洗到数据落地的一套工具,主要用于学术研究目的。 AKShare 的特点是获取的是相对权威

    2024年02月05日
    浏览(39)
  • 利用Python和Selenium获取雪球网沪深上市公司日k线走势图

    本文介绍作者如何爬取雪球网(https://xueqiu.com/)沪深股市沪深一览中的上市公司日k线走势图并截图保存至本地~ 欢迎关注作者公众号,追踪更多更新更有价值的内容。 项目用于获取雪球网沪深股市沪深一览列表中(图1)上市公司的日K线图(图2)。 图1 沪深股市-沪深一览

    2024年04月10日
    浏览(44)
  • 股票交易数据接口获取股票基础信息数据的过程

    接口:https://gitee.com/metatradeapi,可以通过数据工具调试和查看数据 描述:获取基础信息数据,包括股票代码、名称、上市日期、退市日期等 输入参数 名称 类型 必选 描述 is_hs str N 是否沪深港通标的,N否 H沪股通 S深股通 list_status str N 上市状态 L上市 D退市 P暂停上市,默认是

    2024年02月02日
    浏览(47)
  • 新浪股票接口获取历史数据

    这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细,但是缺少获取历史数据的方法。

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包