applyIndicators 関数で quantstrat を学習しようとして、興味深いエラーが発生しました。同じ期間の同じデータに、lagATR、RSI、SMA の 3 つのインジケーターを適用しました。applyIndicators 関数を使用すると、3 つのインジケーターすべてが一緒にエラーを生成します。指標のどのペアもそうではありません。コードは以下です。このコードは、主に 2 つのブログ エントリ (パート 1とパート 2 ) から取得したものです。コードは、いくつかの変数を初期化し、XLB の価格データを取得するように構成されています。次に、4 つのシナリオを実行します。3 つのインジケーターすべてと各ペアです。3 つの指標すべてでエラーが発生し、ペアではエラーが発生しない理由を理解していただければ幸いです。ありがとう。
#Part 1 from http://www.r-bloggers.com/nuts-and-bolts-of-quantstrat-part-i/
require(IKTrading)
require(quantstrat)
require(PerformanceAnalytics)
initDate="1990-01-01"
from="2003-01-01"
to="2012-12-31"
options(width=70)
currency('USD')
Sys.setenv(TZ="UTC")
options("getSymbols.warning4.0"=FALSE)
rm(list=ls(.blotter), envir=.blotter)
symbols <- "XLB" #SPDR Materials sector
getSymbols(symbols, from=from, to=to, src="yahoo", adjust=TRUE)
stock(symbols, currency="USD", multiplier=1)
#trade sizing and initial equity settings
tradeSize <- 100000
initEq <- tradeSize*length(symbols)
#Part 2 from http://www.r-bloggers.com/nuts-and-bolts-of-quantstrat-part-ii/
#parameters
pctATR <- .02
period <- 10
atrOrder <- TRUE
nRSI <- 2
buyThresh <- 20
sellThresh <- 80
nSMA <- 200
#FIRST RUN - TRY ALL 3 INDICATORS:
strategy.st <- portfolio.st <- account.st <- "DollarVsATRos"
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)
#indicators
add.indicator(strategy.st, name="lagATR",
arguments=list(HLC=quote(HLC(mktdata)), maType="SMA", n=period),
label="atrX")
add.indicator(strategy.st, name="RSI",
arguments=list(price=quote(Cl(mktdata)), maType="SMA", n=nRSI),
label="rsi")
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(Cl(mktdata)), n=nSMA),
label="sma")
test <- applyIndicators(strategy.st, mktdata=OHLC(XLB))
head(test,12)
#SECOND RUN - TRY lagATR and RSI INDICATORS:
strategy.st <- portfolio.st <- account.st <- "DollarVsATRos"
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)
#indicators
add.indicator(strategy.st, name="lagATR",
arguments=list(HLC=quote(HLC(mktdata)), maType="SMA", n=period),
label="atrX")
add.indicator(strategy.st, name="RSI",
arguments=list(price=quote(Cl(mktdata)), maType="SMA", n=nRSI),
label="rsi")
test <- applyIndicators(strategy.st, mktdata=OHLC(XLB))
head(test,12)
#THIRD RUN - TRY RSI and SMA INDICATORS:
strategy.st <- portfolio.st <- account.st <- "DollarVsATRos"
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)
#indicators
add.indicator(strategy.st, name="RSI",
arguments=list(price=quote(Cl(mktdata)), maType="SMA", n=nRSI),
label="rsi")
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(Cl(mktdata)), n=nSMA),
label="sma")
test <- applyIndicators(strategy.st, mktdata=OHLC(XLB))
head(test,12)
#FOURTH RUN - TRY lagATR and SMA INDICATORS:
strategy.st <- portfolio.st <- account.st <- "DollarVsATRos"
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)
#indicators
add.indicator(strategy.st, name="lagATR",
arguments=list(HLC=quote(HLC(mktdata)), maType="SMA", n=period),
label="atrX")
add.indicator(strategy.st, name="SMA",
arguments=list(x=quote(Cl(mktdata)), n=nSMA),
label="sma")
test <- applyIndicators(strategy.st, mktdata=OHLC(XLB))
head(test,12)