一、介绍

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环境和全部依赖包,减少问题出现的几率。

下载安装

  • 方式1:pip install tushare
  • 方式2:访问https://pypi.python.org/pypi/Tushare/下载安装

版本升级

  • pip install tushare --upgrade

查看当前版本的方法:

import tushare
print(tushare.__version__)

二、Tushare的应用

1、概念

1.K线:K线起源于日本德川幕府时代,因为图形像蜡烛,所以又称蜡烛图,日本线。K线是代表这一天股票的开盘价,收盘价,最高价和最低价。

2.均线:均线一般分为5日(MA5),10日(MA10),20日(MA20),30日(MA30),60日(MA60),120日(MA120)和250日平均线(MA250),它指的是在这些天里这个股票收盘的平均价格,通过K线与均线的对比可以看出股票的强弱,一般在5日均线以上属于较强势。

2、获取股票行情的函数

我们主要还是应该掌握如何用tushare获取股票行情数据,使用的是ts.get_hist_data()函数或者ts.get_k_data()函数

参数:

code:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)start:开始日期,格式YYYY-MM-DDend:结束日期,格式YYYY-MM-DDktype:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为Dretry_count:当网络异常后重试次数,默认为3pause:重试时停顿秒数,默认为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:换手率[注:指数无此项]

3、案例

import pandas as pd
import numpy as np
from pandas import DataFrame,Series
import tushare as ts# 获取k线数据,加载至DataFrame中
df = ts.get_k_data('600519',start='2000-01-01')  # 茅台
df.head()# 将从Tushare中获取的数据存储至本地
df.to_csv('./maotai.csv')# 将原数据中的时间作为行索引,并将字符串类型的时间序列化成时间对象类型
# index_col参数:把某一列col作为行索引index
# parse_dates:把字符串类型的时间序列化成时间对象类型
df = pd.read_csv('./maotai.csv',index_col='date',parse_dates=['date'])
df.drop(labels='Unnamed: 0',axis=1,inplace=True)
df.head()# 分析1:输出该股票所有收盘比开盘上涨3%以上的日期
# 获取满足条件的行索引
df.loc[(df['close'] - df['open'])/df['open'] > 0.03].index# 分析2:输出该股票所有开盘比前日收盘跌幅超过2%的日期
df.loc[(df['open'] - df['close'].shift(1)) / df['close'].shift(1) <= -0.02].index# 分析3:假如我从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("Y").last()[:-1] # 获取每年第最后一个交易日对应的行数据并去除最后一年
cost_money = 0
hold = 0 # 每年持有的股票
for year in range(2010, 2020):cost_money -= df_monthly.loc[str(year)]['open'].sum()*100hold += len(df_monthly[str(year)]['open']) * 100if year != 2019:cost_money += df_yearly[str(year)]['open'][0] * holdhold = 0 # 每年持有的股票
cost_money += hold * price_lastprint(cost_money)

4、双均线策略

概念

  • 金叉:就是指短期的均线向上穿越中期或长期的均线,交点就为金叉,应该买入。
  • 死叉:就是指短期的均线向下穿越中期或长期的均线,交点就为死叉,应该卖出。
  • 其它指标以此类推

"""
如果我从假如我从2010年1月1日开始,初始资金为100000元,金叉尽量买入,死叉全部卖出,则到今天为止,我的炒股收益率如何?(双均线策略)
"""import tushare as ts
import pandas as pd
import numpy as np
from pandas import DataFrame,Series# 获取k线数据,加载至DataFrame中
df = ts.get_k_data('600519',start='2000-01-01')# 将从Tushare中获取的数据存储至本地
df.to_csv('./maotai.csv')# 将原数据中的时间作为行索引,并将字符串类型的时间序列化成时间对象类型
# index_col参数:把某一列col作为行索引index
# parse_dates:把字符串类型的时间序列化成时间对象类型
df = pd.read_csv('./maotai.csv',index_col='date',parse_dates=['date'])
df.drop(labels='Unnamed: 0',axis=1,inplace=True)# 获取需要的数据
df = df['2010':'2019'] # 计算均线
ma5 = df['close'].rolling(5).mean()  # 5日均值
ma30 = df['close'].rolling(30).mean()  # 30日均值# 计算出金叉和死叉
s1 = ma5 < ma30
s2 = ma5 > ma30

# 计算金叉死叉图解
gold = df.loc[~(s1 | s2.shift(1))].index  # 金叉
dead = df.loc[s1&s2.shift(1)].index  # 死叉# 计算出结果
first_money = 100000
money = first_money
hold = 0  # 持有多少股
sr1 = Series(1, index=gold)  # 把所有金叉点组成一个行索引为金叉日期,值为1的Series数组
sr2 = Series(0, index=dead)  # 把所有死叉点组成一个行索引为死叉日期,值为0的Series数组
# 合并金叉死叉,并根据时间排序
sr = sr1.append(sr2).sort_index()for i in range(0, len(sr)):p = df['open'][sr.index[i]]  # sr.index取到Series索引,sr.index[i],第i个索引if sr.iloc[i] == 1:# 金叉buy = (money // (100 * p))hold += buy*100money -= buy*100*pelse:money += hold * phold = 0p = df['open'][-1]
now_money = hold * p + moneyprint(now_money - first_money)

