PureBytes Links
Trading Reference Links
|
What exactly does it mean when the third parameter to ValueWhen is 0?
Is this a reference to a future array element?
> NextSignalBar = ValueWhen(TestSignalLong, BarIndex(), 0);
--- In amibroker@xxxxxxxxxxxxxxx, "Mike" <sfclimbers@xxx> wrote:
>
> Hi,
>
> Note that LastValue always looks at the end of the array. That's not
> what you want since you are wanting the regression at each signal,
> not only at the last bar in the series. That's one reason why your
> first attempt failed.
>
> Also, note that LinRegSlope and LinRegIntercept take arrays as their
> first argument, not a single element (i.e. not C[b] as in your
> example). That's one reason why your second attempt failed.
>
> Try something along the following, which uses the regression values
> of the current bar (when current bar is a signal bar), or the bar of
> the next signal, as the case may be.
>
> You will need to do the math to double check it all. But, the
> important thing to note is that you must dynamically select the bar
> for your regression values as each signal occurs, not just using the
> values of the last bar in the data (i.e. not LastValue(...)).
>
> LookBack = 4;
> Slope = LinRegSlope(Close, LookBack);
> Intercept = LinRegIntercept(Close, LookBack);
>
> TestSignalLong = Cross(MA(Close, 5), MA(Close, 25));
> NextSignalBar = ValueWhen(TestSignalLong, BarIndex(), 0);
>
> M = IIF(TestSignalLong, Slope, ValueWhen(TestSignalLong, Slope, 0));
> X = IIF(TestSignalLong, LookBack, LookBack - (NextSignalBar - BarIndex
> ()));
> B = IIF(TestSignalLong, Intercept, ValueWhen(TestSignalLong,
> Intercept, 0));
>
> Y = M * X + B;
>
> Plot(Close, "Close", colorLightGrey, styleBar);
> PlotShapes(IIF(TestSignalLong, shapeUpArrow, null), colorGreen, 0,
> Close);
> Plot(IIF(X > 0 && X <= LookBack, Y, null), "LinReg", colorRed);
>
> Mike
>
> --- 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/
|