Quantstrat中的奇怪問題。 我正在嘗試將標準TTR函數的add.indicator添加到某些數據的最高位。 的代碼片段如下:Quantstrat add.indicator x = quote(Hi(mktdata))莫名其妙地無法識別列
add.indicator(strategy.st,name="runMax",
arguments = list (x=quote(Cl(mktdata)),n=entry_period),
label = "Max55")
這一工程,但下面
add.indicator(strategy.st,name="runMax",
arguments = list (x=quote(Hi(mktdata)),n=entry_period),
label = "Max55")
沒有。 我試圖
(X =報價(CL(mktdata))
(X =報價(VO(mktdata))
(OP(mktdata))
所有工作 而
(X =報價(高(mktdata))
(X =報價(LO(mktdata))
哪些沒有。 有什麼想法? 這些數據是對Google的標準調用並保存爲Rdata。
的錯誤如下:
Error in (function (x, n = 10, cumulative = FALSE) :
ncol(x) > 1. runMax only supports univariate 'x'
好奇,因爲它與關閉數據工作。
的完整代碼:
require(quantstrat)
require(PerformanceAnalytics)
initDate = "1990-01-01"
from = "2007-01-01"
to = "2012-12-31"
options(width =70) # set the output width
currency('USD')
Sys.setenv(TZ ="UTC")
require(quantmod)
symbols = c("MSFT")
load("~/R_backtrade_test/MSFT.Rdata")
stock(symbols,currency='USD',multiplier = 1)
tradeSize <- 100000
initEq <- tradeSize*length(symbols)
strategy.st <- portfolio.st <- account.st <- "turtles"
rm.strat(strategy.st)
initPortf(portfolio.st,symbols = symbols,initDate = initDate,currency = 'USD')
initAcct(account.st,portfolios = portfolio.st,initDate = initDate,currency = 'USD',initEq = initEq)
initOrders(portfolio.st,initDate = initDate)
strategy(strategy.st,store = TRUE)
strat <- getStrategy(strategy.st)
ATRperiod = 20
entry_period = 55
exit_period = 20
add.indicator(strategy.st,name="ATR",
arguments = list(HLC=quote(HLC(mktdata)),n=ATRperiod),
label = "ATR20")
add.indicator(strategy.st,name="runMax",
arguments = list (x=quote(Hi(mktdata)),n=entry_period),label = "Max55")
test <- applyIndicators(strategy.st,mktdata= MSFT)
head(test,60)