//Posted by TSOKAKIS on 09-03-04 07:46 AM:
//http://www.elitetrader.com/vb/printthread.php?threadid=37727
//The last best-fit parabolic
//The following AFL code will Plot the best-fit parabolic from the last Peak[OR Trough] till Now.
//The boundary parabolas will also be plotted, in order to ensure the loop range.
Plot(C,"C",1,64);
perc=3;//sensitivity calibration
x=BarIndex();xx=LastValue(x);
t1=LastValue(ValueWhen(PeakBars(H,perc)==0,x));
H1=LastValue(ValueWhen(PeakBars(H,perc)==0,H));
t11=LastValue(ValueWhen(TroughBars(L,perc)==0,x));
H11=LastValue(ValueWhen(TroughBars(L,perc)==0,L));
g=t1>t11;
shape=IIf(g,shapeDownArrow*(x==t1),shapeUpArrow*(x==t11));
Color=IIf(g,colorRed,colorBrightGreen);
PlotShapes(shape,color);
t=IIf(g,x-t1,x-t11);
diff1=IIf(g,H1*(xx-t1),H11*(xx-t11));
Lma=LastValue(MA(C,50));
f1=0;f2=IIf(Lma<100,1,0)+3*int(log10(Lma));
fa=0;fb=0;step=f2/100;
for(f=f1;//f;{
parabolic=IIf(g,H1-f*t^2,H11+f*t^2);
S1=LastValue(Sum(abs(parabolic-H),xx-t1));
S11=LastValue(Sum(abs(parabolic-L),xx-t11));
diff=IIf(g,S1,S11);
if(diff {
diff1=diff;fa=f;
}
}
for(f=Max(fa-step,0);f {
parabolic=IIf(g,H1-f*t^2,H11+f*t^2);
S1=LastValue(Sum(abs(parabolic-H),xx-t1));
S11=LastValue(Sum(abs(parabolic-L),xx-t11));
diff=IIf(g,S1,S11);
if(diff {
diff1=diff;fb=f;
}
}
p=IIf(g,H1-fb*t^2,H11+fb*t^2);
p0=IIf(g,H1-f2*t^2,H11+f2*t^2);
p0=IIf(p0>LLV(L,200) AND p0 p1=IIf(g,H1,H11);
Plot(IIf(x>=Max(t1,t11),p,-1e10),"",color,8);
Plot(IIf(x>=Max(t1,t11),p0,-1e10),"",color+1,1);
Plot(IIf(x>=Max(t1,t11),p1,-1e10),"",color+1,1);
Title=Name()+", "+WriteIf(t1>t11,"f_desc","f_asc")+"="+WriteVal(fb,1.4);//+"[f2="+WriteVal(f2)+",step="+WriteVal(step);
GraphXSpace=3;