转载于:https://www.cnblogs.com/Zzbj/p/10413981.html

金融量化之Tushare模块相关推荐

  1. 十八、彻底掌握金融量化交易库Tushare

    @Author : By Runsen @Date : 2020/6/16 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...

  2. python数据分析及可视化(十六)金融量化(金融工具、金融分析、Tushare安装使用、双均线分析)

    金融介绍 金融就是对现有资源进行重新整合之后,实现价值和利润的等效流通. 比如小明想把手里的资金投资给小李,而小李有好的增值项目但是缺少资金,如果小李的项目创业成功,小明的资金就会增长. 金融工具 在 ...

  3. 金融量化ushare模块

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

  4. 天池四月读书会|数据分析金融量化,6场直播,6位大咖,6个项目实战

    简介:阿里云天池四月读书会来啦,本次读书会主题为数据分析和金融量化,6场直播,6个大咖,6个项目实践,总有你感兴趣的. 阿里云天池读书会四月场来啦,这次我们邀请到了<可解释机器学习>译者. ...

  5. 金融量化-金叉和死叉

    金融量化分析-金叉和死叉 ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  6. python金融量化分析 | 闲杂笔记

    最近事情好像有点多,处理得心不在焉.之前国庆计划把张五常老师的经济解释卷二看完,但也是只把第三章生产的成本看了一下,哈哈~ 这是一篇python金融量化分析的闲杂且入门的笔记,感觉学习价值较低,我只是 ...

  7. 【Python金融量化】零基础如何开始学?

    前言 Python可以说是当前非常流行的编程语言,甚至有点"网红"的感觉.网上还流行一句话"Life is short, I use Python"(人生短暂, ...

  8. 金融量化分析基础知识

    文章目录 金融量化分析 金融量化软件包 股票基础知识 金融量化分析 量化交易的核心是策略分析,通过对历史数据.实时数据分析,选择最佳的交易品种和最好的交易时间. 主流的量化交易:quantopian. ...

  9. 量化投资分析-Tushare数据获取

    文章目录 1. 数据源介绍 2. Tushare安装 3. 数据获取与保存 3.1 获取上市公司列表 3.2 开市日期获取 3.3 获取某一只股票股票的历史数据 4. 对tushare进行再封装 4. ...

最新文章

  1. HDU - 3333 Turing Tree 线段树区间不同值和+详解+思想
  2. POJ - 1330 Nearest Common Ancestors tanjan_LCA
  3. 006.递归和分治思想
  4. 水磨石地面分隔条设置示意图_水磨石抛光过程中什么时候用百洁垫?什么时候用百亮钢丝棉?...
  5. 创建python2与python3虚拟环境失败的原因
  6. Spring实战第七章
  7. 实现option上下移动_用jQuery实现lt;selectgt;选项上下移动 - 不要哀求 学会争取 若是如此 终有所获 - ITeye博客...
  8. 鸿蒙卡片-物联网DTU污水液位计卡片
  9. Win2003的IIS设置
  10. mac更新之后vmware fusion下vmware tools报错
  11. 电压、电流 —— 常用设备的电压电流
  12. linux 会不会受到永恒之蓝漏洞,永恒之蓝漏洞复现(ms17-010)
  13. 升级iOS10后,AVPlayer有时候播放延时和播放不了的问题
  14. 远景论坛黑苹果专区_黑苹果扯犊子篇
  15. matlab经纬度距离方位角,计算经纬度、距离、方位角(示例代码)
  16. 【unity】学习之路
  17. Qt使用libvips处理超大图片(GB以上图片)
  18. 计算机智能科学与技术高校排名,2021年全国智能科学与技术专业大学排名(原创)...
  19. 移动端切图内容包括什么_移动端切图备忘
  20. 浅谈计算机教学的现状分析,浅谈中职计算机专业教学的现状与对策

热门文章

  1. MAC地址的介绍(单播、广播、组播)
  2. 张家辉章子怡获2014金像奖影帝影后 一代宗师获多奖项
  3. IDEA project encoding 设置项目编码
  4. windows10关闭安全中心服务器,微软:Windows 安全中心问题阻止 Win10 版本 2004 更新...
  5. dayjs 取本周时间段
  6. 团簇结构的Fe3O4/Cystamine四氧化三铁纳米颗粒|PDA包裹四氧化三铁磁性纳米颗粒
  7. Cisco Packet Tracer(静态路由+Trunk+VTP协议+单臂路由)
  8. 第二届先导杯-在曙光超算平台编译cp2k
  9. Golang安装iris
  10. 关于虚拟化层-Windows镜像的测试