【问题标题】:Calling a list of tickers in quantmod using R使用 R 在 quantmod 中调用代码列表
【发布时间】:2014-11-09 23:04:26
【问题描述】:

我想使用 quantmod 从中国股票列表中获取一些数据。

列表如下:

002705.SZ -- 002730.SZ(在这个序列中,有一些股票与空股票匹配,例如,没有股票叫002720.SZ)

300357.SZ -- 300402.SZ
603188.SS
603609.SS
603288.SS
603306.SS
603369.SS

我想编写一个循环来运行所有这些股票,以从每只股票中获取数据并将它们保存到一个数据帧中。

【问题讨论】:

    标签: r symbols quantmod stock


    【解决方案1】:

    这应该让你开始。

    library(quantmod)
    library(stringr)   # for str_pad
    stocks <- paste(str_pad(2705:2730,width=6,side="left",pad="0"),"SZ",sep=".")
    get.stock <- function(s) {
      s <- try(Cl(getSymbols(s,auto.assign=FALSE)),silent=T)
      if (class(s)=="xts") return(s)
      return (NULL)
    }
    result <- do.call(cbind,lapply(stocks,get.stock))
    head(result)
    #            X002705.SZ.Close X002706.SZ.Close X002707.SZ.Close X002708.SZ.Close X002709.SZ.Close X002711.SZ.Close X002712.SZ.Close X002713.SZ.Close
    # 2014-01-21            15.25            27.79               NA            17.26               NA               NA               NA               NA
    # 2014-01-22            14.28            28.41               NA            16.56               NA               NA               NA               NA
    # 2014-01-23            13.65            27.78            33.62            15.95            19.83               NA            36.58               NA
    # 2014-01-24            15.02            30.56            36.98            17.55            21.81               NA            40.24               NA
    # 2014-01-27            14.43            31.26            40.68            18.70            23.99            26.34            44.26               NA
    # 2014-01-28            14.18            30.01            44.75            17.66            25.57            28.97            48.69               NA
    

    这利用了getSymbols(...) 会返回xts 对象或在获取失败时返回带有错误消息的字符串这一事实。

    注意cbind(...)xts 对象根据索引对齐,所以它的行为类似于merge(...)

    这会产生一个xts 对象,而不是一个数据框。要将其转换为 data.frame,请使用:

    result.df <- data.frame(date=index(result),result)
    

    【讨论】:

    • 谢谢,你能在你的代码中完成这部分 s$signal[x] 吗?
    • str_pad 的替代品是 stocks &lt;- sprintf("%06d.SZ",2705:2730)
    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2018-10-24
    • 2014-10-22
    • 2017-04-21
    相关资源
    最近更新 更多