0

applyIndi​​cators 関数で quantstrat を学習しようとして、興味深いエラーが発生しました。同じ期間の同じデータに、lagATR、RSI、SMA の 3 つのインジケーターを適用しました。applyIndi​​cators 関数を使用すると、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)

4

1 に答える 1