Tushare模块
.TuShare简介和环境安装
TuShare是一个著名的免费、开源的python财经数据接口包。其官网主页为:TuShare -财经数据接口包。该接口包如今提供了大量的金融数据,涵盖了股票、基本面、宏观、新闻的等诸多类别数据(具体请自行查看官网),并还在不断更新中。TuShare可以基本满足量化初学者的回测需求
环境安装:
- pip install tushare。
- 如果是老版本升级,可以用升级命令pip install tushare --upgrade3。
- 在python中导入包:import tushare as ts。
TuShare的应用
我们主要还是应该掌握如何用tushare获取股票行情数据,使用的是ts.get_hist_data()函数或者ts.get_k_data()函数。输入参数为:
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日均量
turnover:换手率[注:指数无此项]
案例一
- 使用tushare包获取某股票的历史行情数据。
#获取k线数据,加载至DataFrame中
df = ts.get_k_data("600519",start="1988-01-01")
#将从Tushare中获取的数据存储至本地
df.to_csv("600519.csv")
#将原数据中的时间作为行索引,并将字符串类型的时间序列化成时间对象类型
df = pd.read_csv("600519.csv", index_col='date',parse_dates=['date'])[['open','close','high','low']]
- 输出该股票所有收盘比开盘上涨3%以上的日期。
#指定条件
condition = (df['close']-df['open'])/df['open']>=0.03
#获取满足条件的行索引
df[condition].index
执行后结果为:
DatetimeIndex(['2001-08-27', '2001-08-28', '2001-09-10', '2001-12-21',
'2002-01-18', '2002-01-31', '2003-01-14', '2003-10-29',
'2004-01-05', '2004-01-14',
...
'2018-06-20', '2018-08-09', '2018-08-21', '2018-08-27',
'2018-09-18', '2018-09-26', '2018-10-19', '2018-10-31',
'2018-11-13', '2018-12-28'],
dtype='datetime64[ns]', name='date', length=291, freq=None)
- 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
condition = (df['open']-df['close'].shift(1))/df['close'].shift(1)<=-0.02
df[condition].index
执行结果为:
DatetimeIndex(['2001-09-12', '2002-06-26', '2002-12-13', '2004-07-01',
'2004-10-29', '2006-08-21', '2006-08-23', '2007-01-25',
'2007-02-01', '2007-02-06', '2007-03-19', '2007-05-21',
'2007-05-30', '2007-06-05', '2007-07-27', '2007-09-05',
'2007-09-10', '2008-03-13', '2008-03-17', '2008-03-25',
'2008-03-27', '2008-04-22', '2008-04-23', '2008-04-29',
'2008-05-13', '2008-06-10', '2008-06-13', '2008-06-24',
'2008-06-27', '2008-08-11', '2008-08-19', '2008-09-23',
'2008-10-10', '2008-10-15', '2008-10-16', '2008-10-20',
'2008-10-23', '2008-10-27', '2008-11-06', '2008-11-12',
'2008-11-20', '2008-11-21', '2008-12-02', '2009-02-27',
'2009-03-25', '2009-08-13', '2010-04-26', '2010-04-30',
'2011-08-05', '2012-03-27', '2012-08-10', '2012-11-22',
'2012-12-04', '2012-12-24', '2013-01-16', '2013-01-25',
'2013-09-02', '2014-04-25', '2015-01-19', '2015-05-25',
'2015-07-03', '2015-07-08', '2015-07-13', '2015-08-24',
'2015-09-02', '2015-09-15', '2017-11-17', '2018-02-06',
'2018-02-09', '2018-03-23', '2018-03-28', '2018-07-11',
'2018-10-11', '2018-10-24', '2018-10-25', '2018-10-29',
'2018-10-30'],
dtype='datetime64[ns]', name='date', freq=None)
- 假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?
price_last = df['open'][-1]
df = df['2010-01':'2019-01'] #剔除首尾无用的数据
#Pandas提供了resample函数用便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:
df_monthly = df.resample("M").first()
df_yearly = df.resample("A").last()[:-1] #去除最后一年
cost_money = 0
hold = 0 #每年持有的股票
for year in range(2010, 2019):
cost_money -= df_monthly.loc[str(year)]['open'].sum()*100
hold += len(df_monthly[str(year)]['open']) * 100
if year != 2019:
cost_money += df_yearly[str(year)]['open'][0] * hold
hold = 0 #每年持有的股票
cost_money += hold * price_last
print(cost_money
案例二
- 使用tushare包获取某股票的历史行情数据
df = pd.read_csv("600519.csv",index_col='date', parse_dates=['date'])[['open','close','low','high']]
- 使用pandas包计算该股票历史数据的5日均线和60日均线
df['ma5']=df['open'].rolling(5).mean()
df['ma30']=df['open'].rolling(30).mean()
什么是均线?
对于每一个交易日,都可以计算出前N天的移动平均值,然后把这些移动平均值连起来,成为一条线,就叫做N日移动平均线。移动平均线常用线有5天、10天、30天、60天、120天和240天的指标。
5天和10天的是短线操作的参照指标,称做日均线指标;
30天和60天的是中期均线指标,称做季均线指标;
120天和240天的是长期均线指标,称做年均线指标。
均线计算方法:MA=(C1+C2+C3+...+Cn)/N C:某日收盘价 N:移动平均周期(天数)
- 使用matplotlib包可视化历史数据的收盘价和两条均线
plt.plot(df[['close','ma5','ma30']].iloc[:100])
- 分析输出所有金叉日期和死叉日期
sr1 = df['ma5'] < df['ma30']
sr2 = df['ma5'] >= df['ma30']
death_cross = df[sr1 & sr2.shift(1)].index
golden_cross = df[~(sr1 | sr2.shift(1))].index
股票分析技术中的金叉和死叉,可以简单解释为:
分析指标中的两根线,一根为短时间内的指标线,另一根为较长时间的指标线。
如果短时间的指标线方向拐头向上,并且穿过了较长时间的指标线,这种状态叫“金叉”;
如果短时间的指标线方向拐头向下,并且穿过了较长时间的指标线,这种状态叫“死叉”;
一般情况下,出现金叉后,操作趋向买入;死叉则趋向卖出。当然,金叉和死叉只是分析指标之一,要和其他很多指标配合使用,才能增加操作的准确性。
- 如果我从假如我从2010年1月1日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?
first_money = 100000
money = first_money
hold = 0#持有多少股
sr1 = pd.Series(1, index=golden_cross)
sr2 = pd.Series(0, index=death_cross)
#根据时间排序
sr = sr1.append(sr2).sort_index()
for i in range(0, len(sr)):
p = df['open'][sr.index[i]]
if sr.iloc[i] == 1:
#金叉
buy = (money // (100 * p))
hold += buy*100
money -= buy*100*p
else:
money += hold * p
hold = 0
p = df['open'][-1]
now_money = hold * p + money
print(now_money - first_money)
Tushare模块的更多相关文章
- 1.tushare模块的应用
tushare模块的应用 今日概要 TuShare简介和环境安装 TuShare的应用 今日详情 一.TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其 ...
- 金融量化之Tushare模块
一.介绍 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...
- tushare模块的应用
一.简介以及环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其官网主页为:TuShare -财经数据接口包.该接口包如今提供了大量的金融数据,涵盖了股票.基本面.宏观.新闻 ...
- 金融量化之tushare模块的使用
一.TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其官网主页为:TuShare -财经数据接口包.该接口包如今提供了大量的金融数据,涵盖了股票.基本面 ...
- numpy+pandas+matplotlib+tushare股票分析
一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...
- python调用tushare获取沪深A股票资金流向数据
接口:moneyflow 描述:获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向 限量:单次最大提取4000行记录,总量不限制 积分:用户需要至少1500积分才可以调取,基础积分有流 ...
- python+tushare获取股票每日停复牌信息
接口:suspend 更新时间:不定期 描述:获取股票每日停复牌信息 注:tushare模块下载和安装教程,请查阅我之前的文章 输入参数 名称 | 类型 | 必 ...
- python调用tushare获取A股周线行情
接口:weekly 描述:获取A股周线行情 限量:单次最大3700,总量不限制 积分:用户需要至少300积分才可以调取,具体请参阅本文最下方积分获取办法 注:tushare模块下载和安装教程,请查阅我 ...
- python调用tushare获取A股上市公司管理层人员信息
接口:stk_managers 描述:获取上市公司管理层 注:tushare模块下载和安装教程,请查阅我之前的文章 积分:用户需要2000积分才可以调取,具体请参阅本文最下方积分获取办法 输入参数 名 ...
随机推荐
- golang 中 string 转换 []byte 的一道笔试题
背景 去面试的时候遇到一道和 string 相关的题目,记录一下用到的知识点.题目如下: s:="123" ps:=&s b:=[]byte(s) pb:=&b s ...
- 信息论随笔3: 交叉熵与TF-IDF模型
接上文:信息论随笔2: 交叉熵.相对熵,及上上文:信息论随笔 在读<数学之美>的时候,相关性那一节对TF-IDF模型有这样一句描述:"其实 IDF 的概念就是一个特定条件下.关键 ...
- Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS
什么是 Let’s Encrypt? 部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用. Let’s En ...
- 数字类型——python3
今天我为各位小伙伴准备了python3中数字类型,希望能够帮助到你们! Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下 ...
- 一副美丽而庞大的SQL TUNING计划美图
最近因为很忙,一直忙着开发公司的产品和客户的事情,杂七杂八,忙的不亦乐乎,所以,好久没有来这里写东西,这两天为客户优化了一个系统,优化前CPU持续冲顶爆满,导致系统卡死,应用系统不能正常使用,其中有个 ...
- 微软正式发布Chromium Edge开发预览版
目录 下载与注册 更多下载信息与订阅 导入Chrome部分数据 扩展安装 安装开发预览版是否会与Win10自带的Edge冲突? 一大早从朋友圈看到消息,微软正式发布Chromium Edge 开发预览 ...
- Vue.js组件间通信方式总结
平时在使用Vue框架的业务开发中,组件不仅仅要把模板的内容进行复用,更重要的是组件之间要进行通信.组件之间通信分为三种:父-子:子-父:跨级组件通信.下面,就组件间如何通信做一些总结. 1.父组件到子 ...
- 『取巧』VS2015试用期过后 继续试用
背景: 个人电脑 安装的 VS2015 Community 社区版. 一直用得挺好,都忘了要登录. 直到近来,30天试用期过 —— VS弹窗:要登录用户名.密码 才能继续使用. 但是,输入了无数次 邮 ...
- Docker进阶之六:网络管理
一.默认网络 安装Docker时会自动创建三个网络:docker network ls 列出网络: # docker network ls NETWORK ID NAME DRIVER SCOPE 5 ...
- 【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源
如果你发现还有西半球的资源,烦请相告,不胜感谢! 一..NET Core基础 微软英文官网 .NET Core 微软中文官网 GitHub 用ASP.NET内核和Azure构建现代Web应用程序 博客 ...