楼主: 无恤
3332 2

[程序分享] 用R语言获取tushare.pro金融数据 [推广有奖]

  • 4关注
  • 0粉丝

高中生

80%

还不是VIP/贵宾

-

威望
0
论坛币
681 个
通用积分
0.1014
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
104 点
帖子
13
精华
0
在线时间
49 小时
注册时间
2011-11-5
最后登录
2025-12-8

楼主
无恤 在职认证  发表于 2019-4-12 15:14:07 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

tushare的团队已经封装了R接口:通过R语言调取tushare数据

但我在我的R环境中没能安装上,索兴自己照猫画虎写了一个:

query <- function(api_name, token, params = list(), ts_api = "http://api.tushare.pro/"){        post_data <- list(api_name = api_name,                      token = token,                      params = params)        r <- httr::POST(ts_api, body = post_data, encode = 'json') # post json        content <- httr::content(r, "parsed", "application/json")         code <- content[['code']]                if (code == 0){ # retrieve data successfully when code equals 0        with(content[['data']], {            # combine 'items' with 'fields' to create a data.frame            df <- data.table::rbindlist(items)            if(length(df) > 0){                 names(df) <- unlist(fields)            } else { # create an empty data.frame when no items                df <- data.frame(matrix(ncol = length(fields), nrow = 0))                names(df) <- fields            }            list(code=code, data=df)})    } else{ # failed to retrieve data        list(code=code, msg=content[['msg']])    }}

以上代码是用httr访问tushare的restful通用接口,获取并组织数据为数据框。接着是简单封装的获取股票基信息的函数:

stock_basic <- function(token=token) {    query(api_name = "stock_basic", token = token)    }

获取日股票日交易数据的函数:

daily <- function(token=token, ts_code=NULL, trade_date=NULL, start_date=NULL, end_date=NULL) {    params <- list(ts_code=ts_code,                    trade_date=trade_date,                    start_date=start_date,                    end_date=end_date)    query(api_name = "daily",           token = token,          params = params)}

用例:

token <- 'XXXXXXXX'# 获取所有股票的日k数据res1 <- daily(token = token, trade_date = "20190103")df1 <- res1[['data']]# 获取一支股票一个时间段的日k数据res2 <- daily(token = token, ts_code = '600000.SH')df2 <- res2[['data']]# 获取股票的基本信息res3 <- stock_basic(token=token)df3 <- res3[['data']]

httr用起来非常方便,tushare.pro的接口亦不遑多让,十分感谢tushare的Jimmy老师及团队,为我们提供这么好的数据,这么优雅的接口。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:环境中

已有 1 人评分论坛币 收起 理由
cheetahfly + 30 热心帮助其他会员

总评分: 论坛币 + 30   查看全部评分

沙发
无恤 在职认证  发表于 2019-4-12 15:16:02
好乱,如何重新编辑排版?

藤椅
cheetahfly 在职认证  发表于 2019-4-12 18:37:01
感谢分享

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 01:11