社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

像Python一样方便的用R获取金融数据

挖地兔 • 5 年前 • 808 次点击  



Tushare R package终于在R官方CRAN喜提“过会”获得通过!终于不用吹了牛逼却迟迟欠大家一个R包而有压抑感!终于可以激动发出我们的官宣:欢迎大家用R语言免费撸金融数据!


依然要感谢社区的小伙伴,楚霄,晓子,Binger在代码编写,文档整理付出了努力,在此深表谢意。Tushare正是在社区用户的共同建设和维护下一步步变得越来越好,也欢迎更多小伙伴一起参与。



【Tushare R包由楚霄贡献,晓子整理发布。】


推荐使用RStudio来完成数据操作,支持单步运行、包管理、环境(变量)查看、帮助文件查看(跳转)等诸多功能。下文,就是以RStudio作为编译环境来演示。


安装Tushare


打开RStudio,在控制台输入命令:


> install.packages('Tushare')


Tushare的R包需要依赖httr、tidyverse、forecast和data.table这四个包。


由于Tushare包中申明了依赖关系,因此这四个依赖包也会自动下载下来。如果下载过程卡住了,导致下载失败,可以重试几次,毕竟CRAN的服务器不在大陆,后面将介绍如何使用CRAN的国内镜像。


载入Tushare


如同安装过程,在载入Tushare的同时,R也会自动载入其依赖的包。


library('Tushare')


也可以通过help查看Tushare的相关信息


> help('Tushare')


在R官网也可以看到Tushare的索引信息:

使用Tushare


获得api接口对象


> api 'YOUR TOKEN HERE')


如同在Python包中使用Tushare Pro的pro.query,向api(只要调用Tushare::pro_api获得了接口,你可以使用任意的名字命名)传递想要调用的接口名以及相应的参数就可以调用相应的数据。


在api中,必须传递的是Tushare Pro提供的接口名(详细请见官方网站https://tushare.pro/),其他参数视相应的接口传入相应的参数。


Tips:Tushare的0.1.1版本的R包暂时不支持fields字段。


示例1:只传入接口名而不传入其他参数调用api接口


> api(api_name = 'stock_basic')


接下来使用pro_bar文档中的一个示例来演示传入接口名和其他参数调用api接口。


示例2:传入接口名和其他参数调用api接口


> api(api_name = 'daily', ts_code = "000001.SZ", start_date = "20181001", end_date = "20181010")


pro_bar接口的使用


获得pro_bar接口,并命名为bar。和Tushare Pro的python包一样,为了统一使用行情接口,Tushare的R包也提供了pro_bar。


> bar 'YOUR TOKEN HERE')


> bar(ts_code = "000001.SZ", start_date = "20181001", end_date = "20181010")


bar接口可以传递adj来同时调取行情以及复权因子,并将计算后的结果返回出来。其他接口参数请参考Tushare Pro网站的详细说明。


> bar(ts_code = "000001.SZ", start_date = "20181001", adj = "hfq"


    
, ma = c(5,10))


一个样例


最后,我们来执行一段程序,获取平安银行的后复权数据并完成可视化展示。


df = bar(ts_code="000001.SZ", start_date="20180101", adj="hfq", ma=c(5,10,20)) %>%

    mutate(trade_date = as.Date(gsub('^(\\d{4})(\\d{2})(\\d{2})$''\\1-\\2-\\3', trade_date))) %>%

    mutate_at(vars(3:dim(.)[2]), as.numeric)



df$id = dim(df)[1]:1

df$candleLower = pmin(df$open, df$close)

df$candleUpper = pmax(df$open, df$close)

df$candleMiddle = (df$candleLower+df$candleUpper)/2

theme_set(theme_bw())

p = ggplot(df, aes(x=id))+

  geom_boxplot(aes(lower= candleLower,

                   middle = candleLower,

                   upper = candleUpper,

                   ymin = low,

                   ymax = high,

                   color= ifelse(open>close,"green","red"),

                   width= 0.5),

               stat = 'identity',

               size = .5)+

  scale_color_manual(values = c("green","red"))+

  theme(

    panel.grid.major = element_blank(),

    panel.grid.minor = element_blank(),

    panel.background = element_blank(),

    axis.title = element_blank(),

    axis.text.x = element_text(angle = 65, hjust = 1),

    legend.position="none"

  )



p + geom_line(aes(x=id, y=ma5), color="orange", size=.5)+

    geom_line(aes(x=id, y=ma10), color="purple", size=.5)+

geom_line(aes(x=id, y=ma20), color="blue", size=.5)




Tushare账号和token获取


Tushare Pro数据虽然免费,但需要注册一个账号,通过登录Pro网站可以获取免费token,之后就可以像以上介绍的方式获取数据了。


账号的具体获取方式,请参阅之前的公众号文章《开启Pro体验的正确打开方式》,或直接点击“阅读原文”注册帐号,由于没有绑定pro网站,在进入网站注册之前,请在微信里点“访问原网页”,页面效果会更好一些。



更多文章和数据及经验分享,请关注“挖地兔”公众号。



其他参考阅读:

利用Matlab获取免费金融数据

通过http调取Tushare数据

你想要的区块链数据接口都在这里

Tushare金融大数据开放社区发布




今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/bOM9hrijDA
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25992
 
808 次点击