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.

Reply via email to