2016-12-07 1 views
2

私は単純な戦略をテストしようとしています。 信号はView(mktdata)で正常に動作しているようですが、なんらかの理由で取引を実行していません。 洞察はありますか?Quantstrat:実行の問題をトレードします。

rm(list=ls(.blotter), envir=.blotter) 



rm.strat(strategy.st) 
strategy.st<-"firststrat" 
portfolio.st<-"firststrat" 
account.st<-"firststrat" 


#assignsymbol 
getSymbols("SPY",auto.assign=TRUE,adjust=TRUE) 

initdate<-"2009-01-01" 
from<-"2010-01-01" 
to<-"2016-11-01" 
Sys.setenv(TZ="UTC") 
currency("USD") 
stock("SPY",currency="USD",multiplier=1) 
tradesize<-10000 
inieq<-100000 

rm.strat(portfolio.st) 
initPortf(portfolio.st,symbols="SPY",initDate=initdate,currency='USD') 
initAcct(account.st,portfolios = portfolio.st,initDate = initdate,initEq = inieq,currency="USD") 
initOrders(portfolio = portfolio.st,initDate = initdate) 
strategy(strategy.st,store=TRUE) 



add.indicator(strategy = strategy.st,name="EMA",arguments=list(x=quote(Cl(mktdata)),n=50),label="EMA50") 
#if closing price goes over moving average 50 and TSi fference is less then 0.15, then long 
#short when closing price touches below original closing price by x(depends on atr? previous lows?) 


add.signal(strategy.st,name="sigCrossover", 
      arguments = list(columns=c("Close","EMA50"), 
          relationship="gt"), 
         label="crossentry"  
          ) 
add.signal(strategy.st,name="sigCrossover", 
      arguments = list(columns=c("Close","EMA50"), 
          relationship="lt"), 
      label="crossexit"  
) 


add.rule(strategy.st,name="ruleSignal", 
     arguments=list(sigcol = "crossentry", 
         sigval=TRUE, 
         orderqty="all", 
         ordertype="market", 
         orderside="long", 
         replace=FALSE, 
         prefer="Open", 
         path.dep=TRUE 
         ), 
     type="enter" 
     )   

add.rule(strategy.st,name="ruleSignal", 
     arguments=list(sigcol = "crossexit", 
         sigval=TRUE, 
         orderqty="all", 
         ordertype="market", 
         orderside="long", 
         replace=FALSE, 
         prefer="Open", 
         path.dep=TRUE 
     ), 
     type="exit" 
)   


out <- applyStrategy(strategy = strategy.st, portfolios = portfolio.st) 

View(mktdata) 

> out 
NULL 

答えて

2

あなたは(、終了のために使用することができない"all"、停止し、利益を取る)位置を入力する成行注文のための各取引の大きさを示すorderqty値を指定する必要があります。さもなければ、その戦略は、取引規模が実際にどのようにすべきかを知らない。

add.rule(strategy.st,name="ruleSignal", 
     arguments=list(sigcol = "crossentry", 
         sigval=TRUE, 
         orderqty= 100, # numeric qty value 
         ordertype="market", 
         orderside="long", 
         replace=FALSE, 
         prefer="Open", 
         path.dep=TRUE 
     ), 
     type="enter" 
)   
:あなたはこのようなあなたのエントリのルールを変更する場合

あなたのコードが実行する必要があります

関連する問題