Hello, AFL Editor, Tools->Code check & Profile.
Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: "brian_z111" <[email protected]> To: <[email protected]> Sent: Friday, June 12, 2009 1:57 AM Subject: [amibroker] Re: my vwap + standard deviation bands - very slow >> // NOTE: the code is SLOOOOWWWW...can someone help speed it up? > > How can a layperson measure the speed of execution of code ... say I want to > compare this code to another version to see if I have > improved the speed....perhaps there is some help somewhere in Howard's books > or the help manual and I haven't read them carefully > enough .. if anyone could give me a reference or a quick explanation that > would be good. > > --- In [email protected], "shakerlr" <ljr...@...> wrote: >> >> I just created the following code to calculate the VWAP + std deviation >> bands, but have found that it is extrememly slow. I >> posted the original code to the amibroker study site and was wondering if >> anyone has any suggestions to speed it up for display >> on 1 minute charts. >> >> Also, I noticed that if I DO NOT USE: >> SetBarsRequired( 1000, 0 ); >> >> The bands show up incorrect...(sometimes expanding/shrinkking as I scroll on >> the 1 minute chart) >> >> Note that I have about 100000 bars in my stock/ticker being studied...so >> that may be the reason it is slow... >> >> ---- >> /// VWAP code that also plots standard deviations...if you want a 3rd...it >> should be fairly simple to add >> // >> // NOTE: the code is SLOOOOWWWW...can someone help speed it up? >> // I tried my best, but can't really do much with the two for-loops... >> // >> // LarryJR >> >> >> SetBarsRequired( 1000, 0 ); >> >> // this stores true/false based on a new day... >> newday=Day() != Ref(Day(), -1); >> >> SumPriceVolume=0; >> totVolume=0; >> Vwap2=0; >> stddev=0; >> newdayindex=0; >> Variance =0; >> >> // we must use a loop here because we need to save the vwap for each bar to >> calc the variance later >> for( i= 0; i < BarCount; i++ ) >> { >> // only want to reset our values at the start of a new day >> if (newday[i]==True) >> { >> SumPriceVolume=0; >> totVolume=0; >> newdayindex=i; // this is the index at the start of a new day >> Variance=0; >> //Vwap2=0; >> } >> AvgPrice=(O[i] + H[i] + L[i] + C[i])/4; >> >> // Sum of Volume*price for each bar >> sumPriceVolume += AvgPrice * (Volume[i]); >> >> // running total of volume each bar >> totVolume += (Volume[i]); >> >> if (totVolume[i] >0) >> { >> Vwap2[i]=Sumpricevolume / totVolume ; >> Vwap2temp=Vwap2[i]; >> } >> >> // now the hard part...calculate the variance... >> // a separate calc from the start of each day - note it requires the vwap >> from >> above >> // also note, we calculate starting at the first bar in the new day to today >> to the curent bar >> Variance=0; >> for (j=newdayindex; j < i; j++) >> { >> AvgPrice=(O[j] + H[j] + L[j] + C[j])/4; >> Variance += (Volume[j]/totVolume) * >> (Avgprice-Vwap2temp)*(Avgprice-Vwap2temp); >> } >> stddev_1_pos[i]=Vwap2temp + sqrt(Variance); >> stddev_1_neg[i]=Vwap2temp - sqrt(Variance); >> >> stddev_2_pos[i]=Vwap2temp + 2*sqrt(Variance); >> stddev_2_neg[i]=Vwap2temp - 2*sqrt(Variance); >> } >> Plot (Vwap2,"VWAP2",colorDarkGrey, styleLine); >> Plot (stddev_1_pos,"VWAP_std+1",colorGrey50, styleDashed); >> Plot (stddev_1_neg,"VWAP_std-1",colorGrey50, styleDashed); >> Plot (stddev_2_pos,"VWAP_std+2",colorGrey40, styleDashed); >> Plot (stddev_2_neg,"VWAP_std-2",colorGrey40, styleDashed); >> > > > > > ------------------------------------ > > **** IMPORTANT PLEASE READ **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > TO GET TECHNICAL SUPPORT send an e-mail directly to > SUPPORT {at} amibroker.com > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at > http://www.amibroker.com/feedback/ > (submissions sent via other channels won't be considered) > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > Yahoo! Groups Links > > >
