r - quantmod - getQuote() 不适用于不同交易所的股票代码

标签 r quantmod

我正在通过 quantmod-getQuote() 来找到我遇到的问题的解决方案 (link) .

当我运行以下命令时;

metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding"))
symbols2 <- c("GOOG", "MSFT")
stats <- getQuote(symbols2, what = metrics)

我能够获得 GOOGMSFT 上的一些雅虎财经统计数据。但是,当我将符号 3888.HK 添加到列表中时,出现错误。

symbols2 <- c("GOOG", "MSFT", "3888.HK")
stats <- getQuote(symbols2, what = metrics)

错误消息:

Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE,  : 
  arguments imply differing number of rows: 2, 3
In addition: Warning message:
In getQuote.yahoo(Symbols = c("GOOG", "MSFT", "3888.HK"), what = list( :
  symbols have different timezones; converting to local time

有人知道解决这个问题的方法吗,我似乎找不到在 getQuote() 函数中需要更改的内容。

最佳答案

问题不在于股票名称中的点。您实际上发现了该函数中的一个错误。

如果运行getQuote("3888.HK", What = Metrics),您会得到结果:

                 Trade Time     Name  Volume P/E Ratio Dividend Yield Shares Outstanding
3888.HK 2018-09-20 16:08:17 KINGSOFT 5549058  4.991025    0.000952381         1365229952

问题是时区不同。如果每个时区的代码不相等,您将收到错误消息。

这有效:

symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK")
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK", "FAGR.BR", "AGFB.BR")

这不是

symbols2 <- c("GOOG", "MSFT", "FB", "0005.HK", "3888.HK")
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK", "FAGR.AB")

问题出在这部分函数:

 Qposix <- sapply(split(sq, sq$exchangeTimezoneName), convertTZ)

这将返回一个列表而不是时区向量。如果每个证券交易所的股票数量不相等,您将收到此错误。调整这个很简单,但需要更改 quantmod 包。我已经开通了issue在 github 上。

目前的解决方法是在每次交易所运行代码,而不是一次性运行一大堆代码。

编辑:添加了 github 问题。

关于r - quantmod - getQuote() 不适用于不同交易所的股票代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52425092/

相关文章:

r - 使用子集时添加图例

r - 在 r 中预测 3 个相关结果不起作用

r - Quantmod 振荡器

R lattice 使用 xyplot 正确标记点

r - 将每小时降雨量数据转换为特定时间间隔内的每日降雨量数据

r - 修改包功能

r - 使用 R 将 SpatialPoints 与 SpatialLines 匹配/连接

r - 使用 chartSeries 的 react 语句绘制多个符号

R quantmod chartSeries newTA chob - 修改图例和轴(主要和次要)

r - 访问 getSymbols 返回的奇名对象