PureBytes Links
Trading Reference Links
|
That's correct. Both conditions have to be true for the loop to
continue, so either reaching its limit will terminate the loop.
As for there being a limit on the number of conditions, I'm not sure.
I don't know that any particular limit is officially defined, but the
AFL interpreter may have some internal limit.
GP
--- In amibroker@xxxxxxxxxxxxxxx, "vlanschot" <vlanschot@xxx> wrote:
>
> GP,
>
> Thx for this. Interesting to see how you've created the second loop,
> which I haven't seen before, but then again I'm not a programmer.
>
> Am I correct in interpreting that it counts down both j and cnt until
> either or both hit their limit, i.e. j >= 0 && cnt > 0 ? Is there a
> limit as to how many "counters one can include in such a loop?
>
> Thx,
>
> PS
>
> --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@>
> wrote:
> >
> > Here's a function that I think will do what you want. I haven't
> tried
> > it though, so there could be mistakes.
> >
> > function MedianCount(data, period)
> > {
> > medo = Median(data, period);
> > medCnt = 0;
> > for (i = 0; i < BarCount; i++)
> > {
> > cnt = period;
> > for (j = i; j >= 0 && cnt > 0; j--, cnt--)
> > {
> > if (data[j] == medo[i])
> > medCnt[i]++;
> > }
> > }
> > return medCnt;
> > }
> >
> > If you only want to include periods with the full "period" bars,
> start
> > the 'i' loop at "period" rather than zero. The "j >= 0" part of the
> > inner loop could then be dispensed with as well.
> >
> > GP
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "meenhal" <meenhal@> wrote:
> > >
> > >
> > > Your kind attention to detail must be gratefully admired
> > >
> > >
> > > I used the following code
> > >
> > >
> > > medo = Median(C,65);
> > >
> > > medoo [0] = medo;
> > > for( i = 1; i < 65; i++ )
> > > { medoo[ i ] = medo; }
> > >
> > > freq=0;
> > >
> > > for( i = 1; i < 65; i++ )
> > > { if ( C[i] == medoo[ i ] )
> > >
> > > freq= freq+1 ; )
> > >
> > > First loop was an attempt to populate an array with the value of
> > > median so that then the array [c] could be compared with it. Well
> it
> > > did not work. The only option left is to actually find the
> numerical
> > > value of the median for each ticker in the first instance and
> then
> > > mechanically plug in that number in the second loop to find the
> > > frequency. This seems to be the dumbest way of programming. I am
> > > sure there must be a better way.
> > >
> > > More help please
> > > Ta
> > >
> > >
> > >
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@>
> > > wrote:
> > > >
> > > > Firstly, loops should go from zero to last-1 rather than one to
> > > last.
> > > The first FOR loop was to populate a dummy array with > Also, if
> > > you're going to use an absolute value for the limit (ie. the
> > > > 260 in your example) then you need to add checking for that
> being
> > > out
> > > > of range of the current chart. Arrays are only dimensioned up to
> > > > BarCount, whatever that is for the current chart, so if
> BarCount is
> > > > less than 260 in this case you'll have a problem.
> > > >
> > > > Finally, I don't think that logic will give you what you want.
> That
> > > > just checks, for each bar, if that bar is the same as the
> median of
> > > > the last 260 days and then adds them up, which is what I
> mentioned
> > > > before. I gather you want a value at each bar of the number of
> > > bars in
> > > > the last interval that match the median over the same interval.
> I
> > > > think you'll need nested loops for that, one to go through the
> > > bars,
> > > > and another inside it to count back through the previous
> interval
> > > (eg.
> > > > 260) number of bars, with appropriate range checking.
> > > >
> > > > Regards,
> > > > GP
> > > >
> > > >
> > > > --- In amibroker@xxxxxxxxxxxxxxx, "meenhal" <meenhal@> wrote:
> > > > >
> > > > > Thanks for you help
> > > > >
> > > > > I do not have much of a code....at least not for this segment
> > > > >
> > > > > Median is found using the standard AFL function
> > > > >
> > > > > I can now envisage the following pseudocode
> > > > >
> > > > > medd = median(c,260)
> > > > >
> > > > > for k = 1 to 260
> > > > > medo [k] = medd
> > > > > next
> > > > >
> > > > > freq = 0
> > > > > for j = 1 to 260
> > > > > if c[i] = medo[i] then feq = freq +1
> > > > > next
> > > > >
> > > > > addcolumn frequency
> > > > >
> > > > > Thanks for pointing the = and ==
> > > > >
> > > > >
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney"
> <gp.investment@>
> > > > > wrote:
> > > > > >
> > > > > > > if c [i] = median (close,60)
> > > > > >
> > > > > > That won't work because you're trying to compare a number
> with
> > > an
> > > > > > array of numbers, plus you need the relational equals
> operator
> > > (==)
> > > > > > rather than the assignment one (=). Read the median array
> into
> > > a
> > > > > > variable first and then use indexing on that:
> > > > > >
> > > > > > medc = median(close,60);
> > > > > > if (c[i] == medc[i])
> > > > > >
> > > > > > However, without seeing the rest of your code, I have a
> > > feeling you
> > > > > > still won't end up with what you're expecting. This is
> > > comparing
> > > > > the
> > > > > > current bar's close with the median of the previous 60 bars
> > > > > (counting
> > > > > > the current one), so if you only count those, it will give
> you
> > > a
> > > > > count
> > > > > > of how many bars had a close equal to the median of the
> last
> > > 60
> > > > > bars.
> > > > > > If at each bar you want a count of how many bars in the
> > > previous 60
> > > > > > were the same as the median over that range, then the
> > > calculation
> > > > > will
> > > > > > be different, probably involving nested loops.
> > > > > >
> > > > > > GP
> > > > > >
> > > > > >
> > > > > > --- In amibroker@xxxxxxxxxxxxxxx, "meenhal" <meenhal@>
> wrote:
> > > > > > >
> > > > > > > To set an entry point, I am trying to find price
> deviations
> > > from
> > > > > mean
> > > > > > > and median for different intervals.
> > > > > > >
> > > > > > > All is easy except: I can not determine the frequecy of
> > > median
> > > > > i.e.
> > > > > > > the number of occurences when the price was median during
> > > the
> > > > > inteval.
> > > > > > >
> > > > > > > median (close,260) will give me the median closing price
> for
> > > 260
> > > > > bars
> > > > > > > but it does not tell whether this prices occured 10 tims
> or
> > > 88
> > > > > times.
> > > > > > >
> > > > > > > I tried to use the for loop with if c [i] = median
> > > (close,60)
> > > > > but
> > > > > > > AFL's handling of arrays does not permit such an attepmt.
> > > > > > >
> > > > > > > Can anyone please help. Thanks in advance
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
Please note that this group is for discussion between users only.
To get 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
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|