[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Median and its Frequency



PureBytes Links

Trading Reference Links

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@xxx> 
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/