PureBytes Links
Trading Reference Links
|
Claudio:
When curve fitting a curve or straight line to data, outside the data range
the curve is not reliable. This means that the projection forward may be
quite misleading.
Instead of trying to do this in Metastock, export the data to Excel or some
other spreadsheet that has built in curve fitting functions.
Lionel
From: equismetastock@xxxxxxxxxxxxxxx [mailto:equismetastock@xxxxxxxxxxxxxxx]
On Behalf Of pumrysh
Sent: Friday, August 17, 2007 1:58 PM
To: equismetastock@xxxxxxxxxxxxxxx
Subject: [EquisMetaStock Group] Re: from amibroker formula language
Claudio,
Thats not something I would like to tackle. You may benefit from a
search of the archived messages and look for "Parabolic Trend".
>From what I see you will need an add-on DLL to accomplish what you
would like. There is one and right off the top of my head I don't
remember who offers it but I know it is discussed in the messages.
Hope this helps,
Preston
--- In equismetastock@xxxxxxxxxxxxxxx
<mailto:equismetastock%40yahoogroups.com> , "Claudio" <bastaromeo@xxx>
wrote:
>
> Thanks Preston for your last research, i've founded this formula on
> amibroker site and i think that this may help me for best-fit
> research, do you can to translate it in metastock language? again
> thanks of all.
>
> ---------------------- START -----------------------------
> // *********************************************************
> // *
> // * AFL Function for nth Order Polynomial Fit
> // * Calls Gaussian_Elimination ( VBS )
> // *
> // * Y = The array to Fit
> // * BegBar = Beg Bar in range to fit
> // * EndBar = End Bar in range to fit
> // * Order = 1 - 8 = Order of Poly Fit (Integer)
> // * ExtraB = Number of Bars to Extrapolate (Backward)
> // * ExtraF = Number of Bars to Extrapolate (Forward)
> // *
> // *********************************************************
>
> function PolyFit(GE_Y, GE_BegBar, GE_EndBar, GE_Order, GE_ExtraB,
> GE_ExtraF)
> {
> BI = BarIndex();
>
> GE_N = GE_EndBar - GE_BegBar + 1;
> GE_XBegin = -(GE_N - 1) / 2;
> GE_X = IIf(BI < GE_BegBar, 0, IIf(BI > GE_EndBar, 0,
> (GE_XBegin + BI - GE_BegBar)));
>
> GE_X_Max = LastValue(Highest(GE_X));
>
> GE_X = GE_X / GE_X_Max;
>
> X1 = GE_X;
> AddColumn(X1, "X1", 1.9);
>
> GE_Y = IIf(BI < GE_BegBar, 0, IIf(BI > GE_EndBar, 0,
GE_Y));
>
> GE_SumXn = Cum(0);
> GE_SumXn[1] = LastValue(Cum
(GE_X));
> GE_X2 = GE_X * GE_X; GE_SumXn[2] = LastValue(Cum
(GE_X2));
> GE_X3 = GE_X * GE_X2; GE_SumXn[3] = LastValue(Cum
(GE_X3));
> GE_X4 = GE_X * GE_X3; GE_SumXn[4] = LastValue(Cum
(GE_X4));
> GE_X5 = GE_X * GE_X4; GE_SumXn[5] = LastValue(Cum
(GE_X5));
> GE_X6 = GE_X * GE_X5; GE_SumXn[6] = LastValue(Cum
(GE_X6));
> GE_X7 = GE_X * GE_X6; GE_SumXn[7] = LastValue(Cum
(GE_X7));
> GE_X8 = GE_X * GE_X7; GE_SumXn[8] = LastValue(Cum
(GE_X8));
> GE_X9 = GE_X * GE_X8; GE_SumXn[9] = LastValue(Cum
(GE_X9));
> GE_X10 = GE_X * GE_X9; GE_SumXn[10] = LastValue(Cum
(GE_X10));
> GE_X11 = GE_X * GE_X10; GE_SumXn[11] = LastValue(Cum
(GE_X11));
> GE_X12 = GE_X * GE_X11; GE_SumXn[12] = LastValue(Cum
(GE_X12));
> GE_X13 = GE_X * GE_X12; GE_SumXn[13] = LastValue(Cum
(GE_X13));
> GE_X14 = GE_X * GE_X13; GE_SumXn[14] = LastValue(Cum
(GE_X14));
> GE_X15 = GE_X * GE_X14; GE_SumXn[15] = LastValue(Cum
(GE_X15));
> GE_X16 = GE_X * GE_X15; GE_SumXn[16] = LastValue(Cum
(GE_X16));
>
> GE_SumYXn = Cum(0);
> GE_SumYXn[1] = LastValue(Cum
(GE_Y));
> GE_YX = GE_Y * GE_X; GE_SumYXn[2] = LastValue(Cum
(GE_YX));
> GE_YX2 = GE_YX * GE_X; GE_SumYXn[3] = LastValue(Cum
(GE_YX2));
> GE_YX3 = GE_YX2 * GE_X; GE_SumYXn[4] = LastValue(Cum
(GE_YX3));
> GE_YX4 = GE_YX3 * GE_X; GE_SumYXn[5] = LastValue(Cum
(GE_YX4));
> GE_YX5 = GE_YX4 * GE_X; GE_SumYXn[6] = LastValue(Cum
(GE_YX5));
> GE_YX6 = GE_YX5 * GE_X; GE_SumYXn[7] = LastValue(Cum
(GE_YX6));
> GE_YX7 = GE_YX6 * GE_X; GE_SumYXn[8] = LastValue(Cum
(GE_YX7));
> GE_YX8 = GE_YX7 * GE_X; GE_SumYXn[9] = LastValue(Cum
(GE_YX8));
>
> GE_Coeff = Cum(0);
>
> GE_VBS = GetScriptObject();
> GE_Coeff = GE_VBS.Gaussian_Elimination(GE_Order, GE_N,
GE_SumXn,
> GE_SumYXn);
>
> for (i = 1; i <= GE_Order + 1; i++)
> printf(NumToStr(i, 1.0) + " = " + NumToStr(GE_Coeff[i],
1.9) +
> "\n");
>
> GE_X = IIf(BI < GE_BegBar - GE_ExtraB - GE_ExtraF, 0, IIf(BI
>
> GE_EndBar, 0, (GE_XBegin + BI - GE_BegBar + GE_ExtraF) /
GE_X_Max));
>
> GE_X2 = GE_X * GE_X; GE_X3 = GE_X2 * GE_X; GE_X4 =
GE_X3 *
> GE_X; GE_X5 = GE_X4 * GE_X; GE_X6 = GE_X5 * GE_X;
> GE_X7 = GE_X6 * GE_X; GE_X8 = GE_X7 * GE_X; GE_X9 =
GE_X8 *
> GE_X; GE_X10 = GE_X9 * GE_X; GE_X11 = GE_X10 * GE_X;
> GE_X12 = GE_X11 * GE_X; GE_X13 = GE_X12 * GE_X; GE_X14 =
GE_X13 *
> GE_X; GE_X15 = GE_X14 * GE_X; GE_X16 = GE_X15 * GE_X;
>
> GE_Yn = IIf(BI < GE_BegBar - GE_ExtraB - GE_ExtraF, -1e10, IIf
(BI
> > GE_EndBar, -1e10,
> GE_Coeff[1] +
> GE_Coeff[2] * GE_X + GE_Coeff[3] * GE_X2 +
> GE_Coeff[4] * GE_X3 + GE_Coeff[5] * GE_X4 + GE_Coeff[6] *
GE_X5 +
> GE_Coeff[7] * GE_X6 + GE_Coeff[8] * GE_X7 +
> GE_Coeff[9] * GE_X8));
>
> return GE_Yn;
> }
>
> // *********************************************************
> // *
> // * Demo AFL to use PolyFit
> // *
> // *********************************************************
>
> Filter = 1;
>
> BI = BarIndex();
> PF_BegBar = BeginValue(BI);
> PF_EndBar = EndValue(BI);
> PF_Y = (H + L) / 2;
> PF_Order = Param("nth Order", 6, 1, 15, 1);
> PF_ExtraB = Param("Extrapolate Backwards", 20, 0, 50, 1);
> PF_ExtraF = Param("Extrapolate Forwards", 20, 0, 50, 1);
>
> Yn = PolyFit(PF_Y, PF_BegBar, PF_EndBar, PF_Order, PF_ExtraB,
PF_ExtraF);
>
> GraphXSpace = 10;
>
> Plot(Yn, "nth Order Polynomial Fit - " + NumToStr(PF_Order, 1.0),
> IIf(BI > PF_EndBar - PF_ExtraF, colorWhite, IIf(BI < PF_BegBar -
> PF_ExtraF, colorWhite, colorBrightGreen)), styleThick, Null, Null,
> PF_ExtraF);
> PlotOHLC(O, H, L, C, "Close", colorLightGrey, styleCandle);
>
> ---------------------- END -----------------------------
>
[Non-text portions of this message have been removed]
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/equismetastock/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/equismetastock/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:equismetastock-digest@xxxxxxxxxxxxxxx
mailto:equismetastock-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
equismetastock-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|