Python量化交易学习笔记(21)——A股股票列表更新

在zwPython2020中,股票数据下载更新时,所读取的股票列表文件的目录位置为“zwPython\TQDat\TQDown2020v1\data\tq_wrk_code.csv”。该文件的更新时间为2018年12月,打开后我们可以看到共列出股票3567只。我们如果用这个文件来获取股票数据,会遗漏近一年多新上市的股票,并且会下载这段时间内已经退市的股票数据。如果想获取当前正常上市交易的所有股票的数据,就需要我们对该文件进行更新。本文将介绍更新A股股票列表数据的流程。

  1. 注册Tushare账户

zwPython已经做好了对Tushare的集成,我们就使用Tushare下载股票列表。为了后续使用Tushare的高阶功能,我们首先注册Tushare的账户(有需要的读者可以用这个链接注册 )。

注册后会获得100积分,修改个人信息后,会再获得20积分。有了这120积分,就有资格进行基本的数据获取工作。但是如果想获取更高阶的功能权限,就需要更多的积分了。比如获取指数的日线数据需要200积分,获取基金列表需要1500积分。获取数据不会消耗积分,这里的积分只是个权限表示,但是有效期只有一年。如果想过去更多积分,可以做推广、代码贡献、社区维护等工作,具体可以参见Tushare的网站。

注册后,在个人主页里就能找到分配的Token,后面程序初始化Tushare时会用到:

在这里插入图片描述

  1. 调用Tushare接口,下载股票列表

在zwPython的股票列表文件中,只保留了股票代码(code)、股票名称(name)、交易所代码(sse)、类型(sec)4列数据:
在这里插入图片描述

因此在调用Tushare接口获取股票基础数据时,我们也只保留这4列数据:

import pandas as pd
import tushare as ts
# Tushare初始化,需要将XXX更换为自己的Token
pro = ts.pro_api('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
# 获取正常上市交易的股票基础数据
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name')
# 设置类型
data['sec'] = 'stock_cn'
# 重命名列名,与zwPython保持一致
data = data.rename(columns={'symbol': 'code', 'ts_code': 'sse'})
# 更新交易所代码列
data['sse'] = data['sse'].str.lower().str[-2:]
# 调整列顺序
data = data[['code', 'name', 'sse', 'sec']]
# 写入文件
data.to_csv('..\TQDat\TQDown2020v1\data\stock_code_update.csv', index = False, encoding = 'gbk')

我们将更新后的股票列表保存到了“zwPython\TQDat\TQDown2020v1\data\stock_code_update.csv”文件中。更新时间为2020年3月21日,更新后的股票列表可以看到有3797只股票,比更新前的3567多出了200多只,其中也包含了科创板的股票信息:

在这里插入图片描述

  1. 更新股票数据

在更新股票数据时,我们直接把原“zwPython\TQDat\TQDown2020v1\tqdown_day.py”中的第41行代码修改为:

finx=script_path + '/data/stock_code_update.csv'

我们这里引入了新的变量script_path,是为了方便在VSCode下可以直接运行Python文件,而不需要再切换工作目录。在“zwPython\TQDat\TQDown2020v1\tqdown_day.py”引入TopQuant包的部分修改为如下代码:

#  TopQuant
script_path = os.path.dirname(os.path.abspath(sys.argv[0]))
topqt_path = os.path.join(script_path, './topqt/')
sys.path.append(topqt_path)
import topquant2019 as tq
import topq_ddown2019 as tqdown

然后直接运行tqdown_day.py,就可以下载更新所有正常上市交易的A股日线数据了,具体可参加本系列笔记(2)。

博客内容只用于交流学习,不构成投资建议,盈亏自负!

个人博客:http://coderx.com.cn/(优先更新)
项目最新代码:https://gitee.com/sl/quant_from_scratch
欢迎大家转发、留言。有微信群用于学习交流,感兴趣的读者请扫码加微信!
如果认为博客对您有帮助,可以扫码进行捐赠,感谢!

微信二维码微信捐赠二维码
在这里插入图片描述在这里插入图片描述
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值