Tushare这个包做的是很好的,功能数据种类都很全,但是其他什么指数数据,基金数据,期货数据,外汇数据都不免费....对于学生来说就很昂贵。
有同学又会问每个变量是什么意思呢,可以查看官网的指引:
代码实现
例如我要筛选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"]]
具体官网上都教得很清楚了,多看看教程先自学一下...
需要获取的股票:
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
查看:
需要注册一个账号,然后改一下资料,就可以免费试用获取日K线接口的权限了。
然后如果还有很多想其他筛选的条件,可以像下面这个格式一样写:
将股票代码合并:
stocks=list(merged_dict.values())
stocks=",".join(stocks)
stocks
两种方法:
# 方法一:使用布尔索引
df[df["ts_code"] == "000002.SZ"]
# 方法二:使用 query 函数
df.query("ts_code == "000002.SZ"")
token就是在官网注册账户得到的,表示你的账户的编号。
Tushare库要用这个功能可能需要一定的积分才能用,不是免费白嫖的。
可以看到总共有2592条记录。
那就筛选一下呀........就是很简单很基础的pandas语法:
获取多个股票的日K行情:
pro = ts.pro_api()
#多个股票
df = pro.daily(ts_code=stocks, start_date=start_date, end_date=end_date)
我这随便整了两个股票名称和编号的字典,然后合并。
获取周行情或者月行情
一样的效果。
导入包,设置token:,还有开始和结束的时间
import tushare as ts
import pandas as pd
import numpy as np
ts.set_token("*********************************")
start_date="20220701"
end_date="20230301"
由于上面的数据中的trade_date不是标准的日期,pct_chg涨跌幅是百分比,我们处理一下:
df["trade_date"]=pd.to_datetime(df["trade_date"]) #转为时间
df["pct_chg"]=df["pct_chg"]/100 #转为小数
例如我只想要00000SZ这个股票的行情数据
有的同学又要说了,上面的结果是所有股票混在一起了,我不方便看怎么办?
其实很简单就是前面获取日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")
文章为作者独立观点,不代表股票交易接口观点