[R-SIG-Finance] quantstrat
Stephen Choularton
stephen at organicfoodmarkets.com.au
Sat Jan 8 22:54:47 CET 2011
Hi
I'm trying to money the bbands demo to by it on the S&P/ ASX 200.
I think the Symbol is ^AXJO and I can get the info I want using it.
I have amended the code as follows:
# bbands
require(quantstrat)
try(rm("order_book.bbands",pos=.strategy),silent=TRUE)
try(rm("account.bbands","portfolio.bbands",pos=.blotter),silent=TRUE)
try(rm("account.st","portfolio.st","stock.str","stratBBands","initDate","initEq",'start_t','end_t'),silent=TRUE)
# some things to set up here
stock.str='^AXJO' # what are we trying it on
# we'll pass these
SD = 2 # how many standard deviations, traditionally 2
N = 20 # how many periods for the moving average, traditionally 20
currency('AUD')
stock(stock.str,currency='AUD',multiplier=1)
initDate='2006-12-31'
initEq=1000000
portfolio.st='bbands'
account.st='bbands'
initPortf(portfolio.st,symbols=stock.str, initDate=initDate)
initAcct(account.st,portfolios='bbands', initDate=initDate)
initOrders(portfolio=portfolio.st,initDate=initDate)
stratBBands <- strategy("bbands")
#one indicator
stratBBands <- add.indicator(strategy = stratBBands, name = "BBands",
arguments = list(HLC = quote(HLC(mktdata)), maType='SMA'))
#add signals:
stratBBands <- add.signal(stratBBands,name="sigCrossover",arguments =
list(columns=c("Close","up"),relationship="gt"),label="Cl.gt.UpperBand")
stratBBands <- add.signal(stratBBands,name="sigCrossover",arguments =
list(columns=c("Close","dn"),relationship="lt"),label="Cl.lt.LowerBand")
stratBBands <- add.signal(stratBBands,name="sigCrossover",arguments =
list(columns=c("High","Low","mavg"),relationship="op"),label="Cross.Mid")
# lets add some rules
stratBBands <- add.rule(stratBBands,name='ruleSignal', arguments =
list(sigcol="Cl.gt.UpperBand",sigval=TRUE, orderqty=-100,
ordertype='market', orderside=NULL, threshold=NULL),type='enter')
stratBBands <- add.rule(stratBBands,name='ruleSignal', arguments =
list(sigcol="Cl.lt.LowerBand",sigval=TRUE, orderqty= 100,
ordertype='market', orderside=NULL, threshold=NULL),type='enter')
stratBBands <- add.rule(stratBBands,name='ruleSignal', arguments =
list(sigcol="Cross.Mid",sigval=TRUE, orderqty= 'all',
ordertype='market', orderside=NULL, threshold=NULL),type='exit')
#alternately, to exit at the opposite band, the rules would be...
#stratBBands <- add.rule(stratBBands,name='ruleSignal', arguments =
list(data=quote(mktdata),sigcol="Lo.gt.UpperBand",sigval=TRUE, orderqty=
'all', ordertype='market', orderside=NULL, threshold=NULL),type='exit')
#stratBBands <- add.rule(stratBBands,name='ruleSignal', arguments =
list(data=quote(mktdata),sigcol="Hi.lt.LowerBand",sigval=TRUE, orderqty=
'all', ordertype='market', orderside=NULL, threshold=NULL),type='exit')
#TODO add thresholds and stop-entry and stop-exit handling to test
getSymbols(stock.str,from=initDate)
start_t<-Sys.time()
out<-try(applyStrategy(strategy=stratBBands ,
portfolios='bbands',mktdata='AXJO',
parameters=list(sd=SD,n=N),verbose=TRUE) )
# look at the order book
#getOrderBook('bbands')
end_t<-Sys.time()
print("strat execution time:")
print(end_t-start_t)
Time difference of 32.271 secs
start_t<-Sys.time()
updatePortf(Portfolio='bbands',Dates=paste('::',as.Date(Sys.time()),sep=''))
end_t<-Sys.time()
print("updatePortf execution time:")
print(end_t-start_t)
chart.Posn(Portfolio='bbands',Symbol=stock.str)
plot(add_BBands(on=1,sd=SD,n=N))
###############################################################################
# R (http://r-project.org/) Quantitative Strategy Model Framework
#
# Copyright (c) 2009-2010
# Peter Carl, Dirk Eddelbuettel, Brian G. Peterson, Jeffrey Ryan, and
Joshua Ulrich
#
# This library is distributed under the terms of the GNU Public
License (GPL)
# for full details see the file COPYING
#
# $Id: bbands.R 374 2010-08-17 18:43:35Z braverock $
#
###############################################################################
I get my prices with thus
> getSymbols(stock.str,from=initDate)
[1] "AXJO"
but note the hat has been dropped!
and just afterwards I get thIs:
rategy=stratBBands , portfolios='bbands',
parameters=list(sd=SD,n=N),verbose=TRUE) )
Error in get(symbol) : object '^AXJO' not found
I've looked at the notes for applyStrategy and I've tried specifically
referring to AXJO like this:
>
> out<-try(applyStrategy(strategy=stratBBands ,
portfolios='bbands',mktdata='AXJO',
parameters=list(sd=SD,n=N),verbose=TRUE) )
Error in get(symbol) : object '^AXJO' not found
but I still get the message.
Can anyone advise me how to resolve this?
--
Stephen Choularton Ph.D., FIoD
More information about the R-SIG-Finance
mailing list