[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