Hello.
I get the error message that there are no transactions/positions to chart
despite the signals and rules that I inserted.
Can someone please help?
rm(list = ls(.blotter), envir = .blotter)
initdate <- "2010-01-01"
from <- "2012-01-01" #start of backtest
to <- "2017-31-12" #end of backtest
Sys.setenv(TZ= "EST") #Set up environment for timestamps
currency("USD") #Set up environment for currency to be used
symbols <- c("RUT") #symbols used in our backtest
getSymbols("^RUT",src="yahoo", from="2012-01-01",
to="2017-12-31", periodicity="daily")
stock(symbols, currency = "USD", multiplier = 1) #tells quanstrat what
instruments present and what currency to use
n <- 30
wma <- WMA(Cl(RUT), n=4, wts=c(1:4))
wmamaxt <- rollmaxr(wma, n, fill = NA)
wmamint <- - rollmaxr(- wma, n, fill = NA)
CNOwma <- function (RUT) {(wma - wmamint) / (wmamaxt - wmamint)}
tradesize <-10000 #default trade size
initeq <- 100000 #default initial equity in our portfolio
strategy.st <- portfolio.st <- account.st <- "firststrat"
#naming strategy, portfolio and account
#removes old portfolio and strategy from environment
rm.strat(portfolio.st)
rm.strat(strategy.st)
#initialize portfolio, account, orders and strategy objects
initPortf(portfolio.st, symbols = symbols, 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 = 'CNOwma',
arguments = list(x = quote(Cl(mktdata)), n=4),
label = 'CNOwma4')
add.signal(strategy.st, name = "sigThreshold",
arguments = list(column = "CNOwma4", threshold = 0.6,
relationship = "gt", cross = TRUE),
label = "longthreshold")
add.signal(strategy.st, name = "sigThreshold",
arguments = list(column = "CNOwma4", threshold = 0.6,
relationship = "lt", cross = TRUE),
label = "shortthreshold")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longthreshold", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "long", replace = FALSE,
prefer = "Open"), osFUN = IKTrading::osMaxDollar,
tradeSize = tradesize, maxSize = tradesize, type = "enter")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "shortthreshold", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "long", replace = FALSE,
prefer = "Open"),
type = "exit")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "shortthreshold", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "short", replace = FALSE,
prefer = "Open"),osFUN = IKTrading::osMaxDollar,
tradeSize = tradesize, maxSize = tradesize, type = "enter")
add.rule(strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longthreshold", sigval = TRUE,
orderqty = "all", ordertype = "market",
orderside = "short", replace = FALSE,
prefer = "Open"),
type = "exit")
out <- applyStrategy(strategy = strategy.st, portfolios = portfolio.st)
updatePortf(portfolio.st)
daterange <- time(getPortfolio(portfolio.st)$summary)[-1]
updateAcct(account.st, daterange)
updateEndEq(account.st)
for(symbol in symbols){
chart.Posn(Portfolio = portfolio.st, Symbol = symbol,
TA= c("add_SMA(n=50, col='blue')", "add_SMA(n=200,
col='red')"))
}
David Winsemius
2018-Jul-15 02:23 UTC
[R] No transactions/positions to chart in Quantstrat
> On Jul 14, 2018, at 10:41 AM, Pietro Fabbro via R-help <r-help at r-project.org> wrote: > > Hello. > I get the error message that there are no transactions/positions to chart despite the signals and rules that I inserted.This might or might not be on-topic for Rhelp. If there is a particular form for a strategy" that the unnamed packages with these function in them that you have misread, tehre might be a purely R answer to this. However, I think you should consider posting at the Quantitative Finance forum at stackexchange.com. -- David.> Can someone please help? > > rm(list = ls(.blotter), envir = .blotter) > initdate <- "2010-01-01" > from <- "2012-01-01" #start of backtest > to <- "2017-31-12" #end of backtest > > Sys.setenv(TZ= "EST") #Set up environment for timestamps > > currency("USD") #Set up environment for currency to be used > > symbols <- c("RUT") #symbols used in our backtest > getSymbols("^RUT",src="yahoo", from="2012-01-01", to="2017-12-31", periodicity="daily") > > stock(symbols, currency = "USD", multiplier = 1) #tells quanstrat what instruments present and what currency to use > > n <- 30 > > wma <- WMA(Cl(RUT), n=4, wts=c(1:4)) > wmamaxt <- rollmaxr(wma, n, fill = NA) > wmamint <- - rollmaxr(- wma, n, fill = NA) > CNOwma <- function (RUT) {(wma - wmamint) / (wmamaxt - wmamint)} > > tradesize <-10000 #default trade size > initeq <- 100000 #default initial equity in our portfolio > > strategy.st <- portfolio.st <- account.st <- "firststrat" #naming strategy, portfolio and account > > #removes old portfolio and strategy from environment > rm.strat(portfolio.st) > rm.strat(strategy.st) > > #initialize portfolio, account, orders and strategy objects > initPortf(portfolio.st, symbols = symbols, 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 = 'CNOwma', > arguments = list(x = quote(Cl(mktdata)), n=4), > label = 'CNOwma4') > > > > > > add.signal(strategy.st, name = "sigThreshold", > arguments = list(column = "CNOwma4", threshold = 0.6, > relationship = "gt", cross = TRUE), > label = "longthreshold") > > > add.signal(strategy.st, name = "sigThreshold", > arguments = list(column = "CNOwma4", threshold = 0.6, > relationship = "lt", cross = TRUE), > label = "shortthreshold") > > > > > add.rule(strategy.st, name = "ruleSignal", > arguments = list(sigcol = "longthreshold", sigval = TRUE, > orderqty = "all", ordertype = "market", > orderside = "long", replace = FALSE, > prefer = "Open"), osFUN = IKTrading::osMaxDollar, > tradeSize = tradesize, maxSize = tradesize, type = "enter") > > > add.rule(strategy.st, name = "ruleSignal", > arguments = list(sigcol = "shortthreshold", sigval = TRUE, > orderqty = "all", ordertype = "market", > orderside = "long", replace = FALSE, > prefer = "Open"), > type = "exit") > > add.rule(strategy.st, name = "ruleSignal", > arguments = list(sigcol = "shortthreshold", sigval = TRUE, > orderqty = "all", ordertype = "market", > orderside = "short", replace = FALSE, > prefer = "Open"),osFUN = IKTrading::osMaxDollar, > tradeSize = tradesize, maxSize = tradesize, type = "enter") > > add.rule(strategy.st, name = "ruleSignal", > arguments = list(sigcol = "longthreshold", sigval = TRUE, > orderqty = "all", ordertype = "market", > orderside = "short", replace = FALSE, > prefer = "Open"), > type = "exit") > > > > out <- applyStrategy(strategy = strategy.st, portfolios = portfolio.st) > updatePortf(portfolio.st) > daterange <- time(getPortfolio(portfolio.st)$summary)[-1] > > updateAcct(account.st, daterange) > updateEndEq(account.st) > > > for(symbol in symbols){ > > chart.Posn(Portfolio = portfolio.st, Symbol = symbol, > TA= c("add_SMA(n=50, col='blue')", "add_SMA(n=200, col='red')")) > } > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius Alameda, CA, USA 'Any technology distinguishable from magic is insufficiently advanced.' -Gehm's Corollary to Clarke's Third Law