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

猜你喜欢

转载自blog.csdn.net/weixin_46277779/article/details/129821464