使用tushare进行股票日线数据下载

本文介绍了如何使用tushare库在Python中下载股票日线数据。针对可能出现的网络超时问题,建议使用国内pip源安装tushare。作者对tushare进行了封装,通过批量下载方式提高效率,每100只股票为一组,大约40秒内完成4000多只股票的数据下载。此外,下载的数据不仅保存为CSV文件,还存储到MySQL数据库中,以便于后续处理。若下载过程中断,可从断点继续。
摘要由CSDN通过智能技术生成
Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
首先,需要注册一个tushare账号,到这里注册:https://tushare.pro/register?reg=350968
注册完之后,在python中要进行tushare的安装,pip install tushare

#############2021-01-17注释#########
本文中使用了一些函数的调用,导致没有跑起来,这些函数见我2021-02-17的新文章,下载日线数据前的准备工作
###################################

如果安装网络超时可尝试国内pip源,如pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple
安装好了之后,就可以进行调用了。
我在这里是首先对tushare进行了一层封装:
#网站方文初始化

def ts_init():
    pro = ts.pro_api(userid) #这里的userid是每个人注册后tushare提供的唯一程序调用认证码,具体怎么获取看网站帮助。
    return pro
 #获取股票列表
 #从tushare获取股票代码列表
def getGpList(pro):
    gpListfields = "ts_code,symbol,name,area,industry"
    gpList = pro.query("stock_basic", exchange='', list='L', fields=gpListfields)
    return gpList
 #调用股票日线行情封装
 #获取指定代码的股票信息
def queryGpinfo(pro, infotp ,gpCode, stDate, endDate):
    df_query = pd.DataFrame()
    try:
        df_query = pro.query(infotp, ts_code=gpCode, start_date=stDate, end_date=endDate)
    except:
        time.sleep(1)
    return df_query

#进行了日线数据获取的封装之后,就可以进行遍历进行股票日线行情下载了。
#由于每次下载要等1秒,4000多只股票,全部下载回来得1个多小时,所以我们进行了聚合,每100支股票进行一次下载,这样大概40多秒下载完毕,具体实现如下:
#根据股票代码列表,获取指定日期段的股票历史日线数据,如果股票代码为空,则获取全部股票的指定日期段的股票信息,如指定日期为空,则获取股票的所有日线

def getGpHisData(GpCode = '', stDate = '19901219', endDate = dt.datetime.today().strftime('%Y%m%d')):
    #print(endDate)
    #初始化
    pro = ts_init()
    gpList = pd.DataFrame
    #获取股票列表
    if GpCode == '':
        gpList = getGpList(pro)
    else:
        gpList = pd.DataFrame(GpCode.split(','), columns=['ts_code'])

    #print(gpList)
    #股票数据存放路径
    filepath_pre = "D:\\MFfiles\\LHTrade\\stockdata"
    filepath_prefix = filepath_pre + "\\day"
    if not os.path.exists(filepath_prefix):#如果day文件夹不存在,则需要新建,防止后面路径不存在
        os.mkdir(filepath_prefix)
    file_cfg = filepath_pre + "\\cfg.txt"

    #进行时间的比较处理,取正确时间段额数据,不在时间段的不处理
    dt_tmp = dt.datetime
    if stDate == '00000000':#如果是8个0,则自动使用cfg文件中的上次记录的时间
        with open(file_cfg, 'r') as f:
            cfg_dt = f.readline()
            dt_tmp = parse_ymd(cfg_dt)
            if dt_tmp.hour > 15:
                dt_stDate = dt.datetime(dt_tmp.year,dt_tmp.
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值