一、介绍

Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。

需要强调的是,TuShare库里不仅仅有股票数据,而是一个综合的财经库。只是因为股票数据数据量比较大,特别锻炼数据分析能力,所以才选择股票数据练手。其余的数据也是很有意思的,比如全国电影票房排名

使用前提

  • 安装Python
  • 安装pandas
  • lxml也是必须的,正常情况下安装了Anaconda后无须单独安装,如果没有可执行:pip install lxml

建议安装Anaconda(http://www.continuum.io/downloads),一次安装包括了Python环境和全部依赖包,减少问题出现的几率。

下载安装

版本升级

  • pip install tushare --upgrade

查看当前版本的方法:

  1. import tushare
  2. print(tushare.__version__)

二、Tushare的应用

1、获取股票行情的函数

我们主要还是应该掌握如何用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=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
  8.  
  9. retry_count:当网络异常后重试次数,默认为3
  10.  
  11. pause:重试时停顿秒数,默认为0

  12. 返回值说明:
  13.  
  14. date:日期
  15.  
  16. open:开盘价
  17.  
  18. high:最高价
  19.  
  20. close:收盘价
  21.  
  22. low:最低价
  23.  
  24. volume:成交量
  25.  
  26. price_change:价格变动
  27.  
  28. p_change:涨跌幅
  29.  
  30. ma55日均价
  31.  
  32. ma1010日均价
  33.  
  34. ma20:20日均价
  35.  
  36. v_ma5:5日均量
  37.  
  38. v_ma10:10日均量
  39.  
  40. v_ma20:20日均量
  41.  
  42. turnover:换手率[注:指数无此项]

2、案例

  1. import pandas as pd
  2. import numpy as np
  3. from pandas import DataFrame,Series
  4. import tushare as ts
  5.  
  6. # 获取k线数据,加载至DataFrame中
  7. df = ts.get_k_data('',start='2000-01-01') # 茅台
  8. df.head()
  9.  
  10. # 将从Tushare中获取的数据存储至本地
  11. df.to_csv('./maotai.csv')
  12.  
  13. # 将原数据中的时间作为行索引,并将字符串类型的时间序列化成时间对象类型
  14. # index_col参数:把某一列col作为行索引index
  15. # parse_dates:把字符串类型的时间序列化成时间对象类型
  16. df = pd.read_csv('./maotai.csv',index_col='date',parse_dates=['date'])
  17. df.drop(labels='Unnamed: 0',axis=1,inplace=True)
  18. df.head()
  19.  
  20. # 分析1:输出该股票所有收盘比开盘上涨3%以上的日期
  21. # 获取满足条件的行索引
  22. df.loc[(df['close'] - df['open'])/df['open'] > 0.03].index
  23.  
  24. # 分析2:输出该股票所有开盘比前日收盘跌幅超过2%的日期
  25. df.loc[(df['open'] - df['close'].shift(1)) / df['close'].shift(1) <= -0.02].index
  26.  
  27. # 分析3:假如我从2010年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何
  28. price_last = df['open'][-1]
  29. df = df['2010-01':'2019-01'] # 剔除首尾无用的数据
  30. # Pandas提供了resample函数用便捷的方式对时间序列进行重采样,根据时间粒度的变大或者变小分为降采样和升采样:
  31. df_monthly = df.resample("M").first() # 获取每月第一个交易日对应的行数据
  32. df_yearly = df.resample("Y").last()[:-1] # 获取每年第最后一个交易日对应的行数据并去除最后一年
  33. cost_money = 0
  34. hold = 0 # 每年持有的股票
  35. for year in range(2010, 2020):
  36.  
  37. cost_money -= df_monthly.loc[str(year)]['open'].sum()*100
  38. hold += len(df_monthly[str(year)]['open']) * 100
  39. if year != 2019:
  40. cost_money += df_yearly[str(year)]['open'][0] * hold
  41. hold = 0 # 每年持有的股票
  42. cost_money += hold * price_last
  43.  
  44. print(cost_money)

金融量化ushare模块的更多相关文章

  1. 金融量化之Tushare模块

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

  2. 金融量化分析【day110】:金融基础知识

    一.股票 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社会增发股票以募集 ...

  3. day32 Python与金融量化分析(二)

    第一部分:金融与量化投资 股票: 股票是股份公司发给出资人的一种凭证,股票的持有者就是股份公司的股东. 股票的面值与市值 面值表示票面金额 市值表示市场价值 上市/IPO: 企业通过证券交易所公开向社 ...

  4. day31 堡垒机尾声 + Python与金融量化分析(一)

    堡垒机尾声: 代码案例:https://github.com/liyongsan/git_class/tree/master/day31 课堂笔记:file send: 1.选择本地文件 2.远程路径 ...

  5. Python与金融量化分析----金融与量化投资

    一:金融了解 金融:就是对现有资源进行重新的整合之后,进行价值和利润的等效流通. 金融工具: 股票 期货 黄金 外汇 基金 ............. 股票: 股票是股份公司发给出资人多的一种凭证,股 ...

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

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

  7. 金融量化分析【day111】:Matplotib-绘制K线图

    一.绘制k线图 1.使用金融包出错解决 1.错误代码 ImportError: No module named finance 2.解决办法 https://github.com/matplotlib ...

  8. 金融量化分析【day112】:初识量化交易

    一.摘要 为什么需要量化交易? 量化交易是做什么? 量化交易的价值何在? 做量化交易需要什么? 聚宽是什么? 零基础如何快速入门量化交易? 自测与自学 二.量化交易比传统交易强多少? 它能让你的交易效 ...

  9. 金融量化分析-python量化分析系列之---使用python获取股票历史数据和实时分笔数据

    财经数据接口包tushare的使用(一) Tushare是一款开源免费的金融数据接口包,可以用于获取股票的历史数据.年度季度报表数据.实时分笔数据.历史分笔数据,本文对tushare的用法,已经存在的 ...

随机推荐

  1. char函数绕过魔术引号注入

    我目前学习到的绕过魔术引号的几种方法(如果知道还有别的请万望告之): 1.倘若服务端是GBK可以尝试宽字节注入 2.使用char函数绕过魔术引号进行注入 3.同char函数类似的函数,例如bin(转换 ...

  2. scala Wordcount

    package my.bigdata.scala08 import scala.collection.mutableimport scala.collection.mutable.ArrayBuffe ...

  3. JavaScript概述.pdf

    第1章 JavaScript概述 第2章 使用JavaScript 第3章 语法.关键保留字及变量 第4章 数据类型 第5章 运算符 第6章 流程控制语句 第7章 函数 //没有参数的函数 funct ...

  4. C++中数字和字符串的转换

    1.字符串数字之间的转换 (1)string --> char *   string str("OK");   char * p = str.c_str(); (2)char ...

  5. elasticsearch安装与使用(1)-- centos7 elasticsearch的两种简单安装方法

    转自:http://www.cnblogs.com/miao-zp/p/6003160.html 简单修改 前言 elasticsearch(下面称为ES)是一个基于Lucene的搜索服务器(By 百 ...

  6. grafana里prometheus查询语法

    名称 描述 label_values(label) 返回label每个指标中的标签值列表. label_values(metric, label) 返回label指定度量标准中的标签值列表. metr ...

  7. GitHub 上 57 款最流行的开源深度学习项目【转】

    GitHub 上 57 款最流行的开源深度学习项目[转] 2017-02-19 20:09 334人阅读 评论(0) 收藏 举报 分类: deeplearning(28) from: https:// ...

  8. Java的图形界面依然是跨平台的

    Awt:抽象窗口工具箱,它由三部分组成: ①组件:界面元素: ②容器:装载组件的容器(例如窗体): ③布局管理器:负责决定容器中组件的摆放位置. 图形界面的应用分四步: ① 选择一个容器: ⑴wind ...

  9. splash启动速度优化

    在styles.xml中加入 <style name="AppSplash" parent="android:Theme"> <item na ...

  10. List<T>转DataTable

    /// <summary> /// 将集合类转换成DataTable /// </summary> /// <param name="list"> ...