PureBytes Links
Trading Reference Links
|
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
<*> 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/
|