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

[amibroker] Re: VERY slow code



PureBytes Links

Trading Reference Links


Fred --
Took me a little while to get back to you and say THANKS!
I tried ED's suggested code, a few messages before yours, and it 
solved my SLOW problem and helped me get a better understanding of 
loops.

PSO/IO, not no, yes!
Now, I just started looking at your Portfolio.afl, without any 
looping, and that really got me thinking.  Lots of other great stuff 
in that code.  Looks so clean and straight forward (not Kludgy like 
my stuff).
-- Keith

--- In amibroker@xxxxxxxxxxxxxxx, "Fred" <ftonetti@xxxx> wrote:
> 
> Keith,
> 
> ALL calcs for statistics like UI & MDD should be able to be done 
> with NO looping.
> 
> I think you are a PSO/IO user, no ?
> 
> See the equity curve indicator contained therein for these calcs.
> 
> Fred
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "keithmccombs" <kmccombs@xxxx> 
> wrote:
> > 
> > The following code displays the %UI and %MaxDD over a period of 
> time 
> > defined by the 'marker' poles.  The default (no marker poles 
> > present), displays %UI and %MaxDD over all bars in the data base.
> > 
> > This code works, but is terribly slow.  It is fine for monthly 
> bars, 
> > but with 15 years of daily bars you will think it died (in fact 
> Task 
> > Manager will think so too).
> > 
> > I'm pretty sure the problem is with the arrays in the 'for' loop, 
> but 
> > don't know what to do about it.  
> > 
> > Any and all help and suggestions are appreciated.
> > TIA.
> > -- Keith
> > =============================
> > // just between the poles
> > Count = 0;
> > SumR2 = 0;
> > ddmax = 0;
> > ddmaxdate = 0;
> > _highest = 0;
> > ratio = 0;
> > adate = DateTime();
> > 
> > for(i = BeginValue(BarIndex())+1; i <= EndValue(BarIndex()); i++){
> >   _highest = HHV(H, BarIndex() - BeginValue(BarIndex()));
> >   ratio[i] = (_highest[i] - L[i])/_highest[i];
> >   if(ratio[i] > ddmax[i-1]){
> >     ddmax[i] = ratio[i];
> >     ddmaxdate[i] = adate[i];
> > 
> >   }else{
> >     ddmax[i] = ddmax[i-1];
> >     ddmaxdate[i] = ddmaxdate[i-1];
> >   }
> >   SumR2 = ratio[i]^2 + Ref(SumR2[i], -1);
> >   Count++;
> > }
> > 
> > ui = 100 * (SumR2[i-1]/Count)^0.5;
> > Maxdd = 100 * ddmax[i-1];
> > Maxdddate = ddmaxdate[i-1];
> > 
> > PlotOHLC(O,H,L,C,"",colorBlack,styleCandle);
> > Value = SelectedValue(C);
> > Title = Name() + " = " + Value
> >     + "      %UI = " + ui + "        Max%DD = " + Maxdd
> >     + "  on  " + NumToStr(Maxdddate, formatDateTime);





------------------------ Yahoo! Groups Sponsor --------------------~--> 
In low income neighborhoods, 84% do not own computers.
At Network for Good, help bridge the Digital Divide!
http://us.click.yahoo.com/EpW3eD/3MnJAA/cosFAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

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

<*> 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/