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

Re: [amibroker] Re: my vwap + standard deviation bands - very slow



PureBytes Links

Trading Reference Links

Hello,

AFL Editor,
Tools->Code check & Profile.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "brian_z111" <brian_z111@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
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 amibroker@xxxxxxxxxxxxxxx, "shakerlr" <ljr500@xxx> 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
>
>
>



------------------------------------

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

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