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这个包做的是很好的,功能数据种类都很全,但是其他什么指数数据,基金数据,期货数据,外汇数据都不免费....对于学生来说就很昂贵。
量化交易者必看:如何获取股票和期货行情数据
量化分析的第一步是取得行情数据。下面归纳了几个提供行情数据的数据源,有免费的,也有收费的,希望能给你的量化分析工作提供帮助。
一、万得
老牌数据供应商,内容涵盖股票、债券、基金、衍生品、指数、宏观行业。价格较贵,是机构的首选。
二、Tushare
著名的免费沪深股票数据接口,包含常用的沪深股票和指数行情、板块分类数据、基本面数据等,是最常用的股票行情数据接口。
三、立得财经数据
官网:http://lidefinancedata.com/
提供沪深、港股、美股、国内外期货行情,API接口模式。功能较全面,例如K线数据可选三种复权方式、8种时间周期,40多种指标。它还提供其他网站所没有的沪深、港股实时五档分笔tick数据。
四、金数源数据服务
有沪深股市和国内期货数据,以盘后下载csv文件为主。高频数据是它的强项,有A股分笔、level2逐笔数据(盘后下载)和国内期货tick数据(API接口)。另外它还提供免费的A股日K线数据(未复权)。
五、预测者网
提供常用的股票数据,如沪深股票日、周、月K线,个股和指数的分时线,港股日线,既有一次性下载历史行情,也有每日行情的盘后推送。它还有一个其他网站没有的品种:虚拟货币行情数据。
以上是关于Python量化交易08——利用Tushare获取日K数据的主要内容,如果未能解决你的问题,请参考以下文章