SI
SI
discoversearch

We've detected that you're using an ad content blocking browser plug-in or feature. Ads provide a critical source of revenue to the continued operation of Silicon Investor.  We ask that you disable ad blocking while on Silicon Investor in the best interests of our community.  If you are not using an ad blocker but are still receiving this message, make sure your browser's tracking protection is set to the 'standard' level.
Strategies & Market Trends : TA-Quotes Plus

 Public ReplyPrvt ReplyMark as Last ReadFilePrevious 10Next 10PreviousNext  
To: Jan Robert Wolansky who wrote (9058)3/20/1999 6:14:00 PM
From: TechTrader42   of 11149
 
Jan: This is a QP2 scan translation of a Metastock version of the AIQ
Volatility Indicator. I owe a lot to Jeff Grover and Bob Jagow for
their earlier work on square roots and logs. I've left a lot of junk
in the output to show how the value of the volatility index is
gradually built. Maybe you can let us know how you use the indicator.
Thanks.

//AIQ Volatility Indicator, translated for QP2 by Brooke
//input="volvol.lst";
output="volatility.lst";
float x,xx,n,n3,n5,n7,n9,n11,n13,n15,lnx,sumlnx,sumlnxlnx,
sumlnxsumlnx,formula1,formula2,in,out,fx,xxx;
integer i,j;
sumlnx:=0;
sumlnxlnx:=0;
for i=-20 to 0 step 1 do
x:=close(i)/close(i-1);

if x >= 100000 then xx := x /100000; else
if x >= 10000 then xx := x / 10000; else
if x >= 1000 then xx := x / 1000; else
if x >= 100 then xx := x / 100; else
if x >= 10 then xx := x / 10; else
xx := x; endif; endif; endif; endif; endif;

n :=(xx-1)/(xx+1); n3 :=n*n*n; n5 :=n3*n*n;
n7 :=n5*n*n; n9 :=n7*n*n; n11 :=n9*n*n;
n13 :=n11*n*n; n15 :=n13*n*n;

lnx := 2*(n+n3/3+n5/5+n7/7+n9/9+n11/11+n13/13+n15/15); //Log(C/Ref(C,-1))

if x >= 100000 then lnx := lnx + 11.51293; else
if x >= 10000 then lnx := lnx + 9.21034; else
if x >= 1000 then lnx := lnx + 6.90776; else
if x >= 100 then lnx := lnx + 4.60517; else
if x >= 10 then lnx := lnx + 2.30258;
endif; endif; endif; endif; endif;

sumlnx:= sumlnx+lnx; //Sum(Log(C/Ref(C,-1)),21)
sumlnxlnx:=sumlnxlnx+(lnx*lnx); //Sum((Log(C/Ref(C,-1))*Log(C/Ref(C,-1))),21)
next i;
sumlnxsumlnx:=sumlnx*sumlnx; //((Sum(Log(C/Ref(C,-1)),21)*Sum(Log(C/Ref(C,-1)),21))
formula1:=sumlnxlnx-(sumlnxsumlnx/21); //( Sum((Log(C/Ref(C,-1))*Log(C/Ref(C,-1))),21) -
// ((Sum(Log(C/Ref(C,-1)),21)*Sum(Log(C/Ref(C,-1)),21)) )/21)
formula2:=12.5*formula1;
println symbol:-5, " ", "sumlnx: ", " ", sumlnx:10:5, " ",
"sumlnxlnx: ", " ", sumlnxlnx:10:5, " ",
"sumlnxsumlnx: ", " ", sumlnxsumlnx:10:5, " ",
"formula1: ", " ", formula1:10:5, " ",
"formula2: ", " ", formula2:10:5, " ",
symbol:-5;

in := formula2;
xxx := 1.0;
fx := 1.0;
for j = 0 to 9 step 1 do
xxx := xxx - fx/(2*xxx);
fx := xxx*xxx - in;
next j;
out := xxx;
println symbol, ", ", "AIQ Volatility Indicator: ", " ", 100*out:6:2;

Report TOU ViolationShare This Post
 Public ReplyPrvt ReplyMark as Last ReadFilePrevious 10Next 10PreviousNext