[R-SIG-Finance] Parameters setting for multiple indicators with the same argument names

Brian G. Peterson brian at braverock.com
Fri Sep 9 11:39:50 CEST 2011


On Fri, 2011-09-09 at 09:35 +0200, igor_vilcek_external at tatrabanka.sk
wrote:
> My problem is, however, kinda different. E.g. in my example above, I need 
> to modify (as simply as possible) length of both moving averages, 
> externally, best through 'parameters' argument:
> 
>  applyStrategy(strategy=stratMACROSS , portfolios=portfolio.st, 
> parameters=list(n=50, n=200)) 
> 
> The problem is, I can't set n=50 for first MA and n=200 for second MA, 
> because both MA indicators use same name argument 'n'. 
> Thus, setting parameters=list(n=50, n=200) causes the system to use only 
> first 'n=50' ignoring second 'n=200'. 
> Is there any simple way how to set parameters like 'n1=50, n2=200'? I.e. 
> to differentiate between these two with same names?

I wrote:
> You have two options, a simple one, and a more complex one.

The answer won't change because you ask the question again.

I understand your question exactly, two variables named 'n'. got it.

The answer below is still exactly correct.  I'll add a bit more detail:

> The simple one is for you to generate a brute force set of parameters
> and loop over them, setting them as variables in  your strategy using
> quote().  see ?expand.grid

Original:
stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=50),label= "ma50" )
stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=200),label= "ma200")

New:
stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=quote(shortMA)),label= "ma50" )
stratMACROSS <- add.indicator(strategy = stratMACROSS, name = "SMA",
arguments = list(x=quote(Cl(mktdata)), n=quote(longMA)),label= "ma200")

I'll leave as an exercise for the reader how to use expand.grid and loop
over applyStrategy with two different values for shortMA and longMA. 

> Or, more flexible but also more complicated, see the two parameterTest
> demos in the quantstrat package.  You can tell the parameter subsystem
> which slots (indicators) you are applying parameters to, and apply a
> different distribution to each.

The second option remains the more flexible and harder (for you) to code
method.

-- 
Brian G. Peterson
http://braverock.com/brian/
Ph: 773-459-4973
IM: bgpbraverock



More information about the R-SIG-Finance mailing list