Python量化交易08——利用Tushare获取日K数据

Posted 阡之尘埃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python量化交易08——利用Tushare获取日K数据相关的知识,希望对你有一定的参考价值。

总有同学问我要数据...很多第三方接口都能直接获取数据的,本次介绍怎么用Tushare库获取A股日k线行情的数据。


Tushare有两个版本,老版现在快弃用了。
新版的官网链接在这:Tushare数据

需要注册一个账号,然后改一下资料,就可以免费试用获取日K线接口的权限了。

具体官网上都教得很清楚了,多看看教程先自学一下...


代码实现

导入包,设置token:,还有开始和结束的时间

import tushare as ts
import pandas as pd
import numpy as np

ts.set_token('*********************************')
start_date='20220701'
end_date='20230301'

token就是在官网注册账户得到的,表示你的账户的编号。

需要获取的股票:

dict1 = '中国平安':'000001.SZ', '招商银行':'001696.SZ', '万科A':'000002.SZ', '中兴通讯':'000063.SZ', '海康威视':'002415.SZ', '平安银行':'000001.SZ', '中国国旅':'601888.SH','兴业银行':'601166.SH', '中国建筑':'601668.SH'
dict2 = '中国人寿':'601628.SH', '山东黄金':'600547.SH', '华泰证券':'601688.SH', '中信证券':'600030.SH', '药明康德':'603259.SH', '海螺水泥':'600585.SH', '国泰君安':'601211.SH', '中国平安':'601318.SH'
# 将两个字典合并为一个字典
merged_dict = **dict1, **dict2
print(len(dict1),len(dict2),len(merged_dict))
merged_dict

 我这随便整了两个股票名称和编号的字典,然后合并。

将股票代码合并:

stocks=list(merged_dict.values())
stocks=','.join(stocks)
stocks

获取多个股票的日K行情:

pro = ts.pro_api()
#多个股票
df = pro.daily(ts_code=stocks, start_date=start_date, end_date=end_date)

 查看:

df

可以看到 总共有2592条记录。

有同学又会问 每个变量是什么意思呢,可以查看官网的指引:

 


筛选

有的同学又要说了,上面的结果是所有股票混在一起了,我不方便看怎么办?

那就筛选一下呀........就是很简单很基础的pandas语法:

例如我只想要000002.SZ这个股票的行情数据

两种方法:

# 方法一:使用布尔索引
df[df['ts_code'] == '000002.SZ']

# 方法二:使用 query 函数
df.query('ts_code == "000002.SZ"')

一样的效果。

由于上面的数据中的trade_date不是标准的日期,pct_chg涨跌幅是百分比,我们处理一下:

df['trade_date']=pd.to_datetime(df['trade_date'])  #转为时间
df['pct_chg']=df['pct_chg']/100   #转为小数

 

然后如果还有很多想其他筛选的条件,可以像下面这个格式一样写:

例如我要筛选trade_date在2023-01-01之后,并且pct_chg在2%以上,vol大于300000的记录,而且只取股票代码,日期,收盘价,成交量四个变量,其他变量不要


df.loc[(df['trade_date'] > '20230101') & (df['pct_chg'] > 0.02) & (df['vol'] > 300000),['ts_code','trade_date','close','vol']]

 


获取周行情或者月行情

Tushare库要用这个功能可能需要一定的积分才能用,不是免费白嫖的。

其实很简单就是前面获取日k的时候是pro.daily,现在改成pro.weekly就行,官网例子:

df = pro.weekly(ts_code='000001.SZ', start_date='20180101', end_date='20181101', fields='ts_code,trade_date,open,high,low,close,vol,amount')

月份就是:

pro.monthly

Tushare这个包做的是很好的,功能数据种类都很全,但是其他什么指数数据,基金数据,期货数据,外汇数据都不免费....对于学生来说就很昂贵。 

 

量化交易者必看:如何获取股票和期货行情数据

量化分析的第一步是取得行情数据。下面归纳了几个提供行情数据的数据源,有免费的,也有收费的,希望能给你的量化分析工作提供帮助。

一、万得

官网:http://www.wind.com.cn/

老牌数据供应商,内容涵盖股票、债券、基金、衍生品、指数、宏观行业。价格较贵,是机构的首选。

二、Tushare

官网:http://tushare.org/

著名的免费沪深股票数据接口,包含常用的沪深股票和指数行情、板块分类数据、基本面数据等,是最常用的股票行情数据接口。

三、立得财经数据

官网:http://lidefinancedata.com/

提供沪深、港股、美股、国内外期货行情,API接口模式。功能较全面,例如K线数据可选三种复权方式、8种时间周期,40多种指标。它还提供其他网站所没有的沪深、港股实时五档分笔tick数据。

四、金数源数据服务

官网:http://www.jinshuyuan.net/

有沪深股市和国内期货数据,以盘后下载csv文件为主。高频数据是它的强项,有A股分笔、level2逐笔数据(盘后下载)和国内期货tick数据(API接口)。另外它还提供免费的A股日K线数据(未复权)。

五、预测者网

官网:https://www.yucezhe.com/

提供常用的股票数据,如沪深股票日、周、月K线,个股和指数的分时线,港股日线,既有一次性下载历史行情,也有每日行情的盘后推送。它还有一个其他网站没有的品种:虚拟货币行情数据。

以上是关于Python量化交易08——利用Tushare获取日K数据的主要内容,如果未能解决你的问题,请参考以下文章

量化交易者必看:如何获取股票和期货行情数据

量化交易必备的开源项目:yfinance

如何从tushare中调取十大股东数据?

配置python环境使用tushare股票数据

使用python和tushare股票交易日历数据,判断节假日周末休市

AI量化交易