SCM

SCM Repository

[blotter] Annotation of /pkg/quantstrat/demo/luxor.1.strategy.basic.R
ViewVC logotype

Annotation of /pkg/quantstrat/demo/luxor.1.strategy.basic.R

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1458 - (view) (download)

1 : opentrades 1457 #!/usr/bin/Rscript --vanilla
2 :     #
3 :     # Jan Humme (@opentrades) - August 2012, revised April 2013
4 :     #
5 : opentrades 1458 # Tested and found to work correctly using blotter r1457
6 : opentrades 1457 #
7 : opentrades 1458 # After Jaekle & Tamasini: A new approach to system development and portfolio optimisation (ISBN 978-1-905641-79-6)
8 : opentrades 1457 #
9 : opentrades 1458 # Paragraph 3.2: luxor with slippage and transaction costs
10 : opentrades 1457
11 :     ##### PLACE DEMO AND TEST DATES HERE #################
12 :     #
13 :     #if(isTRUE(options('in_test')$in_test))
14 :     # # use test dates
15 :     # {initDate="2011-01-01"
16 :     # endDate="2012-12-31"
17 :     # } else
18 :     # # use demo defaults
19 :     # {initDate="1999-12-31"
20 :     # endDate=Sys.Date()}
21 :    
22 :     source('luxor.include.R')
23 :     .fast = 10
24 :     .slow = 30
25 :    
26 :     source('luxor.getSymbols.R')
27 :    
28 :     ### blotter
29 :    
30 :     initPortf(portfolio.st, symbols='GBPUSD', initDate=initDate, currency='USD')
31 :     initAcct(account.st, portfolios=portfolio.st, initDate=initDate, currency='USD')
32 :    
33 :     ### quantstrat
34 :    
35 :     initOrders(portfolio.st, initDate=initDate)
36 :    
37 :     ### define strategy
38 :    
39 :     strategy(strategy.st, store=TRUE)
40 :    
41 :     ### indicators
42 :    
43 :     add.indicator(strategy.st, name = "SMA",
44 :     arguments = list(
45 :     x = quote(Cl(mktdata)[,1]),
46 :     n = .fast
47 :     ),
48 :     label="nFast"
49 :     )
50 :    
51 :     add.indicator(strategy.st, name="SMA",
52 :     arguments = list(
53 :     x = quote(Cl(mktdata)[,1]),
54 :     n = .slow
55 :     ),
56 :     label="nSlow"
57 :     )
58 :    
59 :     ### signals
60 :    
61 :     add.signal(strategy.st, name='sigCrossover',
62 :     arguments = list(
63 :     columns=c("nFast","nSlow"),
64 :     relationship="gte"
65 :     ),
66 :     label='long'
67 :     )
68 :    
69 :     add.signal(strategy.st, name='sigCrossover',
70 :     arguments = list(
71 :     columns=c("nFast","nSlow"),
72 :     relationship="lt"
73 :     ),
74 :     label='short'
75 :     )
76 :    
77 :     ### rules
78 :    
79 :     add.rule(strategy.st, name='ruleSignal',
80 :     arguments=list(sigcol='long' , sigval=TRUE,
81 :     orderside='short',
82 :     ordertype='market',
83 :     orderqty='all',
84 :     TxnFees=.txnfees,
85 :     replace=TRUE
86 :     ),
87 :     type='exit',
88 :     label='Exit2LONG'
89 :     )
90 :    
91 :     add.rule(strategy.st, name='ruleSignal',
92 :     arguments=list(sigcol='short', sigval=TRUE,
93 :     orderside='long' ,
94 :     ordertype='market',
95 :     orderqty='all',
96 :     TxnFees=.txnfees,
97 :     replace=TRUE
98 :     ),
99 :     type='exit',
100 :     label='Exit2SHORT'
101 :     )
102 :    
103 :     add.rule(strategy.st, name='ruleSignal',
104 :     arguments=list(sigcol='long' , sigval=TRUE,
105 :     orderside='long' ,
106 :     ordertype='stoplimit', prefer='High', threshold=.threshold,
107 :     orderqty=+.orderqty,
108 :     replace=FALSE
109 :     ),
110 :     type='enter',
111 :     label='EnterLONG'
112 :     )
113 :    
114 :     add.rule(strategy.st, name='ruleSignal',
115 :     arguments=list(sigcol='short', sigval=TRUE,
116 :     orderside='short',
117 :     ordertype='stoplimit', prefer='Low', threshold=-.threshold,
118 :     orderqty=-.orderqty,
119 :     replace=FALSE
120 :     ),
121 :     type='enter',
122 :     label='EnterSHORT'
123 :     )
124 :    
125 :     ###############################################################################
126 :    
127 :     applyStrategy(strategy.st, portfolio.st)
128 :    
129 :     View(getOrderBook(portfolio.st)[[portfolio.st]]$GBPUSD)
130 :    
131 :     ###############################################################################
132 :    
133 :     updatePortf(portfolio.st, Symbols='GBPUSD', Dates=paste('::',as.Date(Sys.time()),sep=''))
134 :    
135 :     chart.Posn(portfolio.st, "GBPUSD")
136 :    
137 :     ###############################################################################
138 :    
139 :     View(tradeStats(portfolio.st, 'GBPUSD'))
140 :    
141 :     ###############################################################################
142 :    
143 :     # save the strategy in an .RData object for later retrieval
144 :    
145 :     save.strategy(strategy.st)
146 :    
147 :     ##### PLACE THIS BLOCK AT END OF DEMO SCRIPT ###################
148 :     # book = getOrderBook(port)
149 :     # stats = tradeStats(port)
150 :     # rets = PortfReturns(acct)
151 :     ################################################################

root@r-forge.r-project.org
ViewVC Help
Powered by ViewVC 1.0.0  
Thanks to:
Vienna University of Economics and Business Powered By FusionForge