

Volume Zone Oscillator (VZO) by Waleed Aly Khalil 


All,
The 2008/9 edition of the IFTA Journal contains an indicator developed by Waleed Aly Khalil called the Volume Zone
Oscillator or VZO for short. The article that Waleed wrote explains the concepts behind the use of this indicator.
The Journal can be found at the following link: http://www.ifta.org/public/files/journal/d_ifta_journal_09.pdf
The article is on page 18 of this pdf file.
The Metastock formula is below:


Volume Zone Oscillator (VZO)
40;40;
tp:=Input("Periods",2,99,14);{time periods in calculation}
change:=ROC(CLOSE,1,$);
R:=If(change>0,VOLUME,VOLUME);
VP:=Mov(R,tp,E);
TV:=Mov(V,tp,E);
VZO:= (VP/TV)*100;
VZO;{end}




Enjoy,
Preston
==============================
Hi Preston
Here's a MultiFrame version of VZO for weekly / monthly / quarterly values.
Regards
Roy
www.metastocktips.co.nz 

Volume Zone Oscillator (VZO)  MultiFrame D
{Volume Zone Oscillator}
{Published in 2008/2009 IFTA
Journal by Waleed Aly Khalil}
{Requires Equis Forum DLL  http://forum.equis.com/files}
{Adapted to MultiFrame format by Roy Larsen}
{User settings}
N:=Input("MultiFrame D VZO, Periods",2,99,10);
J:=Input("Months per Frame, 0=Weekly",0,12,0);
J:=If(J<5 OR Mod(J,3)=0 AND (J<>9),Int(J),1);
G:=Input("Endofweek Offset in Days",0,6,0);
Q:=Input("Mode, 0=Static 1=Dynamic 2=Delayed",0,2,1);
{Update on last bar, new bar or new frame}
{Timing signals}
{Day counter by metastocktools.com}
D:=DayOfWeek();M:=Month();Y:=Year();
Z:=Cum(1);F:=Rnd(Life(291231));
M:=If(J=0,ValueWhen(1,Z=1,F+DG1)F,
(YValueWhen(1,Z=1,Y))*12+M);
I:=If(J=0,Int(M/7),Int((M1)/Max(1,J)));
I:=I>ValueWhen(2,1,I);
G:=LastValue(J<0 OR Lowest(Sum(I>0,5))=5);
I:=ExtFml("Forum.Sum",I,1);M:=G+I;
F:=ExtFml("Forum.Sum",Ref(I,1),1)*(M=0)*(Z>1)+G;
B:=LastValue(Z);A:=B1=Z;B:=B=Z;
F:=F+B*(Q=0)*(J=0)*(D=5);
J:=If(F,1,(Alert(F,2)=0)*M*2*(Z>1));
J:=If(A+LastValue(J)>2 OR B+(Q=1)=2,1,J);
J:=If(G,1,If(Q=2,M*2,J));
{Frame CLOSE}
K:=ValueWhen(1,J,If(J=1,C,ValueWhen(2G,1,C)));
{Frame VZO}
Change:=KValueWhen(2,J,K);
A:=BarsSince(M+(Z=1))+1;
B:=ExtFml("Forum.Sum",V,A);
U:=ValueWhen(1,J,If(J=1,B,ValueWhen(2G,1,B)));
R:=If(Change>0,U,U);
Q:=If(J,N,Pwr(10,10));
VP:=ExtFml("Forum.Mov",R,Q,E);
TV:=ExtFml("Forum.Mov",U,Q,E);
40; 40;
ValueWhen(1,Cum(J>0)>N,100*VP/TV);




==============================
Thanks Preston. I thought he detailed some of the systems on page 28 through 32 with results. The only one he did not give details about is the last one in which he combines the five or six methods together.
==============================
Below are the three trading tactics outline by Waleed.
I had actually been following the indicator on a blog and that was where I was introduced to it. The blogger uses the ADX(14) in all three trading tactics and I noticed that Waleed had used it only in the sideways market. That may be something that you may wish to include in the trending markets. Something else to consider is that the ADX that Equis packaged does have a flaw which shows up at the longer lookback periods. At a lookback of 14 days I think you will be okay.
Finally, what I wrote is just an idea to help visualize the methodology of the system. I am sure that the programming can be done differently if you like.
Preston
{VZO Tactic One}
{Sideways Trending Market}
VZOvol:=mov(VOLUME,15,s) > 25000;
VZOside:=ADX(14) < 18;
VZOT1buy:= Cross(Fml( "Volume Zone Oscillator (VZO)"),15);
VZOT1sell:=Cross(5, Fml( "Volume Zone Oscillator (VZO)"))*1;
If(VZOvol AND VZOside,VZOT1buy,0);
If(VZOvol AND VZOside,VZOT1sell,0);
{VZO Tactic Two}
{Uptrending Market}
VZOvol:=mov(VOLUME,15,s) > 25000;
VZOuptrend:=close > mov(close,60,e);
VZOT2buy1:= Cross(Fml( "Volume Zone Oscillator (VZO)"),20);
VZOT2buy1:= Cross(Fml( "Volume Zone Oscillator (VZO)"),40)*2;
VZOT2sell:=Cross(40, Fml( "Volume Zone Oscillator (VZO)"))*1;
If(VZOvol AND VZOuptrend,VZOT2buy1,0);
If(VZOvol AND VZOuptrend,VZOT2buy2,0);
If(VZOvol AND VZOuptrend,VZOT2sell,0);
{VZO Tactic Three}
{Downtrending Market}
VZOvol:=mov(VOLUME,15,s) > 25000;
VZOdntrend:=close < mov(close,60,e);
VZOT3buy1:= Cross(Fml( "Volume Zone Oscillator (VZO)"),45);
VZOT3sell1:=Cross(0, Fml( "Volume Zone Oscillator (VZO)"))*1;
VZOT3sell2:= Cross(Fml( "Volume Zone Oscillator (VZO)"),40)*2;
If(VZOvol AND VZOdntrend,VZOT3buy1,0);
If(VZOvol AND VZOdntrend,VZOT3sell1,0);
If(VZOvol AND VZOdntrend,VZOT3sell2,0); 

Source / From: 
TOP 
EquisMetaStock Group 

