先获取 “股票代码表”
我这里是使用 mongodb 存储的。
项目有结构不方便放上来,这里是代码片段。具体请参见 github 仓库
def fetch_code():
"""
从接口获取代码,存入数据库,返回结构样例
ts_code symbol name area industry list_date
0 000001.SZ 000001 平安银行 深圳 银行 19910403
1 000002.SZ 000002 万科A 深圳 全国地产 19910129
3541 603936.SH 603936 博敏电子 广东 元器件 20151209
3542 603937.SH 603937 丽岛新材 江苏 铝 20171102
:return:
"""
# 查询当前所有正常上市交易的股票列表
datas = ts_pro.query('stock_basic', exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
dataArr = datas.to_dict('records')
# 创建集合,相当于表
t_codes = db['codes']
t_codes.drop()
# 插入获取的代码
result = t_codes.insert_many(dataArr)
if len(result.inserted_ids) != len(dataArr):
assert False
print('插入代码表数据失败.请检查。')
return
else:
print("插入代码表数据成功")
获取交易日历
def fetch_calender():
"""
从接口获取有效交易日信息,存入数据库,返回结构样例
exchange cal_date is_open
0 SSE 20180101 0
1 SSE 20180102 1
2 SSE 20180103 1
"""
calender = ts_pro.trade_cal(start_date='20190101', end_date='20191231')
# 创建集合,相当于表
t_calender = db['calender']
dataArr = calender.to_dict('records')
result = t_calender.insert_many(dataArr)
if len(result.inserted_ids) != len(dataArr):
assert False
print('插入代码表数据失败.请检查。')
return
else:
print("插入代码表数据成功")
获取历史数据
代码有些多,看 github 吧
每个股票代码作为一个集合保存数据。从数据库中取出代码,然后遍历获取数据
def get_code(market):
"""
获取股票代码表
market [in] string
SH 上海,SZ 深圳,ALL 所有市场
output:
{'ts_code': '600000.SH', 'symbol': '600000', 'name': '浦发银行', 'list_date': '19991110'}
:return:
"""
# 打开代码表集合
t_codes = db['codes']
if market == 'ALL':
codes = list(t_codes.find({}, {"_id": 0, "ts_code": 1, "symbol": 1, "name": 1, "industry": 1, "list_date": 1}))
else:
codes = list(t_codes.find({"ts_code": {"$regex": ".{}".format(market)}},
{"_id": 0, "ts_code": 1, "symbol": 1, "name": 1, "industry": 1, "list_date": 1}))
return codes
到这里基本数据就准备完毕了,在下一个笔记就可以选股操作了。