[R] No transactions/positions to chart in Quantstrat

David Winsemius dw|n@em|u@ @end|ng |rom comc@@t@net
Sun Jul 15 04:23:18 CEST 2018


> On Jul 14, 2018, at 10:41 AM, Pietro Fabbro via R-help <r-help using 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 using 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




More information about the R-help mailing list