一、简介以及环境安装

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()函数。输入参数为:

  1. code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
  2.  
  3. start:开始日期,格式YYYY-MM-DD
  4.  
  5. end:结束日期,格式YYYY-MM-DD
  6.  
  7. ktype:数据类型,D=日k线 W=周 M=月 =5分钟 =15分钟 =30分钟 =60分钟,默认为D
  8.  
  9. retry_count:当网络异常后重试次数,默认为3
  10.  
  11. pause:重试时停顿秒数,默认为0

返回值说明:

  1.      date:日期
  2.  
  3. open:开盘价
  4.  
  5. high:最高价
  6.  
  7. close:收盘价
  8.  
  9. low:最低价
  10.  
  11. volume:成交量
  12.  
  13. price_change:价格变动
  14.  
  15. p_change:涨跌幅
  16.  
  17. ma55日均价
  18.  
  19. ma1010日均价
  20.  
  21. ma20:20日均价
  22.  
  23. v_ma5:5日均量
  24.  
  25. v_ma10:10日均量
  26.  
  27. v_ma20:20日均量
  28.  
  29. turnover:换手率[注:指数无此项]

案例应用:

使用tushare包获取某股票(贵州茅台)的历史行情数据。

  1. #获取k线数据,加载至DataFrame中
  2. df = ts.get_k_data("",start="1988-01-01")
  3. #将从Tushare中获取的数据存储至本地
  4. df.to_csv("600519.csv")
  5. #将原数据中的时间作为行索引,并将字符串类型的时间序列化成时间对象类型
  6. df = pd.read_csv("600519.csv", index_col='date',parse_dates=['date'])[['open','close','high','low']] # index_col将某一列的数据作为源数据的索引,parse_dates解析为时间类型

输出该股票所有收盘比开盘上涨3%以上的日期。

  1. #输出该股票所有收盘比开盘上涨3%以上的日期。
  2. b_indexs = (df['close'] - df['open'])/df['open']>0.03
  3. b_indexs # 返回布尔值,可以将这组布尔值作为行索引
  4. df[b_indexs].index # 获得符合条件的日期即行索引
  5. """
  6. 输出结果DatetimeIndex(['2001-08-27', '2001-08-28', '2001-09-10', '2001-12-21',
  7. '2002-01-18', '2002-01-31', '2003-01-14', '2003-10-29',
  8. '2004-01-05', '2004-01-14',
  9. ...
  10. '2018-09-18', '2018-09-26', '2018-10-19', '2018-10-31',
  11. '2018-11-13', '2018-12-28', '2019-01-15', '2019-02-11',
  12. '2019-03-01', '2019-03-18'],
  13. dtype='datetime64[ns]', name='date', length=295, freq=None)"""

输出该股票所有开盘比前日收盘跌幅超过2%的日期。

  1. condition = (df['open']-df['close'].shift(1))/df['close'].shift(1)<=-0.02 # shift(1) 表示这一列整体向下偏移一位
  2. df[condition].index
  3.  
  4. 执行结果为:
  5. DatetimeIndex(['2001-09-12', '2002-06-26', '2002-12-13', '2004-07-01',
  6. '2004-10-29', '2006-08-21', '2006-08-23', '2007-01-25',
  7. '2007-02-01', '2007-02-06', '2007-03-19', '2007-05-21',
  8. '2007-05-30', '2007-06-05', '2007-07-27', '2007-09-05',
  9. '2007-09-10', '2008-03-13', '2008-03-17', '2008-03-25',
  10. '2008-03-27', '2008-04-22', '2008-04-23', '2008-04-29',
  11. '2008-05-13', '2008-06-10', '2008-06-13', '2008-06-24',
  12. '2008-06-27', '2008-08-11', '2008-08-19', '2008-09-23',
  13. '2008-10-10', '2008-10-15', '2008-10-16', '2008-10-20',
  14. '2008-10-23', '2008-10-27', '2008-11-06', '2008-11-12',
  15. '2008-11-20', '2008-11-21', '2008-12-02', '2009-02-27',
  16. '2009-03-25', '2009-08-13', '2010-04-26', '2010-04-30',
  17. '2011-08-05', '2012-03-27', '2012-08-10', '2012-11-22',
  18. '2012-12-04', '2012-12-24', '2013-01-16', '2013-01-25',
  19. '2013-09-02', '2014-04-25', '2015-01-19', '2015-05-25',
  20. '2015-07-03', '2015-07-08', '2015-07-13', '2015-08-24',
  21. '2015-09-02', '2015-09-15', '2017-11-17', '2018-02-06',
  22. '2018-02-09', '2018-03-23', '2018-03-28', '2018-07-11',
  23. '2018-10-11', '2018-10-24', '2018-10-25', '2018-10-29',
  24. '2018-10-30'],
  25. dtype='datetime64[ns]', name='date', freq=None)

