PureBytes Links
Trading Reference Links
|
Yes, as I understand it,
- a value of one (default) looks back to the most recent occurence
- larger positive values look further in the past
- a zero looks forward to the next occurence
- negative values look further into the future.
Mike
--- In amibroker@xxxxxxxxxxxxxxx, "Steve Davis" <_sdavis@xxx> wrote:
>
> 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@> 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/
|