* Fixed the calculation of the opening bar
* Added two additional deviation bands
* Added horizontal line of previous close
This update adds support for two more sets of bands, allowing you to show 1st, 2nd, and 3rd deviations. These extra bands are disabled by default as to not crowd the chart, but are shown in the screenshot and can be enabled under the indicator settings. The numbers 3.09 and 1.28 were recommended by coondawg71 in a comment on the original version. The previous version started calculating on a change of day, instead of a change of session. It now correctly calculates the when a new session begins. The last addition allows you to plot the previous day's close. The is where price has found balance, which makes these levels significant among the noise.
Thanks to coondawg71 for all suggestions.
study("VWAP Stdev Bands v2", overlay=true) devUp1 = input(2, title="Stdev above (1)") devDn1 = input(2, title="Stdev below (1)") devUp2 = input(1.28, title="Stdev above (2)") devDn2 = input(1.28, title="Stdev below (2)") devUp3 = input(3.09, title="Stdev above (3)") devDn3 = input(3.09, title="Stdev below (3)") showDv2 = input(false, type=bool, title="Show second group of bands?") showDv3 = input(false, type=bool, title="Show third group of bands?") showPrevVWAP = input(false, type=bool, title="Show previous VWAP close") start = security(tickerid, "D", time) newSession = iff(change(start), 1, 0) vwapsum = iff(newSession, hl2*volume, vwapsum+hl2*volume) volumesum = iff(newSession, volume, volumesum+volume) v2sum = iff(newSession, volume*hl2*hl2, v2sum+volume*hl2*hl2) myvwap = vwapsum/volumesum dev = sqrt(max(v2sum/volumesum - myvwap*myvwap, 0)) plot(myvwap, title="VWAP", color=green) plot(myvwap + devUp1 * dev, title="VWAP Upper", color=red) plot(myvwap - devDn1 * dev, title="VWAP Lower", color=red) plot(showDv2 ? myvwap + devUp2 * dev : na, title="VWAP Upper (2)") plot(showDv2 ? myvwap - devDn2 * dev : na, title="VWAP Lower (2)") plot(showDv3 ? myvwap + devUp3 * dev : na, title="VWAP Upper (3)", color=teal) plot(showDv3 ? myvwap - devDn3 * dev : na, title="VWAP Lower (3)", color=teal) prevwap = iff(newSession, myvwap, prevwap) plot(showPrevVWAP ? prevwap : na, style=circles, color=close > prevwap ? green : red)
For example on the /ES today, the markets were opened from Sunday 6pm EST until Monday 1pm EST. The last time my vwap bands reset was May 24th at 6pm.
On non-holidays, it always resets at 6:00pm EST... so the half day close (1pm to 5pm EST) on May 25th messed up the band calculation and it did not reset :(