美文网首页
通过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