Friends.

I cannot simplify this much, and I think the loop is unavoidable.  As a
recovering C programmer I want to avoid loops and in cases like this I
almost allways can by using an apply function.  But I suspect in this case
there is nothing I can do.

It is a finance example where a price series is compared to a moving
average.  If the price goes above the average, plus a bit, buy the
security.  If we are holding the security and the price dips below the
moving average sell it.

P is the series of prices

m is the moving average series

S <- P>(m*1.005)
S[S]<-1

Now S is my signal it is 1 when P > m plus a margin of 0.005 x m

But now I need to control when S goes from 1 to 0.  As far as I can tell
this is the only way...

for(i in 2:length(S)){
  if(S[i]==0 && S[i-1] == 1){
    ## Was long, now short.  SHould I be short?  Is P>m still?
    if(P[i] > m[i]){
      ## Stay long
      S[i] <- 1
    }
  }
}

As I mentioned I am a recovering C programmer, so I have a buit in loop
reflex, but I am struggling to adapt.  But this one has me beat!  Can anyone
help?

cheers
W

	[[alternative HTML version deleted]]

