【发布时间】:2017-05-13 15:48:49
【问题描述】:
我正在使用 quantstart,但由于某种原因,applyStrategy 函数没有输出任何信息。它只是通过。结果,当我执行tradeStats 函数时,我得到了null。这是我使用的代码:谢谢!
library(quantstrat)
library(quantmod)
initDate = "1999-01-01"
from = "2003-01-01"
to = "2015-12-31"
Sys.setenv (TZ = "UTC")
currency ("USD")
getSymbols ("SPY", from = from,
to = to, src = "yahoo",
adjust = TRUE)
tradesize <- 100000
initeq <- 100000
strategy.st <- portfolio.st <- account.st <- "firststrat"
rm.strat(strategy.st)
initPortf(portfolio.st,
symbols = "SPY",
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)
add.indicator(strategy = strategy.st,
name = "SMA",
arguments = list(x = quote(Cl(mktdata)), n = 200),
label = "SMA200")
add.indicator(strategy = strategy.st,
name = "SMA",
arguments = list(x = quote(Cl(mktdata)), n = 50),
label = "SMA50")
test4 <- applyIndicators(strategy = strategy.st, mktdata)
add.signal(strategy.st,
name = "sigCrossover",
arguments = list(columns = c("SMA50", "SMA200"),
relationship = "gt"),
label = "longfilter")
add.signal(strategy.st,
name = "sigComparison",
arguments = list(columns = c("SMA50", "SMA200"),
relationship = "lt" ),
label = "filterexit")
test4 <- applySignals(strategy.st, mktdata)
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "filterexit", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "long", replace = FALSE,
prefer = "Open"),
type = "exit")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longfilter", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "long", replace = FALSE,
prefer = "Open"),
type = "enter")
applyStrategy(strategy.st, portfolio.st)
updatePortf(portfolio.st)
daterange <- time(getPortfolio(portfolio.st)$summary)[-1]
updateAcct(account.st, daterange)
updateEndEq(account.st)
tradeStats(Portfolios = portfolio.st)
```
【问题讨论】:
标签: r quantstrat