SCM Repository
[blotter] / pkg / quantstrat / demo / bee.R |
View of /pkg/quantstrat/demo/bee.R
Parent Directory
|
Revision Log
Revision 1724 -
(download)
(annotate)
Mon Dec 14 12:54:08 2015 UTC (3 years, 2 months ago) by bodanker
File size: 4934 byte(s)
Mon Dec 14 12:54:08 2015 UTC (3 years, 2 months ago) by bodanker
File size: 4934 byte(s)
Do not set initDate argument in demos Do not set initDate for initPortf, initAcct, or initOrders in any of the demos. Specifying the initDate argument incorrectly can cause errors that are difficult for users to diagnose, so we shouldn't provide demos that suggest users need to set initDate manually. Rename initDate to startDate in all demos in order to avoid confusion with initDate argument to initPortf, initAcct, and initOrders.
#!/usr/bin/Rscript --vanilla # # Bumblebee trading system # copyright (c) 2009-2012, Algorithm Alpha, LLC # Licensed GPL-2 # ##### PLACE DEMO DATES HERE ################# startDate="1999-12-31" ############################# DEFINE VARIABLES ############################## sym = 'GLD' port = 'bug' acct = 'colony' initEq = 100000 fast = 10 slow = 30 sd = 0.5 ############################# GET DATA ###################################### suppressMessages(require(quantstrat)) getSymbols(sym, from=startDate, index.class=c("POSIXt","POSIXct")) ############################# INITIALIZE #################################### currency('USD') stock(sym ,currency='USD', multiplier=1) initPortf(port, sym) initAcct(acct, port, initEq=initEq) initOrders(port) bee = strategy(port) ############################# MAX POSITION LOGIC ############################ addPosLimit( portfolio=port, symbol=sym, timestamp=startDate, maxpos=100) ############################# INDICATORS #################################### bee <- add.indicator( strategy = bee, name = 'BBands', arguments = list(HLC=quote(HLC(mktdata)), n=slow, sd=sd)) bee <- add.indicator( strategy = bee, name = 'SMA', arguments = list(x=quote(Cl(mktdata)), n=fast), label = 'fast' ) ############################# SIGNALS ####################################### bee <- add.signal( strategy = bee, name = 'sigCrossover', arguments = list(columns=c('fast','dn'), relationship='lt'), label = 'fast.lt.dn') bee <- add.signal( strategy = bee, name = 'sigCrossover', arguments = list(columns=c('fast','up'), relationship='gt'), label = 'fast.gt.up') ############################# RULES ######################################### bee <- add.rule( strategy = bee, name = 'ruleSignal', arguments = list(sigcol = 'fast.gt.up', sigval = TRUE, orderqty = 100, ordertype = 'market', orderside = 'long', osFUN = 'osMaxPos'), type = 'enter', label = 'EnterLONG') bee <- add.rule( strategy = bee, name = 'ruleSignal', arguments = list(sigcol = 'fast.lt.dn', sigval = TRUE, orderqty = 'all', ordertype = 'market', orderside = 'long'), type = 'exit', label = 'ExitLONG') bee <- add.rule( strategy = bee, name = 'ruleSignal', arguments = list(sigcol = 'fast.lt.dn', sigval = TRUE, orderqty = -100, ordertype = 'market', orderside = 'short', osFUN = 'osMaxPos'), type = 'enter', label = 'EnterSHORT') bee <- add.rule( strategy = bee, name = 'ruleSignal', arguments = list(sigcol = 'fast.gt.up', sigval = TRUE, orderqty = 'all', ordertype = 'market', orderside = 'short'), type = 'exit', label = 'ExitSHORT') ############################# APPLY STRATEGY ################################ applyStrategy(bee, port, prefer='Open', verbose=FALSE) ############################# UPDATE ######################################## updatePortf(port, sym, Date=paste('::',as.Date(Sys.time()),sep='')) updateAcct(acct) ########################### USEFUL CONTAINERS ############################# stratStats = tradeStats(port) stratReturns = PortfReturns(acct) ############################# EXAMPLE STATS ################################# cat('Profit Factor for bumblebee is: ', stratStats$Profit.Factor, '\n') suppressMessages(require(PerformanceAnalytics)) cat('Sortino Ratio for bumblebee is: ', SortinoRatio(stratReturns), '\n')
R-Forge@R-project.org | ViewVC Help |
Powered by ViewVC 1.0.0 |