私は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
私は、任意のフィードバックや回答をいただければ幸いです!前もって感謝します!
は同じ問題のようです:))ここで、 'x = quote(Cl(mktdata))'を見てください。 'x = quote(C1(SPY))' – AK88
私はばかです!私はsigcolの代わりにsicolを書いた。それはなぜエラー! – blackknight316