PureBytes Links
Trading Reference Links
|
Thanks guys. I will work with the suggestions.
Some amazing help available on this forum. When I get better at this
whole AFL thing, I hope to one day give back as much as I've gotten!
--- In amibroker@xxxxxxxxxxxxxxx, "gp_sydney" <gp.investment@xxx> wrote:
>
> Try something like this. For the sake of the example, the signals are
> based on 30 & 60 day EMA crossovers.
>
> **************************
> GraphXSpace = 10;
> Plot(Close, "Price", -1, styleCandle);
>
> period = 4;
>
> e30 = EMA(Close, 30);
> e60 = EMA(Close, 60);
> Buy = Cross(e30, e60);
> Sell = Cross(e60, e30);
> Short = Sell;
> Cover = Buy;
>
> slope = LinRegSlope(Close, period);
> intercept = LinRegIntercept(Close, period);
> y2 = intercept + slope * (period-1); //
>
> fb = Max(Status("firstVisibleBar"), period-1);
> lb = Status("lastVisibleBar");
>
> RegLineL = Null;
> RegLineS = Null;
> for (i = fb; i <= lb; i++) {
> if (Buy[i]) {
> rlines = LineArray(i-period+1, intercept[i], i, y2[i]);
> RegLineL = IIf(!IsNull(rlines), rlines, RegLineL);
> }
> if (Short[i]) {
> rlines = LineArray(i-period+1, intercept[i], i, y2[i]);
> RegLineS = IIf(!IsNull(rlines), rlines, RegLineS);
> }
> }
>
> Plot(RegLineL, "RegLineL", colorBrown, styleThick | styleDashed);
> Plot(RegLineS, "RegLineS", colorBlue, styleThick | styleDashed);
>
> Plot(e30, "EMA(30)", colorOrange, styleLine);
> Plot(e60, "EMA(60)", colorBlack, styleLine);
> **************************
>
> I used separate arrays for the long and short lines, so that they can
> be displayed in different colours. Also note the use of "period-1" for
> the 'x' distance. When regressing over 4 bars, the distance between
> them is only 3 bars (so delta 'x' is 3, not 4).
>
> There seems to be some confusion with the intercept. The intercept is
> not for absolute index zero, but for the first bar of the regression
> range. So when regressing over 4 bars, the intercept is for the bar 3
> bars ago. Consequently, Y2 is not intercept+slope*X2, but rather
> intercept+slope*(period-1), and Y1 is just the intercept.
>
> So the four coordinates of the line at any bar 'i' are:
>
> X1 = i-period+1; (ie. 3 bars ago if period is 4)
> X2 = i;
> Y1 = intercept[i]; (the y value 3 bars ago)
> Y2 = Y1+slope[i]*(period-1);
>
> The value of Y2 is just Y1+slope*deltaX, and rearranging would give
> slope = (Y2-Y1)/deltaX = deltaY/deltaX as required.
>
> Regards,
> GP
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:
> >
> > I also tried putting everything inside the BarCount loop but now I get
> > an error with LineArray (Error 5 - the function expects a different
> > argument type here):
> >
> >
> > // Plot the Linear Regression Lines
> > if (ParamToggle("Show slope signals", "No|Yes", True))
> > {
> >
> > for (b = LinePeriod; b < BarCount; b++)
> > {
> >
> > if (slopeSignalLong[b])
> > {
> > X2 = b;
> > X1 = b - LinePeriod;
> > Intercept = LinRegIntercept(C[b], LinePeriod);
> > Slope = LinRegSlope(C[b], LinePeriod);
> > Y2 = Slope * X2 + Intercept;
> > Y1 = Slope * X1 + Intercept;
> > RegLine = LineArray( X1, Y1, X2, Y2,0 );
> > Plot(RegLine, "RegLine", colorBrown, styleThick |
styleDashed);
> > }
> >
> > if (slopeSignalShort[b])
> > {
> > X2 = b;
> > X1 = b - LinePeriod;
> > Intercept = LinRegIntercept(C[b], LinePeriod);
> > Slope = LinRegSlope(C[b], LinePeriod);
> > Y2 = Slope * X2 + Intercept;
> > Y1 = Slope * X1 + Intercept;
> > RegLine = LineArray( X1, Y1, X2, Y2,0 );
> > Plot(RegLine, "RegLine", colorTurquoise, styleThick |
> > styleDashed);
> > }
> > }
> > }
> >
> >
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@> wrote:
> > >
> > > I've been trying to plot linear regression lines, with no luck.
Hoping
> > > someone can point out my error.
> > >
> > > When I am determining to enter a trade, my trading formula tests
> > against
> > > the slope of the linear regression line over the last 4 Closes (in
> > > addition to other tests). For visual tracking purposes, I want
to plot
> > > these linear regression lines.
> > >
> > > Part of my trading formula resides in a BarCount loop, and
inside this
> > > loop I successfully populate arrays, TestSignalLong and
> > TestSignalShort.
> > > When these arrays are true, I want to plot the linear regression
> > lines.
> > >
> > > Here is what I tried coding but it does not properly plot the
lines. I
> > > get weird results:
> > >
> > >
> > >
> > > X2 = Cum(1);
> > //
> > > 2nd X-coordinate in Cartesian line formula: Y = M*X + B
> > > LinePeriod = 4; //
> > > look-back period for linear regression line
> > > X1 = LastValue(X2) - LinePeriod;
> > //
> > > 1st X-coordinate in Cartesian line formula: Y = M*X + B
> > > Slope = LastValue( LinRegSlope(C, LinePeriod) );
//
> > > this is the 'M' in Cartesian line formula: Y = M*X + B
> > > Intercept = LastValue( LinRegIntercept(C, LinePeriod) );
// this
> > > is the 'B' in Cartesian line formula: Y = M*X + B
> > > Y2 = Slope * X2 + Intercept;
> > //
> > > 2nd Y-coordinate in Cartesian line formula: Y = M*X + B
> > > Y1 = Slope * X1 + Intercept;
> > //
> > > 1st Y-coordinate in Cartesian line formula: Y = M*X + B
> > >
> > >
> > > // Barcount Loop
> > > for (i = LinePeriod; i < BarCount; i++)
> > > {
> > >
> > >
> >
>
//----------------------------------------------------------------------\
> > \
> > >
> >
------------------------------------------------------------------------
> > > // MY TRADING FORMULA GOES HERE. DURING THE FORMULA, ARRAYS ARE
FILLED
> > > FOR:
> > > // TestSignalLong[i] AND TestSignalShort[i], for use in the
Indicator
> > > below
> > >
> >
>
//----------------------------------------------------------------------\
> > \
> > >
> >
>
------------------------------------------------------------------------\
> > \
> > > -
> > > }
> > >
> > >
> > > if (Status("action") == 1 /* Indicator */)
> > > {
> > >
> > > // Plot Linear Regression Lines for each TestSignal
> > > if (ParamToggle("Show slope signals", "No|Yes", True))
> > > {
> > > firstVisibleBar = Status("firstVisibleBar");
> > > lastVisibleBar = Status("lastVisibleBar");
> > > for (b = firstVisibleBar; b < BarCount AND b <= lastVisibleBar;
> > b++)
> > > {
> > > if (TestSignalLong[b])
> > > {
> > > RegLine = LineArray( X1[b], Y1[b], X2[b], Y2[b] );
> > > Plot(RegLine, "RegLine", colorBrown, styleThick |
> > styleDashed);
> > > }
> > > if (TestSignalShort[b])
> > > {
> > > RegLine = LineArray( X1[b], Y1[b], X2[b], Y2[b] );
> > > Plot(RegLine, "RegLine", colorTurquoise, styleThick |
> > > styleDashed);
> > > }
> > > }
> > > }
> > >
> > > Plot(C, "Close", colorGreen, styleThick);
> > >
> > > }
> > >
> >
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL SUPPORT from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
*********************
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
For other support material please check also:
http://www.amibroker.com/support.html
*********************************
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/amibroker/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|