项目介绍

看到标题大家的第一反应估计是怎么用爬虫来获取股票交易数据,要获取股票交易数据确实是需要用爬虫没错,不过还有比使用爬虫更加方便的方式。今天要给大家介绍的是一个专门用来获取国内股票交易数据的开源工具Tushare。

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。

安装方式就是:pip install tushare。

相关函数介绍

import tushare as ts
import time
import sys

1.获取历史行情数据 get_hist_data()

获取个股历史交易数据(包括均线数据),可以通过参数设置获取日k线、周k线、月k线,以及5分钟、15分钟、30分钟和60分钟k线数据。本接口只能获取近3年的日线数据,适合搭配均线数据进行选股和分析。

参数说明:

code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)

start:开始日期,格式YYYY-MM-DD

end:结束日期,格式YYYY-MM-DD

ktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D

retry_count:当网络异常后重试次数,默认为3

pause:重试时停顿秒数,默认为0

返回值说明:

date:日期

open:开盘价

high:最高价

close:收盘价

low:最低价

volume:成交量

price_change:价格变动

p_change:涨跌幅

ma5:5日均价

ma10:10日均价

ma20:20日均价

v_ma5:5日均量

v_ma10:10日均量

v_ma20:20日均量

使用方法

# 尔康制药(300267),取近3年数据
ts.get_hist_data(code)

执行结果(注:以下截图均为部分截图)

使用方法

# 尔康制药(300267),取指定日期的数据
ts.get_hist_data(code, start='2018-01-01', end='2018-06-31')

执行结果

2.get_h_data()

在不指定开始时间和结束时间时,该函数默认返回最近一年的日线数据,返回的数据与get_hist_data不同的是,该函数只返回开盘价(open)、最高价(high)、收盘价(close)、最低价(low)、成交量(volume)、成交金额(amount)六列 ,同样加上时间段也可以获取相应数据。

使用方法

# 尔康制药(300267),取近一年数据

ts.get_h_data(code)

**执行结果

3.get_k_data()

前两个函数相比,这个函数获取数据的速度很明显要快很多,而且可以返回每一只股票从上市开始到当前交易日的所有日线数据,这个有点是前两个函数都不具备的,更重要的是,如果批量获取多只股票的数据,前两个都不如get_k_data()稳定。

使用方法

# 尔康制药(300267),取近1年数据
ts.get_k_data(code)

执行结果

其他

ts.get_hist_data(code, ktype='W') #获取周k线数据
ts.get_hist_data(code, ktype='M') #获取月k线数据
ts.get_hist_data(code, ktype='5') #获取5分钟k线数据
ts.get_hist_data(code, ktype='15') #获取15分钟k线数据
ts.get_hist_data(code, ktype='30') #获取30分钟k线数据
ts.get_hist_data(code, ktype='60') #获取60分钟k线数据
ts.get_hist_data('sh') #获取上证指数k线数据,其它参数与个股一致,下同
ts.get_hist_data('sz') #获取深圳成指k线数据
ts.get_hist_data('hs300') #获取沪深300指数k线数据
ts.get_hist_data('sz50') #获取上证50指数k线数据
ts.get_hist_data('zxb') #获取中小板指数k线数据
ts.get_hist_data('cyb') #获取创业板指数k线数据

4.取实时行情数据get_today_all()

返回值说明:

code:代码

name:名称

changepercent:涨跌幅

trade:现价

open:开盘价

high:最高价

low:最低价

settlement:昨日收盘价

volume:成交量

turnoverratio:换手率

amount:成交量

per:市盈率

pb:市净率

mktcap:总市值

nmc:流通市值

使用方法

# 一次性获取当前交易所有股票的行情数据(如果是节假日,即为上一交易日)
ts.get_today_all()
[Getting data:]############################################################

执行结果

5.获取当日历史分笔数据get_today_ticks()

获取当前交易日(交易进行中使用)已经产生的分笔明细数据。

参数说明:

code:股票代码,即6位数字代码

retry_count : int, 默认3,如遇网络等问题重复执行的次数

pause : int, 默认 0,重复请求数据过程中暂停的秒数,防止请求间隔时间太短出现的问题

返回值说明:

time:时间

price:当前价格

pchange:涨跌幅

change:价格变动

volume:成交手

amount:成交金额(元)

type:买卖类型【买盘、卖盘、中性盘】

使用方法

ts.get_today_ticks(code)
[Getting data:]##################

执行结果

6.获取实时分笔数据get_realtime_quotes()

获取实时分笔数据,可以实时取得股票当前报价和成交信息,其中一种场景是,写一个python定时程序来调用本接口(可两三秒执行一次,性能与行情软件基本一致),然后通过DataFrame的矩阵计算实现交易监控,可实时监测交易量和价格的变化。

参数说明:

symbols:6位数字股票代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板) 可输入的类型:str、list、set或者pandas的Series对象

返回值说明:

0:name,股票名字
1:open,今日开盘价
2:pre_close,昨日收盘价
3:price,当前价格
4:high,今日最高价
5:low,今日最低价
6:bid,竞买价,即“买一”报价
7:ask,竞卖价,即“卖一”报价
8:volume,成交量 maybe you need do volume/100
9:amount,成交金额(元 CNY)
10:b1_v,委买一(笔数 bid volume)
11:b1_p,委买一(价格 bid price)
12:b2_v,“买二”
13:b2_p,“买二”
14:b3_v,“买三”
15:b3_p,“买三”
16:b4_v,“买四”
17:b4_p,“买四”
18:b5_v,“买五”
19:b5_p,“买五”
20:a1_v,委卖一(笔数 ask volume)
21:a1_p,委卖一(价格 ask price)
...
30:date,日期
31:time,时间

使用方法

# 单个股票实时行情    
df = ts.get_realtime_quotes(code)                             
df

执行结果

使用方法

# 需要显示的属性
df[['code','name','price','bid','ask','volume','amount','time']]

执行结果

使用方法


for i in range(5):
   df = ts.get_realtime_quotes(code)   
   df = df[['code','name','price','bid','ask','volume','amount','time']]  
   print(df)
   time.sleep(2)

执行结果

使用方法

# 多只股票的实时分笔数据(最好不要超过30)
df = ts.get_realtime_quotes(['600460','000762','000725'])
df[['code','name','price','bid','ask','volume','amount','time']]

执行结果

使用方法

# 获取实时指数
#上证指数 深圳成指 沪深300指数 上证50 中小板 创业板
ts.get_realtime_quotes(['sh','sz','hs300','sz50','zxb','cyb'])

执行结果

7.大盘指数行情列表:

获取大盘指数实时行情列表,以表格的形式展示大盘指数实时行情。

返回值说明:

code:指数代码

name:指数名称

change:涨跌幅

open:开盘点位

preclose:昨日收盘点位

close:收盘点位

high:最高点位

low:最低点位

volume:成交量(手)

amount:成交金额(亿元)

使用方法

ts.get_index()

执行结果

使用方法

ts.realtime_boxoffice()

执行结果

文章参考链接:

参考博客

参考介绍

项目打包

百度网盘
写在最后的话:如果你也是个深度学习爱好者,或者有任何的疑问,可以加我的个人微信号:sdxxqbf