Jan: Here's a version of the AIQ volatility scan that gives past values. What larks, eh?
//AIQ Volatility Indicator, //translated by Brooke //from Jan Robert Wolensky's Metastock version //with Square Root and Log formulas by Jeff Grover, Bob Jagow //100*(Sqrt(12.5* //(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))) //100*(Sqrt(12.5* //(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))) //AIQ Volatility Indicator, translated for QP2 by Brooke input="volvol.lst"; output="volatility.lst"; daystoload=500; float x,xx,n,n3,n5,n7,n9,n11,n13,n15,lnx,sumlnx,sumlnxlnx, sumlnxsumlnx,formula1,in,out,fx,xxx,period,formula2; integer i,j,k; period:=21;
for k= 0 to 10 do sumlnx:=0; sumlnxlnx:=0;
for i=-(period-1) to 0 step 1 do //Jeff Grover's log formula //for k= 0 to 1 do x:=close(i-k)/close((i-1)-k); 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); 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; //next k; sumlnx:= sumlnx+lnx; sumlnxlnx:=sumlnxlnx+(lnx*lnx); next i; sumlnxsumlnx:=sumlnx*sumlnx; formula1:=12.5*(sumlnxlnx-(sumlnxsumlnx/period)); //Square root formula by Jeff Grover, Bob Jagow in := formula1; 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:-5, " ", date(-k), " ", "AIQ Volatility Indicator: ", " ", 100*out:6:2; next k; |