(一)Tushare Pro教程:股票基本数据接口
一直使用tushare作数据源,这里开个教程大家一起学习。
一、介绍
tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票、期货、数字货币、行业大数据,外汇等金融市场全部纳入到一个接口中,大有一统江湖的感觉。
二、注册与安装
注册:https://tushare.pro/document/1?doc_id=38
安装和更新:https://tushare.pro/document/1?doc_id=7
三、调用前的配置
import tushare as ts
ts.set_token('your token here')#设置token,只需设置一次
api = ts.pro_api()#初始化接口
四、股票接口使用
1、获取股票基础信息数据,包括股票代码、名称、上市日期,行业、概念等
data = api.stock_basic(fields='ts_code,name,list_date')
2、获取A股的K线数据,带有复权参数“adj”、均线参数“ma”、数据频度参数“freq”
data = ts.pro_bar(pro_api=api, ts_code='000009.SZ', adj='qfq', start_date='20170101', end_date='20181011',ma=5,freq='D')
3、获取A股每日重要的基本面指标,包括市盈率、市销率、市净率、量比、换手等信息
data = api.daily_basic(ts_code='000009.SZ', start_date='20180101', end_date='20181123')
四、几个常见的问题
1、如何下载一只股票的全部数据?
答:直接调用pro_bar接口,将时间设置为上市日期到某天,一次性向服务器请求数据的方式是行不通的。理由很简单,人家服务器不是无限量的,咱不能搞太狠。正确姿势这里提供一个正确的例子。
def fetchklinedata(code):
filename = 'your path'
if not os.path.exists(filename):
end_date = datetime.strftime(datetime.now(), '%Y%m%d')#获取当前时间
outputflag = True
api = tushare.pro_api()
while outputflag:#循环判断,直到返还的数据为空
data=tushare.pro_bar(pro_api=api,ts_code=code,
end_date=end_date,asset='E',adj=None,freq='D')#请求本次数据
if data.empty == True:
outputflag = False
else:
#计算下次请求数据的截止日期
next_end_date = datetime.strptime(data.iloc[-1]['trade_date'],
'%Y%m%d') - timedelta(hours=24)
end_date = datetime.strftime(next_end_date, '%Y%m%d')
#写csv文件
if os.path.exists(filename):
data.to_csv(filename, header=None, mode='a')#追加写入模式
else:
data.to_csv(filename)
2、tushare pro是否提供多周期数据,比如月线、周线等等?
答: 我们往往需要不同周期的数据来进行分析,大家总希望能下载到所有周期的数据。其实只需要最小时间间隔数据即可。以股票的日线数据为例,来计算周线、月线是非常方便的。这里需要使用pandas中的resample这个函数。小白不知道pandas的问问度娘即可,堪称python数据分析的神器。下面代码将获取的日线数据经过重采样得到周线数据。
data_day = ts.pro_bar(pro_api=api, ts_code='000009.SZ', adj='qfq', start_date='20170101', end_date='20181011',ma=5,freq='D')
data_day['trade_date'] = pandas.to_datetime(data_day['trade_date'])
data_week = data_day.resample(rule='W', on='trade_date', label='left', closed='left').agg(
{'open': 'first',
'high': 'max',
'low': 'min',
'close': 'last',
'vol': 'sum',
})
#具体的时间周期字段rule
"""
rule:
B business day frequency
C custom business day frequency (experimental)
D calendar day frequency
W weekly frequency
M month end frequency
SM semi-month end frequency (15th and end of month)
BM business month end frequency
CBM custom business month end frequency
MS month start frequency
SMS semi-month start frequency (1st and 15th)
BMS business month start frequency
CBMS custom business month start frequency
Q quarter end frequency
BQ business quarter endfrequency
QS quarter start frequency
BQS business quarter start frequency
A year end frequency
BA business year end frequency
AS year start frequency
BAS business year start frequency
BH business hour frequency
H hourly frequency
T minutely frequency
S secondly frequency
L milliseonds
U microseconds
N nanoseconds
"""
下期预告:介绍tushare pro的上市公司财务数据接口的使用,敬请期待。
上一篇: 软件测试艺术(一)
下一篇: Leetcode Course S