You need to update to the CRAN release of quantmod, at the very least. 0.3-15
http://cran.r-project.org/web/packages/quantmod/index.html Best, Jeff On Wed, Mar 2, 2011 at 1:26 PM, Immanuel <[email protected]> wrote: > Hello, > > since I'm talking about the demo examples that come with quantstrat > saw no point in attaching them. I assumed that the error comes > from one of the quantstrat internal functions thank's for looking into it. > > regards, > Immanuel > > here the error & code > > ---------- > Loading required package: quantstrat > Loading required package: xts > Loading required package: zoo > Loading required package: TTR > Loading required package: blotter > Loading required package: quantmod > Loading required package: Defaults > Loading required package: FinancialInstrument > [1] "2007-03-15 AAPL 100 @ 89.57" > > Error in if (getPosQty(Portfolio = portfolio, Symbol = symbol, Date = > timestamp) == : > argument is of length zero > In addition: There were 15 warnings (use warnings() to see them) > Time difference of 0.2658639 secs > > [1] "trade blotter portfolio update:" > Time difference of 0.2728000 secs > > Warning message: > In max(i) : no non-missing arguments to max; returning -Inf > > sessionInfo() > R version 2.12.0 (2010-10-15) > > Platform: i486-pc-linux-gnu (32-bit) > > locale: > [1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C > [3] LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8 > [5] LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8 > [7] LC_PAPER=en_US.utf8 LC_NAME=en_US.utf8 > [9] LC_ADDRESS=en_US.utf8 LC_TELEPHONE=en_US.utf8 > [11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=en_US.utf8 > > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] quantstrat_0.4.0 blotter_0.8 FinancialInstrument_0.4 > [4] quantmod_0.3-14 Defaults_1.1-1 TTR_0.20-2 > [7] xts_0.8-0 zoo_1.6-3 rj_0.5.0-5 > > > loaded via a namespace (and not attached): > [1] grid_2.12.0 lattice_0.19-13 rJava_0.8-7 tools_2.12.0 > --------------------------------------- > > # Simple MACD strategy > # > # MACD may be used in many ways, this will demonstrate a trend indicator. > # > # traditionally, when the MACD signal crosses zero, this indicated a > establishment of a positive trend > # > # we'll buy on positive treshold crossover of the 'signal' column, and sell > on negative threshold crossover > # > # Author: brian > > ############################################################################### > > > require(quantstrat) > try(rm("order_book.macd",pos=.strategy),silent=TRUE) > try(rm("account.macd","portfolio.macd",pos=.blotter),silent=TRUE) > try(rm("account.st","portfolio.st > ","stock.str","stratMACD","initDate","initEq",'start_t','end_t'),silent=TRUE) > > stock.str='AAPL' # what are we trying it on > > #MA parameters for MACD > fastMA = 12 > slowMA = 26 > signalMA = 9 > maType="EMA" > > currency('USD') > stock(stock.str,currency='USD',multiplier=1) > > #or use fake data > #stock.str='sample_matrix' # what are we trying it on > #data(sample_matrix) # data included in package xts > #sample_matrix<-as.xts(sample_matrix) > > > initDate='2006-12-31' > initEq=1000000 > portfolio.st='macd' > account.st='macd' > > initPortf(portfolio.st,symbols=stock.str, initDate=initDate) > initAcct(account.st,portfolios=portfolio.st, initDate=initDate) > initOrders(portfolio=portfolio.st,initDate=initDate) > > > stratMACD <- strategy(portfolio.st) > > stratMACD <- add.indicator(strategy = stratMACD, name = "MACD", arguments = > list(x=quote(Cl(mktdata))) ) > > stratMACD <- add.signal(strategy = stratMACD,name="sigThreshold",arguments > = > list(column="signal",relationship="gt",threshold=0,cross=TRUE),label="signal.gt.zero") > stratMACD <- add.signal(strategy = stratMACD,name="sigThreshold",arguments > = > list(column="signal",relationship="lt",threshold=0,cross=TRUE),label="signal.lt.zero") > > stratMACD <- add.rule(strategy = stratMACD,name='ruleSignal', arguments = > list(sigcol="signal.gt.zero",sigval=TRUE, orderqty=100, ordertype='market', > orderside='long', threshold=NULL),type='enter') > stratMACD <- add.rule(strategy = stratMACD,name='ruleSignal', arguments = > list(sigcol="signal.gt.zero",sigval=TRUE, orderqty=-100, > ordertype='stoplimit', orderside='long', > threshold=.85,tmult=TRUE),type='risk') > # alternately, use a trailing order > # stratMACD <- add.rule(strategy = stratMACD,name='ruleSignal', arguments = > list(sigcol="signal.gt.zero",sigval=TRUE, orderqty=-100, > ordertype='stoptrailing', orderside='long', > threshold=.9,tmult=TRUE),type='risk') > stratMACD <- add.rule(strategy = stratMACD,name='ruleSignal', arguments = > list(sigcol="signal.lt.zero",sigval=TRUE, orderqty='all', > ordertype='market', orderside='long', threshold=NULL),type='exit') > > getSymbols(stock.str,from=initDate) > start_t<-Sys.time() > out<-try(applyStrategy(strategy=stratMACD , > portfolios=portfolio.st,parameters=list(nFast=fastMA, > nSlow=slowMA, nSig=signalMA,maType=maType))) > end_t<-Sys.time() > print(end_t-start_t) > > start_t<-Sys.time() > updatePortf(Portfolio=portfolio.st > ,Dates=paste('::',as.Date(Sys.time()),sep='')) > end_t<-Sys.time() > print("trade blotter portfolio update:") > print(end_t-start_t) > > chart.Posn(Portfolio=portfolio.st,Symbol=stock.str) > plot(add_MACD(fast=fastMA, slow=slowMA, signal=signalMA,maType="EMA")) > > #look at the order book > getOrderBook('macd') > > > ############################################################################### > # 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: macd.R 450 2010-11-13 18:30:40Z braverock $ > # > > ############################################################################## > ----------- > > > > On 03/02/2011 07:17 PM, Joshua Ulrich wrote: > >> Have you tried converting the indexes of your xts objects to POSIXct? >> You haven't provided any code, but my guess is that one of xts objects >> you're using as input has a Date-classed index. >> -- >> Joshua Ulrich | FOSS Trading: www.fosstrading.com >> >> >> >> On Tue, Mar 1, 2011 at 6:52 AM, Immanuel<[email protected]> >> wrote: >> >>> Hello, >>> >>> what are the implications of this error, is there a workaround? >>> I'm just starting with quantstrat and really like the idea to implement >>> strategies not directly with blotter anymore. >>> >>> regards, >>> Immanuel >>> >>> On 02/26/2011 09:48 PM, Jeffrey Ryan wrote: >>> >>>> Yes, that isn't an xts issue - just happens to be taking place during a >>>> subset. >>>> >>>> The issue is somewhere else >>>> >>>> 3: In `[.xts`(PosData, index(PosData)< Date) : >>>> Incompatible methods ("Ops.POSIXt", "Ops.Date") for "<" >>>> Time difference of 0.387223 secs >>>> >>>> The lhs [index(PosData)] is POSIX and the rhs is Date, which R can't >>>> compare >>>> correctly. The warning is happening - and probably resulting in all >>>> TRUE >>>> values - which isn't likely the desired outcome. >>>> >>>> I'm not looking at the code at the moment, but you can rule out xts. >>>> There >>>> are likely better ways to do this with xts, and I'll see what I can do >>>> to >>>> make the quantstrat code use more of the built-in xts functionality. >>>> >>>> Jeff >>>> >>>> >>>> On Sat, Feb 26, 2011 at 12:34 PM, Immanuel<[email protected]> >>>> wrote: >>>> >>>> hello, >>>>> seems to be already installed: >>>>> ---------- >>>>> [1] "2001-06-26 AAPL 100 @ 11.88" >>>>> Error in if (getPosQty(Portfolio = portfolio, Symbol = symbol, Date = >>>>> timestamp) == : >>>>> argument is of length zero >>>>> In addition: Warning messages: >>>>> 1: In match.names(columns, colnames(data)) : >>>>> all columns not located in ma50 ma200 for AAPL.Open AAPL.High AAPL.Low >>>>> AAPL.Close AAPL.Volume AAPL.Adjusted ma50 ma200 ma50.gt.ma200 >>>>> 2: In max(i) : no non-missing arguments to max; returning -Inf >>>>> 3: In `[.xts`(PosData, index(PosData)< Date) : >>>>> Incompatible methods ("Ops.POSIXt", "Ops.Date") for "<" >>>>> Time difference of 0.387223 secs >>>>> [1] "trade blotter portfolio update:" >>>>> Time difference of 0.7028229 secs >>>>> Warning message: >>>>> In max(i) : no non-missing arguments to max; returning -Inf >>>>> >>>>>> sessionInfo() >>>>>> >>>>> R version 2.12.1 (2010-12-16) >>>>> Platform: i486-pc-linux-gnu (32-bit) >>>>> >>>>> locale: >>>>> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C >>>>> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 >>>>> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 >>>>> [7] LC_PAPER=en_US.UTF-8 LC_NAME=en_US.UTF-8 >>>>> [9] LC_ADDRESS=en_US.UTF-8 LC_TELEPHONE=en_US.UTF-8 >>>>> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=en_US.UTF-8 >>>>> >>>>> attached base packages: >>>>> [1] stats graphics grDevices utils datasets methods base >>>>> >>>>> other attached packages: >>>>> [1] quantstrat_0.4.0 blotter_0.8 >>>>> FinancialInstrument_0.4 >>>>> [4] quantmod_0.3-15 Defaults_1.1-1 TTR_0.20-2 >>>>> [7] xts_0.8-0 zoo_1.6-4 rj_0.5.0-5 >>>>> >>>>> loaded via a namespace (and not attached): >>>>> [1] grid_2.12.1 lattice_0.19-17 rJava_0.8-7 tools_2.12.1 >>>>> ------------------ >>>>> >>>>> On 02/26/2011 06:07 PM, Brian G. Peterson wrote: >>>>> >>>>>> On 02/26/2011 11:03 AM, Immanuel wrote: >>>>>> >>>>>>> I just run the examples from the quantstrat package and >>>>>>> received following error for every example: >>>>>>> ---------- >>>>>>> >>>>>> <...> >>>>>> >>>>>> 2: In `[.xts`(PosData, index(PosData)< Date) : >>>>>>> Incompatible methods ("Ops.POSIXt", "Ops.Date") for "<" >>>>>>> any ideas? >>>>>>> >>>>>> Try upgrading xts to the latest version (0.8) from R-Forge or CRAN >>>>>> >>>>>> _______________________________________________ >>>>>> [email protected] mailing list >>>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance >>>>>> -- Subscriber-posting only. If you want to post, subscribe first. >>>>>> -- Also note that this is not the r-help list where general R >>>>>> questions should go. >>>>>> >>>>>> _______________________________________________ >>>>> [email protected] mailing list >>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance >>>>> -- Subscriber-posting only. If you want to post, subscribe first. >>>>> -- Also note that this is not the r-help list where general R questions >>>>> should go. >>>>> >>>>> >>>> _______________________________________________ >>> [email protected] mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-sig-finance >>> -- Subscriber-posting only. If you want to post, subscribe first. >>> -- Also note that this is not the r-help list where general R questions >>> should go. >>> >>> > _______________________________________________ > [email protected] mailing list > https://stat.ethz.ch/mailman/listinfo/r-sig-finance > -- Subscriber-posting only. If you want to post, subscribe first. > -- Also note that this is not the r-help list where general R questions > should go. > -- Jeffrey Ryan [email protected] www.lemnica.com [[alternative HTML version deleted]] _______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
