最近研究程序化交易,需要使用股票历史数据。由于保存了所有股票历史数据,但是是截至到2018-12-28日,所以开始研究时对数据实时性要求不高,能实现功能即可。
经过近一个月的研究后, 即在 最基础表(代码、日期、开、高、低、收、成交量)上,形成了基本表(增加了:成交额,昨收、各类差值),最后统计各种均值、使用pandas的 rolling函数统计周期值
接下来打算要上手实战,对数据的要求高了,实时性要跟上,经过对各种网络获取、XXX专用财经数据接口个人版、tushare数据获取;一番折腾后,发现网络获取速度极慢、且不全;XXX个人版各种插件,极难用还占用几百兆空间。最后选择了tushare。
tushare 获取使用方法很简单,和各类python三方库一样,一个 pip install tushare 的简单调用命令,会自动下载安装好四个文件。目前最新的版本时 1.2.26,而且有pro 版本
对tushare 版本不熟,所以直接参考示例操作,发现使用pro版要注册, 接下来注册使用,接下来就可以使用pro命令了
具体代码如下:
版本:python 3.6
ide:pycharm
#先是各种import,用不用的上都import,新手都这样
import tushare as ts
import numpy as np
import pandas as pd
import matplotlib as plt
pro = ts.pro_api("4811c7c6d6c34a8338c7fcacd53ab99127b56b2c030c675626") #先引用pro,注册账号会生成一个随机多位数api
# # tushare获取股票代码表 stocks_list
stocks_list = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
# print(stocks_list)
# stocks_list.to_csv('D:/MongoDB',sep=',') #保存数据路径
先获取了股票列表,图示如下:
ts_code | symbol | name | area | industry | list_date | |
000001.SZ | 1 | 平安银行 | 深圳 | 银行 | 19910403 | |
1 | 000002.SZ | 2 | 万科A | 深圳 | 全国地产 | 19910129 |
2 | 000004.SZ | 4 | 国农科技 | 深圳 | 生物制药 | 19910114 |
3 | 000005.SZ | 5 | 世纪星源 | 深圳 | 环境保护 | 19901210 |
4 | 000006.SZ | 6 | 深振业A | 深圳 | 区域地产 | 19920427 |
5 | 000007.SZ | 7 | 全新好 | 深圳 | 酒店餐饮 | 19920413 |
6 | 000008.SZ | 8 | 神州高铁 | 北京 | 运输设备 | 19920507 |
接下来要通过for 循环遍历code,获得各个股票代码的历史数据,由于 ts_code 含有字母,不能作为选择项,
所以选择了第一列 symbol 进行遍历,具体代码如下:
ser1 = stocks_list.iloc[:,1] #选择第一列
# print(ser1,type(ser1))
#
for i in ser1: #遍历列表
stocks_num1= ts.get_hist_data(i) #获取代码历史数据
# print(stocks_num1) #打印结果
由于是新手,每一个小功能就print() 一次,查看 具体效果,
目前pro版本对调用次数有限制,所以尽可能多 的检查代码完整性,确认后再调用。
特别提示: 最好添加保存数据路径,方便查看细节效果,避免出现不能调用获取数据的情况发生。