Don't have time now to think about it and it would be easier if you posted the 
code instead of working with a moving target.  However, off the top of my head 
you might be able to avoid looping by using brute force.  For example, if the 
range is 5 bars then you could test the 5th bar back with iif(barssince(x) == 
5, and if that is negative then do the same for the 4th bar back, etc.
  ----- Original Message ----- 
  From: sidhartha70 
  To: [email protected] 
  Sent: Tuesday, January 13, 2009 8:04 AM
  Subject: [amibroker] Re: Finding the last true value in an array...


  SelectedValue() works Bill... Thanks.

  However, the problem I'm having is that I'm using this in AFL code and
  I want it to complete the historical array if you like, not just off a
  SelectedValue() but with each value of Sum(x,range) as ir changes...
  which it's looking like is not possible.

  Horribly I might have to use a loop. Errrgg.

  --- In [email protected], "sidhartha70" <sidharth...@...> wrote:
  >
  > Nope, I've tried it Bill...
  > 
  > I get an Error 5, Argument #3 has incorrect type on the ValuneWhen()
  > line...
  > 
  > 
  > 
  > --- In [email protected], "wavemechanic" <timesarrow@> wrote:
  > >
  > > Have you tried it or are just "not sure"?  Works for me and can move
  > to any bar and get the "selectedvalue".  If in doubt use
  > selectedvalue(sum()).
  > >   ----- Original Message ----- 
  > >   From: sidhartha70 
  > >   To: [email protected] 
  > >   Sent: Tuesday, January 13, 2009 6:01 AM
  > >   Subject: [amibroker] Re: Finding the last true value in an array...
  > > 
  > > 
  > >   Actually Bill, not sure this works... since the 3rd argument in
  > >   ValueWhen() is required to be a number and not an array.
  > >   Could use LastValue() to turn it into a number, but of course this
  > >   only returns the value from the right hand edge of the chart...
  so it
  > >   wouldn't work historically... which is what I need.
  > > 
  > >   Any thoughts...?
  > > 
  > >   --- In [email protected], "wavemechanic" <timesarrow@>
  wrote:
  > >   >
  > >   > How about this?
  > >   > 
  > >   > x = condition that generates your 1,0 array
  > >   > y = sum(x, range)
  > >   > z = valuewhen(x, barindex(), y)
  > >   > position in array = lastvalue(barindex()) - z + 1
  > >   > 
  > >   > Bill
  > >   >   ----- Original Message ----- 
  > >   >   From: sidhartha70 
  > >   >   To: [email protected] 
  > >   >   Sent: Monday, January 12, 2009 6:33 PM
  > >   >   Subject: [amibroker] Re: Finding the last true value in an
  > array...
  > >   > 
  > >   > 
  > >   >   Sorry Barry... my terminology is confusing...
  > >   > 
  > >   >   Lets say I have an array that has only true or false values in
  > it...
  > >   > 
  > >   >   Lets say the last 10 value of this array are as follows, from x
  > >   >   intervals ago until now...
  > >   > 
  > >   >   0,1,0,0,1,0,0,1,0,0
  > >   >   x.................Now
  > >   > 
  > >   >   Now, obviously, BarsSince(array) will return a value of 2...
  > i.e. the
  > >   >   last true value was 2 intervals ago.
  > >   > 
  > >   >   However, the value I'm trying to get is the last value of true
  > in the
  > >   >   above x elements of the array... so I want an expression that
  > returns
  > >   >   8 for the above array (i.e. 8 intervals back is the last
  value of
  > >   >   true). Any ideas...?
  > >   > 
  > >   >   Hopefully that's clearer now.
  > >   > 
  > >   > 
  > >   >   --- In [email protected], "Barry Scarborough"
  <razzbarry@>
  > >   >   wrote:
  > >   >   >
  > >   >   > What are your trying to do? HHV gives the value of the
  > highest high 
  > >   >   > over the period you enter in x. If you want to find how
  far back
  > >   that 
  > >   >   > is you can use 
  > >   >   > 
  > >   >   > bs = BarsSince(H == HHV(H, 10));
  > >   >   > // the next line prints the num bars back and the high of
  > that bar
  > >   >   > printf(NumToStr(bs, 1.0) + " High " + NumToStr(HHV(H, 10),
  > 1.2));
  > >   >   > 
  > >   >   > If you want to find the value of the other things bs bars
  > ago then 
  > >   >   > you can
  > >   >   > // use the following. This applies to any array 
  > >   >   > lastHigh = ref(High, - bs);
  > >   >   > // this is another way to see the results that shows the
  > high value
  > >   >   > Plot(lastHigh, "high bars ago", colorBlack);
  > >   >   > Plot(Ref(C, -bs), "close bars ago", colorblue);
  > >   >   > Plot(Ref(MA(C, 10), -bs), "MA(10) value bars ago",
  colorGreen);
  > >   >   > // then look at what valuewhen returns
  > >   >   > Plot(ValueWhen(H == HHV(H, 10), H, -1), "ValueWhen",
  colorRed);
  > >   >   > 
  > >   >   > bsolutely the last thing you want to do is start using loops,
  > >   such as 
  > >   >   > for loops, to extract data from ABs arrays. Your code will
  > be much 
  > >   >   > cleaner and faster if you use straight AFL.
  > >   >   > 
  > >   >   > Your terminology true value is confusing. The value in an
  > array is 
  > >   >   > the true value. Do you mean what was the value when the
  > >   condition was 
  > >   >   > true?
  > >   >   > 
  > >   >   > Barry
  > >   >   > 
  > >   >   > 
  > >   >   > 
  > >   >   >  --- In [email protected], "sidhartha70"
  <sidhartha70@> 
  > >   >   > wrote:
  > >   >   > >
  > >   >   > > Graham,
  > >   >   > > 
  > >   >   > > I'm trying to get my head around that code right now...
  > but first
  > >   >   > > thing I noticed was that my post was poorly worded. Let me
  > >   reword it
  > >   >   > > below, and maybe you can tell me if this is what you
  > thought I 
  > >   >   > meant....
  > >   >   > > 
  > >   >   > > Ok. It's easy to find the first occurrence of a true value
  > of an
  > >   >   > > array... that is looking from now backwards x intervals.
  > simply
  > >   >   > > HHV(array,x) where x=no of intervals back.
  > >   >   > > 
  > >   >   > > However, how can I find the last true value of the array
  > looking 
  > >   >   > back
  > >   >   > > over x intervals...?? i.e. the first true value starting
  from
  > >   x and
  > >   >   > > looking forward to now.
  > >   >   > > 
  > >   >   > > is there an array method without looping...?
  > >   >   > > 
  > >   >   > > Many Thanks
  > >   >   > > 
  > >   >   > > 
  > >   >   > > --- In [email protected], Graham <kavemanperth@>
  > wrote:
  > >   >   > > >
  > >   >   > > > try this
  > >   >   > > > array = h;
  > >   >   > > > LastHHVValue = valuewhen( hhvbars(array,x)==0, array );
  > >   >   > > > 
  > >   >   > > > -- 
  > >   >   > > > Cheers
  > >   >   > > > Graham Kav
  > >   >   > > > AFL Writing Service
  > >   >   > > > http://www.aflwriting.com
  > >   >   > > > 
  > >   >   > > > 
  > >   >   > > > 
  > >   >   > > > 2009/1/13 sidhartha70 <sidhartha70@>:
  > >   >   > > > > Hi All,
  > >   >   > > > >
  > >   >   > > > > Ok. It's easy to find the last true value of an array...
  > >   simply
  > >   >   > > > > HHV(array,x) where x=no of intervals back.
  > >   >   > > > >
  > >   >   > > > > However, how can I find the last true value of the
  array 
  > >   >   > looking back
  > >   >   > > > > over x intervals...??
  > >   >   > > > >
  > >   >   > > > > is there an array method without looping...?
  > >   >   > > > >
  > >   >   > > > > Many Thanks
  > >   >   > > > >
  > >   >   > > > >
  > >   >   > > >
  > >   >   > >
  > >   >   >
  > >   > 
  > >   > 
  > >   > 
  > >   >   ------------------------------------
  > >   > 
  > >   >   **** IMPORTANT ****
  > >   >   This group is for the discussion between users only.
  > >   >   This is *NOT* technical support channel.
  > >   > 
  > >   >   *********************
  > >   >   TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
  > >   directly to 
  > >   >   SUPPORT {at} amibroker.com
  > >   >   *********************
  > >   > 
  > >   >   For NEW RELEASE ANNOUNCEMENTS and other news always check
  DEVLOG:
  > >   >   http://www.amibroker.com/devlog/
  > >   > 
  > >   >   For other support material please check also:
  > >   >   http://www.amibroker.com/support.html
  > >   > 
  > >   >   *********************************
  > >   >   Yahoo! Groups Links
  > >   > 
  > >   > 
  > >   > 
  > >   > 
  > >   > 
  > >   >
  > >  
  >
  ------------------------------------------------------------------------------
  > >   > 
  > >   > 
  > >   > 
  > >   >   No virus found in this incoming message.
  > >   >   Checked by AVG - http://www.avg.com 
  > >   >   Version: 8.0.176 / Virus Database: 270.10.6/1889 - Release Date:
  > >   1/12/2009 8:18 PM
  > >   >
  > > 
  > > 
  > > 
  > >   ------------------------------------
  > > 
  > >   **** IMPORTANT ****
  > >   This group is for the discussion between users only.
  > >   This is *NOT* technical support channel.
  > > 
  > >   *********************
  > >   TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail
  > directly to 
  > >   SUPPORT {at} amibroker.com
  > >   *********************
  > > 
  > >   For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
  > >   http://www.amibroker.com/devlog/
  > > 
  > >   For other support material please check also:
  > >   http://www.amibroker.com/support.html
  > > 
  > >   *********************************
  > >   Yahoo! Groups Links
  > > 
  > > 
  > > 
  > > 
  > > 
  > >
  >
  ------------------------------------------------------------------------------
  > > 
  > > 
  > > 
  > >   No virus found in this incoming message.
  > >   Checked by AVG - http://www.avg.com 
  > >   Version: 8.0.176 / Virus Database: 270.10.6/1891 - Release Date:
  > 1/13/2009 8:17 AM
  > >
  >



  ------------------------------------

  **** IMPORTANT ****
  This group is for the discussion between users only.
  This is *NOT* technical support channel.

  *********************
  TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to 
  SUPPORT {at} amibroker.com
  *********************

  For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
  http://www.amibroker.com/devlog/

  For other support material please check also:
  http://www.amibroker.com/support.html

  *********************************
  Yahoo! Groups Links





------------------------------------------------------------------------------



  No virus found in this incoming message.
  Checked by AVG - http://www.avg.com 
  Version: 8.0.176 / Virus Database: 270.10.6/1891 - Release Date: 1/13/2009 
8:17 AM

Reply via email to