r - 如何遍历 R 中的股票/共同基金数据
问题描述
我可以使用 tidyquant/quantmod 在 R 中下载股票/共同基金数据;但是,我需要 3rd 方应用程序可以读取的格式。
下载格式如下:
日期 FSAIX.Open FSAIX.High FSAIX.Low FSAIX.Close FSAIX.Volume FSAIX.Adjusted
1985 年 12 月 16 日 10 10 10 10 0 1.995289
但是,我需要这种格式:
日期 开盘 高 低 收盘
1985 年 12 月 16 日 1.995289 1.995289 1.995289 1.995289
请注意,“FSAIX.Adjusted”成为当天的开盘价、最高价、最低价和收盘价。这很好,因为 FSAIX 是一个共同基金,每天只以一个价格“交易”。(对于那些好奇的人,“_______.调整后的”价格是指根据拆分、股息或分配调整的收盘价)
我已经能够“硬编码”R,一次给我一只股票/共同基金的数据。这是我的代码:
##################################
library(tidyquant)
library(data.table)
# symbol list to download
fid_symbol <- c("FSAIX","FSAVX")
# Download symbol's data from yahoo finance
getSymbols(fid_symbol,src = 'yahoo',from = "1970-01-01", to = "2020-07-22")
# Change XTS file into a data table for both formatting
## and easier to export with the date included
my_DT <- as.data.table(FSAIX)
# Make new columns in the data table
my_DT[,"Open":=FSAIX.Adjusted]
my_DT[,"High":=FSAIX.Adjusted]
my_DT[,"Low":=FSAIX.Adjusted]
my_DT[,"Close":=FSAIX.Adjusted]
# Delete old clumns in the data table
my_DT <- my_DT[,-c(2:7)]
#Change index column name to date
setnames(my_DT,old="index",new="Date")
# write file to working directory
fwrite(my_DT,file = "FSAIX.csv")
#################################
这确实为硬编码符号 - FSAIX 提供了所需的输出。是的我!,我一开始是这么想的。但是,当我尝试遍历一个列表,而不是示例中的 2 个共同基金(股票)符号时,问题就出现了。:-/ 在过去的 1.5 周里,我碰上了砖墙……
我最近尝试“复制”我在 quantstrattrader 网站上找到的一些代码,https: //quantstrattrader.wordpress.com/2018/09/17/principal-component-momentum/ 在我自己的多次尝试失败后,以及这段代码工作:
require(PerformanceAnalytics)
require(quantmod)
require(stats)
require(xts)
symbols <- c("SPY", "EFA", "EEM", "DBC", "HYG", "GLD", "IEF", "TLT")
# get free data from yahoo
rets <- list()
getSymbols(symbols, src = 'yahoo', from = '1990-12-31')
for(i in 1:length(symbols)) {
returns <- Return.calculate(Ad(get(symbols[i])))
colnames(returns) <- symbols[i]
rets[[i]] <- returns
}
rets <- na.omit(do.call(cbind, rets))
但是,当我尝试根据需要对其进行修改时,它不起作用。这是我的最新示例:
### Fidelity Funds Dowload Script...
library(tidyquant)
library(data.table)
# symbol list to download
fid_symbol <- c("FSAIX","FSAVX")
# Download symbol's data from yahoo finance
getSymbols(fid_symbol,src = 'yahoo',from = "1970-01-01", to = "2020-07-22")
# My 'loop' to get the symbols in fid_symbol
for (i in 1:length(fid_symbol) )
{
# make data table
my_DT<- as.data.table(fid_symbol[[i]])
# get symbol from fid_symbol
sym <- fid_symbol[[i]]
# make new columns and delete old
my_DT[,"Open":=sym.Adjusted]
my_DT[,"High":=sym.Adjusted]
my_DT[,"Low":=sym.Adjusted]
my_DT[,"Close":=sym.Adjusted]
my_DT <- my_DT[,-c(2:7)]
# Change index column name to date
setnames(my_DT,old="index",new="Date")
# write file to working directory
fwrite(my_DT,file = paste0(sym,'.csv'))
}
################################
这个最近的 failed_attempt_11.0 在运行时给出了以下错误:“ eval(jsub,SDenv,parent.frame())中的错误:找不到对象'sym.Adjusted'”
我还尝试将这种技术编写为函数并使用“应用”系列,但也失败了......
感谢您提前提供任何帮助或建议!干杯,克里斯
解决方案
推荐阅读
- node.js - 如何链接快速路由,以便 / 是子目录的主目录
- python-3.x - 已解决:尝试将线程与 GTK 和 Pycairo 一起使用时出现错误(绘制窗口并从另一个线程发出信号)
- python - 你能在我的函数调用中找到错误吗?
- jruby - Mirah 编程语言不能“Hello World”
- python - 合并排序未返回正确答案
- c++ - 'initwindow' 没有在代码中打开窗口:blocks c++
- c# - 如何在 C# 中将接口对象绑定到推文对象
- android - why onCleared in my viewModel is called when I close the fragment using navigation component?
- java - 如何使此代码重复多次
- python - 如何在 Python 的 re 库中搜索多个搜索参数