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.

Reply via email to