Try this out and see if it does what you want. The premise is this; Datenum is just a weighted count, so subtract 10000 (equals 1 year) to get one year ago. Then take the last BarIndex where Datenum is not any more recent than that.
This 1 bar exploration illustrates my earlier comment in that you will see that there is a difference of 253 bars in the last year (as of Jul 18 2008). Note this will only work when running against the most recent trade date since it is using LastValue. To illustrate this, run the Exploration over last 5 bars. You will note that the "Today ..." values increment, but the year ago values are fixed. Buy = Sell = Short = Cover = 0; yearAgoDate = LastValue(Datenum() - 10000); yearAgoBar = LastValue(ValueWhen(Datenum() <= yearAgoDate, BarIndex ())); Filter = 1; AddColumn(yearAgoDate, "Year Ago Date"); AddColumn(yearAgoBar, "Year Ago BarIndex"); AddColumn(Datenum(), "Today Date"); AddColumn(BarIndex(), "Today BarIndex"); Mike --- In [email protected], "Mike" <[EMAIL PROTECTED]> wrote: > > Hi, > > Just a quick note; BarIndex only counts *trading* days. Not calendar > days. Whereas DaysSince1900 is calendar days. So, you may be > comparing apples to oranges. For example; in the US markets, there > are about 252 trading days a year. That is the count reflected in > BarIndex. > > Mike > > --- In [email protected], "tipequity" <l3456@> wrote: > > > > I am having a hard time relating dates to bar indecies. In code > > provided below I am trying to calculate the bar index of a year ago > > date with little success. I appreciate any help and explanation. > > > > SetBarsRequired(10000); > > > > function RefDays( Array, 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 ] = Array[ i - j ]; > > break; > > } > > } > > } > > } > > return result; > > } > > > > yy = Year(); > > dy = DayOfYear(); > > leapyear = ( yy % 4 ) == 0 AND yy != 2000; > > yearlen = IIf( leapyear, -366, -365 ); > > > > aYearAgoDate = RefDays(DateTime(), LastValue(yearlen)); > > dn = DateNum(); > > BarIndx = BarIndex(); > > > > StartDateBar = LastValue( ValueWhen ( dn == StartDate ,BarIndx ) ); > > >
