我有日期和價格作爲一個數據幀:Quantmod的getSymbol有什麼副作用?
>df
Price Date
1.25 2012-01-05
...
我創建一個貨幣和股票:
currency("USD")
stock("GSPC", "USD")
我然後創建一個XTS對象:
GSPC <- xts(df$Price, df$Date)
colnames(GSPC) <- "Close"
的打算使用的是創建一個吸墨紙組合 - 這是有效的。但是,當我嘗試
updatePortf(portfolio, Symbols="GSPC", Dates = current.date)
我得到以下錯誤:
Error in get(Symbol, pos = env) : object 'GSPC' not found
GSPC不「showSymbols()」顯示出來,所以我認爲它需要的地方註冊。有什麼方法可以註冊符號嗎?
一個非常哈克解決方法,由另一計算器答案的啓發是:
GSPC$GSPC.High <- GSPC$Open
GSPC$GSPC.Low <- GSPC$Open
GSPC$GSPC.Close <- GSPC$Open
GSPC$GSPC.Volume <- GSPC$Open
GSPC$GSPC.Adjusted <- GSPC$Open
write.zoo(GSPC, file="GSPC.csv", sep=",")
setSymbolLookup(GSPC=list(src="csv",format="%Y-%m-%d"))
getSymbols("GSPC")
有沒有更好的方式來創建上面?我沒有(需要)音量,高,低,關閉和調整 - 我仍然需要他們的吸墨紙?
UPDATE 我設法重現了這個問題,然後明白了它的原因。看起來你不能在本地函數環境中聲明xts對象。這是一個可重複腳本:
library(xts)
library(FinancialInstrument)
library(blotter)
library(lubridate)
rm(list=ls(envir=.blotter),envir=.blotter)
runme <- function() {
currency("USD")
stock("GSPC", "USD")
dates <-ymd("2012-03-02") + seq(0,9) * ddays(1)
prices <- abs(rnorm(10))
GSPC <- xts(prices, dates)
colnames(GSPC) <- "Close"
# Initialise
initPortf("p", symbols="GSPC", initDate=ymd("2012-01-01"), currency="USD")
initAcct("a", portfolios="p", initDate=ymd("2012-01-01"), initEq=2e6, currency="USD")
trade.date <- ymd("2012-03-04")
addTxn("p", "GSPC", trade.date, 1, GSPC[trade.date])
updatePortf("p", Symbols="GSPC", Dates = trade.date)
updateAcct("a", Dates = trade.date)
updateEndEq("a", Dates = trade.date)
chart.Posn("p")
}
什麼是'portfolio'?什麼是'current.date'?什麼是你得到的**精確**錯誤信息?如果您需要使其具有可重現性的幫助,請參閱http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – GSee 2012-08-09 14:20:39
感謝您添加可重複的代碼! :-) – GSee 2012-08-09 19:21:31