//VWAP CODE - updated
SetChartOptions(2,chartWrapTitle);
SetChartBkColor(ParamColor("Background", colorLightGrey)) ;
// Author: Pratap Balakrishnan
// Copyright: All rights reserved. Not to be circulated or shared or posted on websites without the author's written permission.
// email id: [email][email protected][/email]
//
/*
The VWAP for a stock is calculated by adding the dollars traded for every
transaction in that stock ("price" x "number of
shares traded") and dividing the total shares traded. A VWAP is computed
from the Open of the market to the market Close, AND is
calculated by Volume weighting all transactions during this time period
*/
Layer = Param("Layer", 0, -5, 5, 1) ;
showprice = ParamToggle("Show Price", "No|Yes", 0) ;
if (showprice)
{
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} " + EncodeColor( colorGreen ) + " Open %g," + EncodeColor( colorBlue ) + " Hi %g, " + EncodeColor( colorRed ) + " Lo %g, " + EncodeColor( colorBlack ) + " Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", colorBlack, styleNoTitle | styleCandle,0,0,0,Layer );
//Peaking Volumes
HiVolume = IIf(V > (2 * MA(V,10)), True, False);
PlotShapes(shapeSmallCircle * HiVolume, IIf(C > O, colorBlack, colorWhite), 0, (O+C)/2, 0);
ToolTip = "Open = " + O + "\nHigh = " + H + "\nLow = " + L + "\nClose = " + C ;
}
SetChartBkColor(colorLightGrey) ;
turnvwapoff = ParamToggle("VWAP All OFF", "No|Yes", 0) ;
showintitle = ParamToggle("Show in Title", "No|Yes", 0) ;
Filterdaych = ParamToggle("Filter Day Change Connections", "No|Yes", 1) ;
Vwapmode = ParamList("VWAP mode", "As Per Param|Only VWAP|VWAP+SD|VWAP+2SD", 0) ;
showvwap = ParamToggle("Show VWAP", "No|Yes", 1) ;
showvwap1sd = ParamToggle("Show VWAP 1SD", "No|Yes", 1) ;
showvwap2sd = ParamToggle("Show VWAP 2SD", "No|Yes", 1) ;
showvwap3sd = ParamToggle("Show VWAP 3SD", "No|Yes", 0) ;
showvwapband = ParamToggle("Show VWAP Trend Bands", "No|Yes", 0) ;
showvwapswband = ParamToggle("Show VWAP Sideways Bands", "No|Yes", 1) ;
showprevdayvals = ParamToggle("Show Prev Day Values", "No|Yes", 1) ;
showprev2dayvals = ParamToggle("Show Prev 2 Day Values", "No|Yes", 1) ;
showprevdayband = ParamToggle("Show Prev Day Bands", "No|Yes", 1) ;
showextprevday = ParamToggle("Show Extension", "No|Yes", 1) ;
showextbandprevday = ParamToggle("Show Extension Band", "No|Yes", 1) ;
extend = Param("Extend", 10, 0, 100, 1) ;
Vwaplayer = Param("VWAP Layer", -3, -5, 5, 1) ;
extlayer = Param("Extend Layer", -2, -5, 5, 1) ;
MAwidthper = Param("MA Width %", 0.005, 0, 10, 1) ;
SDwidthper = Param("SD Width %", 0.005, 0, 10, 1) ;
MAwidth = SelectedValue(C) * MAwidthper /100 ;
SDwidth = SelectedValue(C) * SDwidthper /100 ;
showtradearr = ParamToggle("Trade Arrow", "No|Yes", 1) ;
showtext = ParamToggle("Show Text", "No|Yes", 1) ;
Clrtext = ParamColor("Color Text", colorBlack) ;
showvahvaltext = ParamToggle("Show VAH-VAL Text", "No|Yes", 1) ;
Onlyvwap = False ;
withsd = False ;
with2sd = False ;
switch (Vwapmode)
{
// case "As Per Param":
// break ;
case "Only VWAP" :
Onlyvwap = True ;
break ;
case "VWAP+SD" :
Onlyvwap = True ;
withsd = True;
break ;
case "VWAP+2SD" :
Onlyvwap = True ;
withsd = True;
with2sd = True;
break ;
}
if (Onlyvwap)
{
if (withsd)
showvwap1sd = True;
else
showvwap1sd = False ;
if (with2sd)
showvwap2sd = True;
else
showvwap2sd = False ;
showvwap3sd = False ;
showvwapband = False ;
showvwapswband = False ;
showprevdayvals = False ;
showprev2dayvals = False ;
showprevdayband = False ;
showvwapband = False ;
// showtradearr = False ;
showcomm = False ;
showtext = withsd ;
}
stylelabel = 0 ;
if (showtext)
stylelabel = styleNoLabel ;
styletitle = 0 ;
if (NOT showintitle)
styletitle = styleNoTitle ;
if (NOT turnvwapoff)
{
P = (H + L + C) / 3;
nd = Day() != Ref(Day(),-1) ;
Bars_so_far_today = 1 + BarsSince( nd);
TodayVolume = Sum(V,Bars_so_far_today);
CumV = Sum(V,Bars_so_far_today);
CumVWP = Sum (P * V, Bars_so_far_today );
VWAP = CumVWP / CumV;
VWAPsd = IIf(Ref(nd, 1), 0, VWAP);
CumVsd = IIf(Ref(nd, 1), 0, CumV);
S = Sum(Ref(CumVsd, -1) * V * (P - Ref(VWAPsd, -1))^2 / CumV,Bars_so_far_today);
Variance = S / CumV;
SD = sqrt(Variance);
Vwapm1 = VWAP - SD ;
Vwapp1 = VWAP + SD ;
Vwapm2 = VWAP -2*SD ;
Vwapp2 = VWAP +2*SD ;
Vwapm3 = VWAP -3*SD ;
Vwapp3 = VWAP +3*SD ;
dt = DateTime() ;
dtnum = DateTimeConvert(0, dt) ;
newdt = dtnum != Ref(dtnum, -1) ;
Lastbar = H-H ;
if (Filterdaych)
Lastbar = dtnum != Ref(dtnum, 1) ;
RefVWAP = VWAP;
RefVwapm1 = Vwapm1;
RefVwapp1 = Vwapp1 ;
RefVwapm2 = Vwapm2;
RefVwapp2 = Vwapp2;
RefVwapm3 = Vwapm3;
RefVwapp3 = Vwapp3;
Clrvwap = ParamColor("Color VWAP",colorBlack) ;
Clrvwapm1 = ParamColor("Color VWAP -1SD", colorGreen) ;
Clrvwapp1 = ParamColor("Color VWAP +1SD", colorRed) ;
strnday = "day";
if (showvwap)
{
// Vwapstyle = 0 ;
// if (ndays > 1)
Vwapstyle = styleNoRescale ;
Plot(IIf(Lastbar, Null, RefVWAP), "VWAP"+strnday, Clrvwap , styleThick|stylelabel|Vwapstyle, Null, Null, 0, 1);
if (MAwidth > 0)
PlotOHLC(IIf(Lastbar, Null, RefVWAP+MAwidth), IIf(Lastbar, Null, RefVWAP+MAwidth), IIf(Lastbar, Null, RefVWAP-MAwidth), IIf(Lastbar, Null, RefVWAP-MAwidth), "",Clrvwap, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, 1 ) ;
}
Plot(SD, "SD", colorBlack, styleNoDraw|styleNoLabel|styleNoRescale) ;
if (showvwap1sd)
{
Plot(IIf(Lastbar, Null, RefVwapm1), "-1SD"+strnday, Clrvwapm1, styleThick + styleTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
Plot(IIf(Lastbar, Null, RefVwapp1), "+1SD"+strnday, Clrvwapp1, styleThick + styleTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
if (SDwidth > 0)
PlotOHLC(IIf(Lastbar, Null, RefVWAPm1+SDwidth), IIf(Lastbar, Null, RefVWAPm1+SDwidth), IIf(Lastbar, Null, RefVWAPm1-SDwidth), IIf(Lastbar, Null, RefVWAPm1-SDwidth), "",Clrvwapm1, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, 0 ) ;
if (SDwidth > 0)
PlotOHLC(IIf(Lastbar, Null, RefVWAPp1+SDwidth), IIf(Lastbar, Null, RefVWAPp1+SDwidth), IIf(Lastbar, Null, RefVWAPp1-SDwidth), IIf(Lastbar, Null, RefVWAPp1-SDwidth), "",Clrvwapp1, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, 0 ) ;
}
if (showvwap2sd)
{
Plot(IIf(Lastbar, Null, RefVwapm2), "-2SD"+strnday, ParamColor("Color VWAP -2SD", colorSeaGreen), styleThick + styleTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
Plot(IIf(Lastbar, Null, RefVwapp2), "+2SD"+strnday, ParamColor("Color VWAP +2SD", colorOrange), styleThick + styleTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
if (SDwidth > 0)
PlotOHLC(IIf(Lastbar, Null, RefVWAPm2+SDwidth), IIf(Lastbar, Null, RefVWAPm2+SDwidth), IIf(Lastbar, Null, RefVWAPm2-SDwidth), IIf(Lastbar, Null, RefVWAPm2-SDwidth), "",ParamColor("Color VWAP -2SD", colorSeaGreen), styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, 0 ) ;
if (SDwidth > 0)
PlotOHLC(IIf(Lastbar, Null, RefVWAPp2+SDwidth), IIf(Lastbar, Null, RefVWAPp2+SDwidth), IIf(Lastbar, Null, RefVWAPp2-SDwidth), IIf(Lastbar, Null, RefVWAPp2-SDwidth), "",ParamColor("Color VWAP +2SD", colorOrange), styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, 0 ) ;
}
if (showvwap3sd)
{
Plot(IIf(Lastbar, Null, RefVwapm3), "-3SD"+strnday, ParamColor("Color VWAP -3SD", colorRed), styleThick + styleNoTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
Plot(IIf(Lastbar, Null, RefVwapp3), "+3SD"+strnday, ParamColor("Color VWAP +3SD", colorBlue), styleThick + styleNoTitle + stylelabel+styleNoRescale, Null, Null, 0, 1);
}
if (showvwapband)
{
PlotOHLC(IIf(Lastbar, Null, RefVwapm1), IIf(Lastbar, Null, RefVwapm1), IIf(Lastbar, Null, RefVwapm2), IIf(Lastbar, Null, RefVwapm2), "",ParamColor("Down Trend", colorRose), styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
PlotOHLC(IIf(Lastbar, Null, RefVwapp1), IIf(Lastbar, Null, RefVwapp1), IIf(Lastbar, Null, RefVwapp2), IIf(Lastbar, Null, RefVwapp2), "",ParamColor("Up Trend", colorSkyblue), styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
}
// if (showvwapswband)
// {
// PlotOHLC(RefVwapm1, RefVwapm1, RefVwapp1, RefVwapp1, "",ParamColor("Sideways Color", colorLavender), styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
// }
Avgp = (H+L+C)/3 ;
if (showtradearr)
{
Buy = Avgp >= Refvwapp1 ;
Short = Avgp <= Refvwapm1 ;
Sell = Avgp <= Refvwapp1 ;
Cover = Avgp >= Refvwapm1 ;
Buy = ExRem(Buy, Short OR Sell) ;
Short = ExRem(Short, Buy OR Cover) ;
sdp1touch = False ; // Ht >= Refvwapp1 ;
sdm1touch = False ; //Lt >= Refvwapm1 ;
Sell = ExRem(Sell, Buy OR sdp1touch ) ;
Cover = ExRem(Cover, Short OR sdm1touch ) ;
PlotShapes(Buy*shapeUpArrow, colorBlue, 0, H, 12) ;
PlotShapes(Short*shapeDownArrow, colorRed, 0, L, 12) ;
PlotShapes(Cover*shapeUpArrow, colorBlack, 0, H, 12) ;
PlotShapes(Sell*shapeDownArrow, colorBlack, 0, L, 12) ;
}
shift = Param("Shift", 0, -1, 0, 1) ;
prevdayvalue = prevdayvwap = ValueWhen(Ref(newdt,1), RefVWAP, 1) ;
prevdayvaluelow = prevdayvwapm1 = ValueWhen(Ref(newdt,1), RefVwapm1, 1) ;
prevdayvaluehigh = prevdayvwapp1 = ValueWhen(Ref(newdt,1), RefVwapp1, 1) ;
prevdayvwapm2 = ValueWhen(Ref(newdt,1), RefVwapm2, 1) ;
if (showvwapswband)
{
swclr = ParamColor("Sideways Color", colorLavender) ;
upclr = ParamColor("Bull Bias Color", colorSkyblue) ;
dnclr = ParamColor("Bear Bias Color", colorRose) ;
bandclr = IIf(Refvwap < prevdayvaluelow, dnclr, IIf(Refvwap > prevdayvaluehigh, upclr, swclr)) ;
PlotOHLC(IIf(Lastbar, Null, RefVwapp1), IIf(Lastbar, Null, RefVwapp1), IIf(Lastbar, Null, RefVwap), IIf(Lastbar, Null, RefVwap), "",bandclr, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
PlotOHLC(IIf(Lastbar, Null, RefVwap), IIf(Lastbar, Null, RefVwap), IIf(Lastbar, Null, RefVwapm1), IIf(Lastbar, Null, RefVwapm1), "",bandclr, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
}
if (showprevdayvals OR showextprevday)
{
if (shift == -1)
{
prevdayvaluehigh = prevdayvwap;
prevdayvalue = prevdayvwapm1 ;
prevdayvaluelow = prevdayvwapm2 ;
}
if (showprevdayvals) //(NOT showextprevday)
{
Plot(IIf(Lastbar, Null, prevdayvalue), "Prev VWAP", Clrvwap, styleDots|styleNoRescale+stylelabel|styleNoTitle) ;
Plot(IIf(Lastbar, Null, prevdayvaluelow), "VAL"+strnday, Clrvwapm1, styleDots|styleNoRescale+stylelabel+styleNoTitle) ;
Plot(IIf(Lastbar, Null, prevdayvaluehigh), "VAH"+strnday, Clrvwapp1, styleDots|styleNoRescale+stylelabel+styleNoTitle) ;
}
Clrprevdayband = ParamColor("Prev Day Band Color", colorLightYellow);
if (showprevdayband)
{
// if (NOT showextprevday)
PlotOHLC(IIf(Lastbar, Null, prevdayvaluelow), IIf(Lastbar, Null, prevdayvaluelow), IIf(Lastbar, Null, prevdayvaluehigh), IIf(Lastbar, Null, prevdayvaluehigh), "",Clrprevdayband, styleCloud|styleNoLabel|styleNoRescale, 0, 0, 0, Vwaplayer ) ;
}
if (showprev2dayvals)
{
prev2dayvalue = prev2dayvwap = ValueWhen(Ref(newdt,1), RefVWAP, 2) ;
prev2dayvaluelow = prev2dayvwapm1 = ValueWhen(Ref(newdt,1), RefVwapm1, 2) ;
prev2dayvaluehigh = prev2dayvwapp1 = ValueWhen(Ref(newdt,1), RefVwapp1, 2) ;
prev2dayvwapm2 = ValueWhen(Ref(newdt,1), RefVwapm2, 2) ;
// if (NOT showextprevday)
{
Plot(IIf(Lastbar, Null, prev2dayvalue), "2day prev VWAP"+strnday, Clrvwap, styleStaircase|styleThick|stylelabel|styleNoRescale+styleNoTitle) ;
Plot(IIf(Lastbar, Null, prev2dayvaluelow), "2day VAL"+strnday, Clrvwapm1, styleStaircase|styleThick|stylelabel|styleNoRescale+styleNoTitle) ;
Plot(IIf(Lastbar, Null, prev2dayvaluehigh), "2day VAH"+strnday, Clrvwapp1, styleStaircase|styleThick|stylelabel|styleNoRescale+styleNoTitle) ;
}
}
if (showextprevday)
{
x0 = BarCount - (extend+1) ;
x1 = BarCount -1 ;
Hdlast = SelectedValue(prevdayvaluehigh ) ;
Ldlast = SelectedValue(prevdayvaluelow ) ;
Hplot = LineArray(x0, Hdlast, x1, Hdlast) ;
Plot(Hplot, "", colorOrange, styleLine|styleNoLabel|styleNoRescale, 0,0,extend, extlayer) ;
LPlot = LineArray(x0, Ldlast, x1, Ldlast) ;
Plot(LPlot, "", colorGreen, styleLine|styleNoLabel|styleNoRescale, 0,0,extend, extlayer) ;
if (showextbandprevday)
PlotOHLC(HPlot, HPlot, LPlot, LPlot, "", Clrprevdayband, styleCloud|styleNoLabel|styleNoRescale, 0,0,extend,extlayer ) ;
}
}
if (showtext)
{
PlotText(NumToStr(RefVwapp1[BarCount-1], 1.1), BarCount+1, RefVwapp1[BarCount-1],Clrtext) ;
PlotText(NumToStr(RefVwapm1[BarCount-1], 1.1), BarCount+1, RefVwapm1[BarCount-1],Clrtext) ;
PlotText(NumToStr(RefVwap[BarCount-1], 1.1), BarCount+1, RefVwap[BarCount-1],Clrtext) ;
PlotText(NumToStr(RefVwapp2[BarCount-1], 1.1), BarCount+1, RefVwapp2[BarCount-1],Clrtext) ;
PlotText(NumToStr(RefVwapm2[BarCount-1], 1.1), BarCount+1, RefVwapm2[BarCount-1],Clrtext) ;
}
if (showvahvaltext)
{
PlotText(NumToStr(prevdayvalue[BarCount-1], 1.1), BarCount+1, prevdayvalue[BarCount-1],Clrtext) ;
PlotText(NumToStr(prevdayvaluelow[BarCount-1], 1.1), BarCount+1, prevdayvaluelow[BarCount-1],Clrtext) ;
PlotText(NumToStr(prevdayvaluehigh[BarCount-1], 1.1), BarCount+1, prevdayvaluehigh[BarCount-1],Clrtext) ;
}
}