Well lets just look at a pretend array... I think that puts it in
its
simplest context....
Effectively what I'm trying to do is
replicate EXACTLY the
functionality of BarsSince() but instead of starting
from the most
current array element and moving backwards, I want to start
a
specified number of intervals back and move forward...
Obviously
when you use BarsSince() it returns an array... in the same
way, I'd like
my function to return an array. Looking at this example,
ans assuming that
the array before x simply has zeros in
it...
0,1,0,0,0,0,0,1,0,0
x.................Now
BarsSince(array)
would produce (I think),
0,0,1,2,3,4,5,0,1,2
I want a
function that will work from x to Now, and
return,
0,0,1,2,3,4,5,6,7,8
I can do this with a loop
obviously (but I hate loops). This is a
problem I've hit before. I'd just
love to know if there's an array
solution...
TIA
--- In amibroker@xxxxxxxxxps.com,
"wavemechanic" <timesarrow@...> wrote:
>
> 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: amibroker@xxxxxxxxxps.com
> 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 amibroker@xxxxxxxxxps.com,
"sidhartha70" <sidhartha70@> wrote:
> >
> > Nope,
I've tried it Bill...
> >
> > I get an Error 5, Argument #3
has incorrect type on the ValuneWhen()
> > line...
> >
> >
> >
> > --- In amibroker@xxxxxxxxxps.com,
"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: amibroker@xxxxxxxxxps.com
> > > 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 amibroker@xxxxxxxxxps.com,
"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: amibroker@xxxxxxxxxps.com
> > > > 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 amibroker@xxxxxxxxxps.com,
"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 amibroker@xxxxxxxxxps.com,
"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 amibroker@xxxxxxxxxps.com,
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
>