假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

  1. price_last = df['open'][-1]
  2. df = df['':''] #剔除首尾无用的数据
  3. #Pandas提供了resample函数用便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:
  4. df_monthly = df.resample("M").first()
  5. df_yearly = df.resample("A").last()[:-1] #去除最后一年
  6. cost_money = 0
  7. hold = 0 #每年持有的股票
  8. for year in range(2010, 2019):
  9.  
  10. cost_money -= df_monthly.loc[str(year)]['open'].sum()*100
  11. hold += len(df_monthly[str(year)]['open']) * 100
  12. if year != 2019:
  13. cost_money += df_yearly[str(year)]['open'][0] * hold
  14. hold = 0 #每年持有的股票
  15. cost_money += hold * price_last
  16.  
  17. print(cost_money)

tushare模块的应用的更多相关文章

  1. 1.tushare模块的应用

    tushare模块的应用 今日概要 TuShare简介和环境安装 TuShare的应用 今日详情 一.TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其 ...

  2. Tushare模块

    .TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其官网主页为:TuShare -财经数据接口包.该接口包如今提供了大量的金融数据,涵盖了股票.基本面. ...

  3. 金融量化之Tushare模块

    一.介绍 Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们 ...

  4. 金融量化之tushare模块的使用

    一.TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其官网主页为:TuShare -财经数据接口包.该接口包如今提供了大量的金融数据,涵盖了股票.基本面 ...

  5. numpy+pandas+matplotlib+tushare股票分析

    一.数据导入 安装tushare模块包 pip install tushare http://tushare.org/ tushare是一个财经数据接口包 import numpy as np imp ...

  6. python调用tushare获取沪深A股票资金流向数据

    接口:moneyflow 描述:获取沪深A股票资金流向数据,分析大单小单成交情况,用于判别资金动向 限量:单次最大提取4000行记录,总量不限制 积分:用户需要至少1500积分才可以调取,基础积分有流 ...

  7. python+tushare获取股票每日停复牌信息

    接口:suspend 更新时间:不定期 描述:获取股票每日停复牌信息 注:tushare模块下载和安装教程,请查阅我之前的文章 输入参数 名称      |      类型      |      必 ...

  8. python调用tushare获取A股周线行情

    接口:weekly 描述:获取A股周线行情 限量:单次最大3700,总量不限制 积分:用户需要至少300积分才可以调取,具体请参阅本文最下方积分获取办法 注:tushare模块下载和安装教程,请查阅我 ...

  9. python调用tushare获取A股上市公司管理层人员信息

    接口:stk_managers 描述:获取上市公司管理层 注:tushare模块下载和安装教程,请查阅我之前的文章 积分:用户需要2000积分才可以调取,具体请参阅本文最下方积分获取办法 输入参数 名 ...

随机推荐

  1. 用jquery实现html5的placeholder功能

    html5的placeholder功能在表单中经常用到,它主要用来提示用户输入信息,当用户点击该输入框之后,提示文字会自动消失. 我们用jquery实现类似的功能: 当输入框获得焦点时,清空输入框中的 ...

  2. jquery实现全选,取消,反选的功能&实现左侧菜单

    1.全选,取消,反选的例子 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  3. 3-java_string学习笔记:

    java中String的常用方法

  4. spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" />

    spring property标签中的 ref属性和ref 标签有什么不同? 如下:<property name="a" ref="b" /> sp ...

  5. IRC聊天指南

    参考https://www.cnblogs.com/fzzl/archive/2011/12/26/2302637.html

  6. SGU 194 Reactor Cooling (有容量和下界的可行流)

    题意:给定上一个有容量和下界的网络,让你求出一组可行解. 析:先建立一个超级源点 s 和汇点 t ,然后在输入时记录到每个结点的下界的和,建边的时候就建立c - b的最后再建立 s 和 t , 在建立 ...

  7. UVa 1615 Highway (贪心,区间选点问题)

    题意:给定一个数 n 个点,和一个d,要求在x轴上选出尽量少的点,使得对于给定的每个点,都有一个选出的点离它的欧几里德距离不超过d. 析:首先这是一个贪心的题目,并且是区间选点问题,什么是区间选点呢, ...

  8. linux计划任务(二)

    计划任务的授权 1.at任务 /etc/at.allow /etc/at.deny 2.crontab任务 /etc/cron.allow /etc/cron.deny [注:如果allow文件存在, ...

  9. Max Sum -- hdu -- 1003

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  10. FlexBox弹性盒布局

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...