Check the October 2004 issue: Here is the MetaStock code for the Q indicator. {Q Indicator} {Trend Quality} m:=Input("% Scalar trend period",1,25,4); n:=Input("% Scalar noise period",1,500,250); cf:=Input("% Scalar correction factor",0.1,20,1); p1:=Input("First moving average periods",1,200,7); p2:=Input("Second moving average periods",1,200,15); rev:=Mov(C,p1,E)-Mov(C,p2,E); pds:=If(rev>0,1,-1); dc:=ROC(C,1,$); cpc:=If(pds<>Ref(pds,-1),0,dc+PREV); trend:=If(pds<>Ref(pds,-1),0,(cpc*(1/m))+(PREV*(1-(1/m)))); dt:=cpc-trend; noise:=Sqrt(Mov(dt*dt,n,E)); (trend/noise)*cf; ====================== Here is the MetaStock code for the B indicator. {B Indicator} {Trend-Noise Balance} m:=Input("% Scalar trend period",1,25,4); n:=Input("% Scalar noise period",1,500,250); cf:=Input("% Scalar correction factor",0.1,20,1); p1:=Input("First moving average periods",1,200,7); p2:=Input("Second moving average periods",1,200,15); rev:=Mov(C,p1,E)-Mov(C,p2,E); pds:=If(rev>0,1,-1); dc:=ROC(C,1,$); cpc:=If(pds<>Ref(pds,-1),0,dc+PREV); trend:=If(pds<>Ref(pds,-1),0,(cpc*(1/m))+(PREV*(1-(1/m)))); dt:=cpc-trend; noise:= Sqrt(Mov(dt*dt,n,E)); ((Abs(trend)/(Abs(trend)+noise))*100)*cf; =====================