美文网首页
通过tushare获取上交所、深交所股票收盘数据

通过tushare获取上交所、深交所股票收盘数据

作者: Caucher | 来源:发表于2022-02-11 15:56 被阅读0次

    tushare是一个股票数据社区,由社区维护者存储数据,开发数据接口供用户使用。获取数据需要积分权限。
    我的tushare_id: 494350
    编者想要获取连续日的股票数据作为时间序列数据构造数据集。本文中分享数据拉取代码,输出为二进制文件。
    tushare网站:https://tushare.pro/

    • token在个人主页获取
    import tushare as ts
    import datetime
    import struct
    data = {}
    fn = "C:\\Series4Similarity_Search\\stock\\"
    pro = ts.pro_api("YOURTOKEN")
    
    • 一个麻烦的事情是接口有限流,所以不能以每天循环,否则会超出流量准许。
    • 并且一次最多拉取5000条数据,所以我在循环中对5000这个数字单独提出来,一旦有超过这个数据量的时候,就要选择收窄时间区间,然后多次启动程序获取数据。
    dt = datetime.datetime(year=2004, month=1, day=8)
    end = datetime.datetime(year=2010, month=1, day=1)
    written = 0
    d = 0
    while dt < end:
        new_dt = dt + datetime.timedelta(days=2)
        df = pro.daily(start_date=dt.strftime("%Y%m%d"), end_date=new_dt.strftime("%Y%m%d"), fields='ts_code,close')
        print(new_dt, df.shape[0])
        if df.shape[0] >= 5000:
            break
        dt = new_dt
        for index, row in df.iterrows():
            ts_code = row['ts_code']
            if ts_code in data:
                data[ts_code].append(float(row['close']))
            else:
                data[ts_code] = [float(row['close'])]
            if len(data[ts_code]) >= 32:
                with open(fn + ts_code, "ab+") as f:
                    for i in data[ts_code]:
                        f.write(struct.pack('<f', i))
                written += len(data[ts_code])
                data[ts_code] = []
        d += 1
    
    for ts_code in data:
        value = data[ts_code]
        if len(value) > 0:
            with open(fn + ts_code, "ab+") as f:
                for i in value:
                    f.write(struct.pack('<f', i))
            written += len(value)
    
    print(written)
    
    
    • 循环跳出时要把字典data中剩余的数据量写出来,免得数据丢失一部分。

    相关文章

      网友评论

          本文标题:通过tushare获取上交所、深交所股票收盘数据

          本文链接:https://www.haomeiwen.com/subject/qpzakrtx.html