This formula may help you.

Unknown author.

Best regards


|_SECTION_BEGIN("ZigZag Retracement");
*function* GetXSupport(Lo, Percentage, Back)
{
*return* ((*BarCount* - 1) - LastValue(TroughBars(Lo, Percentage,Back)));
}
*function* GetYSupport(Lo, Percentage, Back)
{
*return* (LastValue(Trough(Lo, Percentage, back)));
}

*function* GetXResistance(Hi, Percentage, Back)
{
*return* ((*BarCount* - 1) -LastValue(PeakBars(Hi, Percentage, Back)));
}
*function* GetYResistance(Hi, Percentage, Back)
{
*return* (LastValue(Peak(Hi, Percentage, Back)));
}

//////////////////////////////////////////////////////////////////
Per = Param("Period", .618, .1, 20, .001);
Period = Param("Look back", 10, 1, *BarCount*-1);
ShowRet = ParamToggle("Show Retracement values", "No|Yes",1);
Price = ParamList("Price to follow:", "Close|High|Low", 1);
*if*(Price=="Close") ZigP = Zig(*C*, per);
*else* *if*(Price=="High") ZigP = Zig(*H*, per);
*else* ZigP = Zig(*L*, per);

//////////////////////////////////////////////////////////////////
Plot(*C*, "", IIf(*O*>=*C*, *colorDarkRed*, *colorDarkGreen*), ParamStyle("Price Style",*styleBar*,*maskPrice*));
Plot(ZigP, "Zig", *colorGold*, *styleThick*);
//////////////////////////////////////////////////////////////////

xs1 = GetXSupport(ZigP, .01, 1);
xr1 = GetXResistance(ZigP, .01, 1);
ys1 = GetYSupport(ZigP, .01, 1);
yr1 = GetYResistance(ZigP, .01, 1);

*if*(xs1 < xr1)
{
   x = LineArray(xs1, ys1, *BarCount* - 1, LastValue(ZigP));
   Down = (yr1 - LastValue(ZigP)) / (yr1 - ys1);
   DnBars = *BarCount* - 1 - xr1;
Plot(x, "", *colorRed*, *styleDots*);
PlotText(StrFormat("%.3f (%.0f)", Down, DnBars), (xs1 + *BarCount* -1)/2, (ys1+LastValue(ZigP))/2, *colorWhite*);
}
*else*
{
   x = LineArray(xr1, yr1, *BarCount* - 1, LastValue(ZigP));
   Up = (LastValue(ZigP) - ys1) / (yr1 - ys1);
   UpBars = *BarCount* - 1 - xs1;
Plot(x, "", *colorRed*, *styleDots*);
PlotText(StrFormat("%.3f (%.0f)", Up, UpBars), (xr1 + *BarCount* -1)/2, (yr1+LastValue(ZigP))/2, *colorWhite*);
}
Plot( 1, "", IIf( xs1 > xr1, *colorGreen*, *colorRed*),*styleOwnScale*|*styleArea*|*styleNoLabel*, -0.5, 100 );
*if*(ShowRet)
*for*(i=2; i<=Period+1; i++)
{
   xs0 = GetXSupport(ZigP, .01, i);
   xs1 = GetXSupport(ZigP, .01, i-1);
   ys0 = GetYSupport(ZigP, .01, i);
   ys1 = GetYSupport(ZigP, .01, i-1);

   xr0 = GetXResistance(ZigP, .01, i);
   xr1 = GetXResistance(ZigP, .01, i-1);
   yr0 = GetYResistance(ZigP, .01, i);
   yr1 = GetYResistance(ZigP, .01, i-1);

   xs = LineArray(xs0, ys0, xs1, ys1, 0);
Plot(xs, "", *colorLightBlue*, *styleLine*);
   xr = LineArray(xr0, yr0, xr1, yr1, 0);
Plot(xr, "", *colorLightBlue*, *styleLine*);
*if*(xs1 < xr1)
   {
      Up = (yr1 - ys1) / (yr0 - ys1);
      Down = (yr0 - ys1) / (yr0 - ys0);
      UpBars = xr1 - xs1;
      DnBars = xs1 - xr0;
   }
*else*
   {
      Up = (yr1 - ys0) / (yr0 - ys0);
      Down = (yr1 - ys1) / (yr1 - ys0);
      UpBars = xr1 - xs0;
      DnBars = xs1 - xr1;
   }
PlotText(StrFormat("%.3f (%.0f)", Up, UpBars), (xr1 + xr0)/2, (yr1+yr0)/2, *colorWhite*); PlotText(StrFormat("%.3f (%.0f)", Down, DnBars), (xs1 + xs0)/2, (ys1+ys0)/2, *colorWhite*);
//Plot(LineArray(xs0, ys0, BarCount-1, ys0), "", colorGreen, styleDashed);
//Plot(LineArray(xr0, yr0, BarCount-1, yr0), "", colorRed, styleDashed);

}

str = StrFormat("   \n(Bars to END=%.0f)\n", *BarCount* - 1 - BarIndex());
*Title* =FullName()+" ("+Name()+") - "+Date()+" - Open: "+*O*+", Hi: "+*H*+", Lo: "+*L*+", Close: "+*C*+StrFormat(" (%.2f %.2f%%)", *C*-Ref(*C*, -1), SelectedValue(ROC(*C*, 1)))+str; WriteIf(1, "\nNote Fibonacci numbers:\nPrimary numbers: 0.618, 0.786, 1.27 and 1.618",""); WriteIf(1, "Secondary numbers: 0.382, 0.50, 1.00, 2.00, 2.24, 2.618 and 3.14","");


_SECTION_END();|



Le 14/07/2010 13:42, ford7k a écrit :

Hi friends

please help me get this code of afl.

I have a price chart.
I like to measure each zig and zag for time lapsed during that move in minutes or hours and rise orfall in price during that zig or zag
In a sideways trend ,mostly time for zig or zag is almost equal.
in an uptrend, upward zig duration and dnward zag duration are different and te price rise/fall is different
same with downtrend.

from each hh and ll,I need to get duration in time and rise or fall in price.

Thanks for help

regards
ford



Reply via email to