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


Reply via email to