是否有更好的方法使用R'检索准确的每周和每月股价数据;s';quantmod';?
我曾尝试使用BatchGetSymbols检索多个股票报价器的每周和每月价格数据(ohlc)的价格数据,但每周和每月函数无法返回正确的数据。使用“batchgetsymbols”“freq.data=“weekly”参数时,每周价格从周三开始,这对于每周价格数据是不正确的。每周ohlc数据应在每周末(周一至周五)开始 我发现最接近于检索正确的周/月数据的方法是使用带有“quantmod”的“getsymbols”函数,但目前仅限于搜索单个股票代码。是否有人能够帮助我更改此脚本以搜索和检索多个股票代码的周ohlc数据?例如:是否有更好的方法使用R'检索准确的每周和每月股价数据;s';quantmod';?,r,quantmod,yahoo-finance,R,Quantmod,Yahoo Finance,我曾尝试使用BatchGetSymbols检索多个股票报价器的每周和每月价格数据(ohlc)的价格数据,但每周和每月函数无法返回正确的数据。使用“batchgetsymbols”“freq.data=“weekly”参数时,每周价格从周三开始,这对于每周价格数据是不正确的。每周ohlc数据应在每周末(周一至周五)开始 我发现最接近于检索正确的周/月数据的方法是使用带有“quantmod”的“getsymbols”函数,但目前仅限于搜索单个股票代码。是否有人能够帮助我更改此脚本以搜索和检索多个股票
> library(quantmod)
stock_list <- c("FB", "AAPL", "GOOG","BA","DAL","TSLA")
start_date <- Sys.Date()-14
end_date <- Sys.Date()
master_df <- NULL
for (idx in seq(length(stock_list))){
idx = 1
stock_index = stock_list[idx]
getSymbols(stock_index, verbose = TRUE, src = "yahoo",
from=start_date,to=end_date)
temp_df = as.data.frame(to.weekly(get(stock_index))) # weekly data
temp_df$Date = row.names(temp_df)
temp_df$Index = stock_index
row.names(temp_df) = NULL
colnames(temp_df) = c("Open", "High", "Low", "Close",
"Volume", "Adjusted", "Date", "Index")
temp_df = temp_df[c("Date", "Index", "Open", "High",
"Low", "Close", "Volume", "Adjusted")]
master_df = rbind(master_df, temp_df)
}
>库(quantmod)
一种快速的方法是使用tidyquant。
在getSymbols
中有一个每周和每月选项,在使用tq\u get
时会调用该选项。不要注意TIBLE打印到屏幕上的方式,只需在RStudio查看器中检查数据即可
library(tidyquant)
library(dplyr)
stock_list <- c("FB", "AAPL", "GOOG","BA","DAL","TSLA")
start_date <- Sys.Date()-14
end_date <- Sys.Date()
stocks_weekly <- tq_get(stock_list, from = start_date, to = end_date, periodicity = "weekly")
stocks_weekly
# A tibble: 12 x 8
symbol date open high low close volume adjusted
<chr> <date> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 FB 2020-11-02 265. 297. 257. 293. 118206600 293.
2 FB 2020-11-09 290. 293. 264 277. 92433100 277.
3 AAPL 2020-11-02 109. 120. 107. 119. 609571800 118.
4 AAPL 2020-11-09 120. 122. 114. 119. 589577900 119.
5 GOOG 2020-11-02 1628. 1794. 1616. 1762. 11494700 1762.
6 GOOG 2020-11-09 1791. 1818. 1717. 1777. 8915800 1777.
7 BA 2020-11-02 146. 158. 143. 158. 58773000 158.
8 BA 2020-11-09 179 194. 172. 187. 165339400 187.
9 DAL 2020-11-02 30.6 32.3 29.7 31.4 65773500 31.4
10 DAL 2020-11-09 37.4 38.7 34.0 36.5 150014900 36.5
11 TSLA 2020-11-02 394 440 392. 430. 145636400 430.
12 TSLA 2020-11-09 440. 452. 396. 408. 122101100 408.
更新2
对github版本的BatchGetSymbols
进行更新后,每周的数字正确无误(请注意,日期将是一周的第一天(星期一))。您可以安装github版本的等待,直到cran上有更新可用
stocks_week <- BatchGetSymbols(stock_list,
first.date = start_date,
last.date = end_date,
freq.data = "weekly",
how.to.aggregate = 'last')
stocks\u week感谢您的帮助。这确实回答了我上面的问题,尽管我在输入超过10只股票时无法执行此脚本。是否有方法在1000个股票中运行此脚本而不收到错误?@Ronhamilton,请参阅答案中的更新。您可能遇到yahoo下载问题。BatchGetSymbols
有一些问题避免这种情况的内部选项。非常感谢@phiver这很好。尽管我正在与一位非常了解batchgetsymbols的人交谈,但是否可以检索季度月度价格数据?3个月或季度OHLC数据将是另一个很好的功能。如果您希望我问一个新问题,我会这样做。
stocks_week <- BatchGetSymbols(stock_list,
first.date = start_date,
last.date = end_date,
freq.data = "weekly",
how.to.aggregate = 'last')