cherdze 1 posts msg #40738 - Ignore cherdze modified |
1/27/2006 3:33:59 PM
For details about this indicator check http://www.stockcharts.com/education/IndicatorAnalysis/indic_PBV.htm
Has this been done before with SF? I looked around and didn't find anything.
I was able to find the following formula on the web. Can anyone help translate the following metastock script into SF. I am basically after the longest horizontal bar (i.e. price at which volume is maximum) to nail price cross of support or resistance.
/********************************
D:=Input("Periods, 0=Full Chart",0,2000,100);
D:=LastValue(If(D=0,LastValue(Cum(1)-1),D));
N:=Input("% Scaling in Box, 1=None",1,100,50);
F:=LastValue(Cum(1));
A:=F-D < Cum(1); {window period}
B:=LastValue(Cum(If(A,V,0))); {window volume}
Q:=LastValue(HighestSince(1,A=0,C));
R:=LastValue(LowestSince(1,A=0,C));
I:=(Q-R)/12; {range increment}
{accumulated volume for each price range}
X1:=LastValue(Cum(If(C<(R+I) AND A,V,0))/B);
X2:=LastValue(Cum(If(C>=(R+I) AND C<(R+I*2) AND A,V,0))/B);
X3:=LastValue(Cum(If(C>=(R+I*2) AND C<(R+I*3) AND A,V,0))/B);
X4:=LastValue(Cum(If(C>=(R+I*3) AND C<(R+I*4) AND A,V,0))/B);
X5:=LastValue(Cum(If(C>=(R+I*4) AND C<(R+I*5) AND A,V,0))/B);
X6:=LastValue(Cum(If(C>=(R+I*5) AND C<(R+I*6) AND A,V,0))/B);
X7:=LastValue(Cum(If(C>=(R+I*6) AND C<(R+I*7) AND A,V,0))/B);
X8:=LastValue(Cum(If(C>=(R+I*7) AND C<(R+I*8) AND A,V,0))/B);
X9:=LastValue(Cum(If(C>=(R+I*8) AND C<(R+I*9) AND A,V,0))/B);
X10:=LastValue(Cum(If(C>=(R+I*9) AND C<(R+I*10) AND A,V,0))/B);
X11:=LastValue(Cum(If(C>=(R+I*10) AND C<(R+I*11) AND A,V,0))/B);
X12:=LastValue(Cum(If(C>=(R+I*11) AND A,V,0))/B);
B:=Max(Max(X1,X2),Max(X3,X4));
B:=Max(Max(B,X5),Max(X6,X7));
B:=Max(Max(B,X8),Max(X9,X10));
B:=Max(B,Max(X11,X12));
B:=If(N=1,N,B*100)/N; {set window % usage}
{top of window, HHV for period}
ValueWhen(1,F-D=Cum(1),Q);
{proportion of volume for each price range}
ValueWhen(1,F-Int(X12*D/B)=Cum(1),R+I*11.5);
ValueWhen(1,F-Int(X11*D/B)=Cum(1),R+I*10.5);
ValueWhen(1,F-Int(X10*D/B)=Cum(1),R+I*9.5);
ValueWhen(1,F-Int(X9*D/B)=Cum(1),R+I*8.5);
ValueWhen(1,F-Int(X8*D/B)=Cum(1),R+I*7.5);
ValueWhen(1,F-Int(X7*D/B)=Cum(1),R+I*6.5);
ValueWhen(1,F-Int(X6*D/B)=Cum(1),R+I*5.5);
ValueWhen(1,F-Int(X5*D/B)=Cum(1),R+I*4.5);
ValueWhen(1,F-Int(X4*D/B)=Cum(1),R+I*3.5);
ValueWhen(1,F-Int(X3*D/B)=Cum(1),R+I*2.5);
ValueWhen(1,F-Int(X2*D/B)=Cum(1),R+I*1.5);
ValueWhen(1,F-Int(X1*D/B)=Cum(1),R+I*0.5);
{left and bottom of window, LLV for period}
ValueWhen(1,F-D<=Cum(1) AND F-D>Cum(1)-2,If(A,R,Q));
*********************************/
|