심벌 "T"로 표시된 & T의 주식에 퀀트 스트랫의 예제를 실행하려고 할 때 문제가 있습니다. 나는 R이 어딘가에서 T가 TRUE를 언급하고 있다고 생각하기 때문에 그것이라고 믿습니다.재고 "T"가 TRUE를 참조하여 "mktdata [, 유지] : 잘못된 치수 수"오류가 발생 했습니까?
library(quantstrat)
ticker="T"
total_hist.start = as.Date("2006-06-22")
total_hist.end = as.Date("2008-06-20")
total_hist = total_hist.end - total_hist.start
currency("USD")
stock(ticker,currency="USD",multiplier=1)
getSymbols(ticker,from=total_hist.start,to=total_hist.end,to.assign=TRUE)
init.date = initDate=total_hist.start-1
strat.name<- "MyStrat"
port.name <- "MyPort"
acct.name <- "MyAcct"
TradeSize = 1000
initEq=as.numeric(TradeSize*max(Ad(get(ticker))))
port <- initPortf(port.name,ticker,initDate=init.date)
acct <- initAcct(acct.name,portfolios=port.name, initDate=init.date, initEq=initEq)
ords <- initOrders(portfolio=port.name,initDate=init.date)
strat<- strategy(strat.name)
strat<- add.indicator(strategy = strat, name = "SMA", arguments = list(x=quote(Ad(mktdata)), n=20),label= "ma20")
strat<- add.indicator(strategy = strat, name = "SMA", arguments = list(x=quote(Ad(mktdata)), n=50),label= "ma50")
strat<- add.signal(strat,name="sigCrossover",arguments =
list(columns=c("ma20","ma50"),relationship="gte"),label="ma20.gt.ma50")
strat<- add.signal(strat,name="sigCrossover",arguments =
list(column=c("ma20","ma50"),relationship="lt"),label="ma20.lt.ma50")
strat<- add.rule(strategy = strat,name='ruleSignal', arguments = list(sigcol="ma20.gt.ma50",sigval=TRUE,
orderqty=TradeSize, ordertype='market', orderside='long', pricemethod='market'),type='enter', path.dep=TRUE)
strat<- add.rule(strategy = strat,name='ruleSignal', arguments = list(sigcol="ma20.lt.ma50",sigval=TRUE, orderqty='all',
ordertype='market', orderside='long', pricemethod='market'),type='exit', path.dep=TRUE)
out<-try(applyStrategy(strategy=strat, portfolios=port.name))
지금이 오류 메시지가 얻을 : 여기 내 코드입니다
Error in mktdata[, keep] : nombre de dimensions incorrect
내가 상징이다 애질런트 테크놀로지스와 같은 다른 주식 "A"이다와 노력을하고이 오류를 내가 그렇게하지 않습니다 문제는 사실 T가 TRUE와 같다는 것을 확신합니다. 도와 주셔서 감사합니다!
? 또는 어떤 함수 호출에서 오류 메시지가 나타 납니까? 내 생각에'initEq = as.numeric (...) '에서'get (ticker)'이라고하는 호출이 있습니다.이 변수는''변수'T'의 값을 가져와 '사실'이라고합니다. 그러나 세부 정보가 없으면 진단하기가 어렵습니다. –
@ mathematical.coffee의 덧글에 추가하려면 :'mktdata' 무엇입니까? 표시하는 코드에는 정의되어 있지 않습니다. 대답은'ticker <-as.character (ticker)'처럼 간단 할 수도 있습니다 –
'F'(Ford)를 시세 변수에 전달할 때 똑같은 문제가 발생합니다. – Milktrader