Ended up using SetOption("HoldMinDays", HoldMinCalDays) which works as long a 
signal is in state form.  Would like to figure out how to use DaysSince1900() 
as feel more in control.

--- In [email protected], "bistrader" <bistra...@...> wrote:
>
> Yes, I have a function to convert 30 calendar days to the number of market 
> days.  This works fine, but can not figure out how to use the now available 
> marketdays to keep on buy when get another buy while still holding.
> 
> Here is the function.
> 
> function CalendarIndex( Days ) 
> { 
>   td = DaysSince1900(); 
>   result = Null; 
> 
>   if( -Days < 0 ) 
>   { 
>      for( i = BarCount -1; i >= -(-Days); i = i - 1 ) 
>      { 
>        backday = td[ i ] + (-Days); // Days is negative 
>        for( j = -(-Days)/2; j < i; j++ ) 
>        { 
>           if( td[ i - j ] <= backday ) 
>            { 
>              result[ i ] = i - j - 0.5; 
>              break; 
>            } 
>        } 
>      } 
>   } 
>   return result; 
> }
> 
> Then I use the following but does not work correctly.  Holds too long if 
> another impulse buy comes along while still on a forced hold buy.
> 
> //  Apply HoldMinMktDays for Buy side only 
> Sig_Buy    = ExRem(Sig_Buy, Sig_Sell);
> Sig_Sell   = ExRem(Sig_Sell, Sig_Buy);
> 
> // Starts at 0 for each Buy which is a problem if another Buy impulse prior
> // to correct HoldMin Period
> Bars   = BarsSince(Sig_Buy);
> 
> Buy    = Flip(Sig_Buy, Sig_Sell);
> Sell   = NOT Sig_Buy;
> 
> // Since Bars at 0 for each Buy, we hold for too long if another Buy impulse
> // comes along as Bars starts over again at 0.
> Buy    = IIf(Bars <= HoldMinMktDays, True, Buy);
> Sell   = IIf(Bars <= HoldMinMktDays, False, Sell);
> 
> Will keep at it.
> 
> --- In [email protected], "Mike" <sfclimbers@> wrote:
> >
> > Have a look at DaysSince1900.
> > 
> > Mike
> > 
> > --- In [email protected], "bistrader" <bistrader@> wrote:
> > >
> > > I tried the ref approach but it uses market days and I need 30 calendar 
> > > days.
> > > 
> > > As for subsequent buy signal, the clock would not start again as the 
> > > security is still on a buy. I should have been clearer.
> > > 
> > > Thanks.  I'll continue to try to get calendar days out of this.
> > > 
> > > --- In [email protected], "Mike" <sfclimbers@> wrote:
> > > >
> > > > Hi,
> > > > 
> > > > You are not clear enough in your description.
> > > > 
> > > > Using your example; A subsequent Buy came up before the 30 days were 
> > > > over. So, do you start counting to 30 again from that Buy before 
> > > > selling?
> > > > 
> > > > If no Sell signal came over the course of 30 days since a Buy, would 
> > > > you still Sell?
> > > > 
> > > > You will probably need to use ExRemSpan.
> > > > 
> > > > For the case of hold exactly 30 bars then sell, regardless of redundant 
> > > > Buys and regardless of whether or not a Sell occurred, you would do the 
> > > > following:
> > > > 
> > > > Buy = ...;
> > > > Sell = Ref(ExRemSpan(Buy, 30), -30);
> > > > 
> > > > Mike
> > > > 
> > > > --- In [email protected], "bistrader" <bistrader@> wrote:
> > > > >
> > > > > Hello,
> > > > > 
> > > > > I have a regular backtest with Buy and Sell statements.  Is there a 
> > > > > way to force the buy ONLY to stay on a buy for 30 days?
> > > > > 
> > > > > Example:
> > > > > Buy = true 20 calendar days ago;
> > > > > Sell = true 8 calendar days ago;
> > > > > Buy - true yesterday; 
> > > > > 
> > > > > Want to force Buy to stay on buy for total of 30 days and then want 
> > > > > to sell but only if another Buy signal did not come along.  In this 
> > > > > case, system would go on buy 20 days ago and stay on buy today since 
> > > > > had another buy signal before 31 days was up, even though sell was 
> > > > > true 8 days ago.
> > > > >
> > > >
> > >
> >
>


Reply via email to