VWAP Deviation, Z Score with Chart and lower indicators

H

horserider

Active member
Warehouse
As asked for here is the VWAP deviations in several forms.



Chart study. Pink is VWAP and cyan is 200 period Std Dev.

Code:
#
# TD Ameritrade IP Company, Inc. (c) 2018-2019
#

input length = 200;

def zeros = vwap -vwap[2];
def filter = reference EhlersSuperSmootherFilter(price = zeros, "cutoff length" = 0.5 * length);
def rms = Sqrt(Average(Sqr(filter), length));
def scaledFilter = filter / rms;
def alpha = 5 * AbsValue(scaledFilter) / length;
def deviationScaledMovAvg = CompoundValue(1, alpha * vwap + (1 - alpha) * deviationScaledMovAvg[1], vwap);

plot DSMA = deviationScaledMovAvg;
DSMA.SetDefaultColor(GetColor(1));

First lower study. VWAP deviation at 20 period and 200 period lengths.

Code:
declare lower;

input price = close; 
input length = 20;

def SMA = Average(vwap[0], length);

plot DEV =(vwap/sma -1 )*100;

plot pdl = .5;
plot ndl = -.5;
plot zero = 0;

DEV.SetDefaultColor(GetColor(1));

input price2 = close; 
input length2 = 200;

def SMA2 = Average(vwap[0], length2);

plot DEV2 =(vwap/SMA2 -1 )*100;

DEV2.SetDefaultColor(GetColor(2));

Middle lower study. VWAP Z Score.

Code:
# Intraday VWAP Zscore
# Mobius
# 06.10.2019 Chat Room Request

declare lower;
def RTH = GetTime() >= RegularTradingStart(GetYYYYMMDD()) and
          GetTime() <= RegularTradingEnd(GetYYYYMMDD());
def n = if RTH and !RTH[1]
           then 1
           else if RTH
           then n[1] + 1
           else n[1];
def Avg = (fold i = 0 to n
           with s
           do s + getValue(close, i)) / n;
def VWAP_ = (fold ii = 0 to n
            with ss
            do ss + getValue(vwap, ii)) / n;
def StDev = Sqrt((fold iii = 0 to n
                  with sss = 0
                  do sss + Sqr(Avg - getValue(close, iii))) / n);
plot Zscore = (close - VWAP_) / StDev;
plot "0" = if isNaN(close) then double.nan else 0;
"0".SetDefaultColor(Color.white);
plot "1SD" = if isNaN(close) then double.nan else 1;
"1SD".SetDefaultColor(Color.Green);
plot "2SD" = if isNaN(close) then double.nan else 2;
"2SD".SetDefaultColor(Color.Green);
plot "-1SD" = if isNaN(close) then double.nan else -1;
"-1SD".SetDefaultColor(Color.Red);
plot "-2SD" = if isNaN(close) then double.nan else -2;
"-2SD".SetdefaultColor(Color.Red);
AddCloud(0, Zscore, color.red, color.green);
# End Code
Bottom study. Just simple VWAP deviation.

Code:
declare lower;

input price = close; 
input length = 20;

def vwd = Average(vwap[0], length);


plot DEV =(vwap/vwd -1 )*10;

plot pdl = .05;
plot ndl = -.05;
plot zero = 0;

Alert(DEV crosses below ndl, "", Alert.BAR, Sound.Bell);
Alert(DEV crosses above pdl, "", Alert.BAR, Sound.Bell);


DEV.SetDefaultColor(GetColor(1));
 
Last edited:
AGD

AGD

New member
Thanks, I have question.
In bottom study, you using this.
def allDev = STDevAll(close, 252);
plot DEV =(price/vwd -1 ) * 10;

I don't see you using allDev and why (price/vwd -1 ) * 10. I don't see in other studies.
 
H

horserider

Active member
Warehouse
@AGD Thanks for pointing this out. I did those studies a while ago when just starting thinkscript. Do not remember why I put allDev in as it does nothing. Redid the code to correct errors. Hope it passes inspection now.
 
  • Haha
Reactions: AGD

Top