2017-06-29 10 views
3

私はGuy Yollinの講義で次のコードを使用しました。私が得た結果は正しくありませんでした。結果はコードの下に掲載されます。R - Quantstrat - バックテストがうまくいきません

library(blotter) 
library(quantstrat) 

currency("USD") 
stock("SPY", currency = "USD", multiplier = 1) 

initDate = "1997-12-31" 
startDate = "1998-01-01" 
endDate = "2014-06-30" 
initEQ = 1e6 

Sys.setenv(TZ = "UTC") 

getSymbols('SPY', from = startDate, to = endDate, index.class = "POSIXct", adjust = T) 

SPY = to.monthly(SPY, indexAt = "endof", drop.time = FALSE) 
SPY$SMA10m <- SMA(Cl(SPY),10) 

qs.strategy <- "qsFaber" 

initPortf(qs.strategy, "SPY", initDate = initDate) 
initAcct(qs.strategy, portfolios = qs.strategy, initDate = initDate, initEq = initEQ) 
initOrders(portfolio = qs.strategy, initDate = initDate) 

strategy(qs.strategy, store = TRUE) 

strat <- getStrategy(qs.strategy) 

add.indicator(
    strategy = qs.strategy, 
    name = "SMA", 
    arguments = list(
    x = quote(Cl(mktdata)), 
    n = 10), 
    label = "SMA10" 
) 

add.signal(
    qs.strategy, 
    name = "sigCrossover", 
    arguments = list (
    columns = c("Close", "SMA10"), 
    relationship = "gt"), 
    label = "Cl.gt.SMA" 
) 

add.signal (
    qs.strategy, 
    name = "sigCrossover", 
    arguments = list(
    columns = c("Close", "SMA10"), 
    relationship = "lt"), 
    label = "Cl.lt.SMA" 
) 

add.rule(
    qs.strategy, 
    name = "ruleSignal", 
    arguments = list(
    sicol = "Cl.gt.SMA", 
    sigval = TRUE, 
    orderqty = 900, 
    ordertype = "market", 
    orderside = "long"), 
    type = "enter" 
) 

add.rule(
    qs.strategy, 
    name = "ruleSignal", 
    arguments = list(
    sicol = "Cl.lt.SMA", 
    sigval = TRUE, 
    orderqty = "all", 
    ordertype = "market", 
    orderside = "long"), 
    type = "exit" 
) 

applyStrategy(strategy = qs.strategy, portfolios = qs.strategy) 

getTxns(Portfolio = qs.strategy, "SPY") 

getTxns(ポートフォリオ= qs.strategy、 "SPY")

Txn.Qty Txn.Price Txn.Fees Txn.Value Txn.Avg.Cost Net.Txn。 Realized.PL 1997年12月31日

0   0  0   0   0     0 

私は、任意のフィードバックや回答をいただければ幸いです!前もって感謝します!

+0

は同じ問題のようです:))ここで、 'x = quote(Cl(mktdata))'を見てください。 'x = quote(C1(SPY))' – AK88

+0

私はばかです!私はsigcolの代わりにsicolを書いた。それはなぜエラー! – blackknight316

答えて

1

70のようにチェックしてください。sicolではなくsigcolを読み取る必要があります。

+0

ハハ、それは起こる。あなたはそれの2つの出現を持っています、btw。 – AK88

関連する問題