我正在通过quantmod
-getQuote()
来找到解决我遇到的问题(link)的解决方案。
当我运行以下内容时;
metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding"))
symbols2 <- c("GOOG", "MSFT")
stats <- getQuote(symbols2, what = metrics)
我能够在GOOG
和MSFT
上获得一些雅虎财务统计信息。但是,当我将符号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()
函数中找到要更改的内容。
答案 0 :(得分:2)
问题不在于股票代号中的点。您实际上在函数中发现了一个错误。
如果运行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包进行更改。我在github上打开了issue。
目前的解决方法是在每次交换时运行您的代码,而不是一次性运行大量的代码。
编辑:添加了github问题。
答案 1 :(得分:1)
我可能是错的,但我认为该错误是由于您有纳斯达克的2个柜台,而香港交易所只有1个柜台(例如“参数暗示行数不同”错误)。
当我尝试从纳斯达克(NASDAQ)获取两个柜台的财务信息并从香港交易所(HK Exchange)获取两个计数器的财务信息时,问题得到解决:
metrics <- yahooQF(c("Name", "Volume", "P/E Ratio", "Dividend Yield", "Shares Outstanding"))
symbols2 <- c("GOOG", "MSFT", "0005.HK", "3888.HK")
stats <- getQuote(symbols2, what = metrics)
Warning message:
In getQuote.yahoo(Symbols = c("GOOG", "MSFT", "0005.HK", "3888.HK" :
symbols have different timezones; converting to local time
stats
Trade Time Name Volume P/E Ratio Dividend Yield Shares Outstanding
GOOG 2018-09-20 04:00:01 Alphabet Inc. 1077192 50.576115 NA 349883008
MSFT 2018-09-20 04:00:01 Microsoft Corporation 18559784 52.441310 0.014839678 7668219904
0005.HK 2018-09-20 16:08:17 HSBC HOLDINGS 15168181 18.303152 0.007505519 19422699520
3888.HK 2018-09-20 16:08:17 KINGSOFT 5549058 4.991025 0.000952381 1365229952
另一种选择是您可以通过交换获取财务信息;您不必同时从所有您感兴趣的交易所中获得所有计数器。意思是,您可以执行以下操作:
US_symbols <- c("GOOG", "MSFT")
HK_symbols <- c("0005.HK", "3888.HK")
US_stats <- getQuote(US_symbols, what = metrics)
HK_stats <- getQuote(HK_symbols, what = metrics)
US_stats
Trade Time Name Volume P/E Ratio Dividend Yield Shares Outstanding
GOOG 2018-09-20 09:39:47 Alphabet Inc. 91776 50.93889 NA 349883008
MSFT 2018-09-20 09:40:07 Microsoft Corporation 1956869 52.62911 0.01504029 7668219904
HK_stats
Trade Time Name Volume P/E Ratio Dividend Yield Shares Outstanding
0005.HK 2018-09-20 16:08:17 HSBC HOLDINGS 15168181 18.303152 0.007505519 19422699520
3888.HK 2018-09-20 16:08:17 KINGSOFT 5549058 4.991025 0.000952381 1365229952