[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: What is wrong?



PureBytes Links

Trading Reference Links

Louis,

You need to explain how you define steepness. The regression formula
gives the slope in dollars per bar. What units do you want it in?

When you talk of the slope in degrees, how do you define that? For
example, 45 degrees is delta Y (price) and delta X (bars) being the
same, or $1 / bar. That seems like a pretty useless figure to me
though, as it would be shallow on the graph of a $200 stock but very
steep on the graph of a 20 cent stock (which is why I'd probably be
using semi-log and trying to do linear regression based on a log scale
with percentage gain per bar - but even then, what would 45 degrees
be, 1% per bar?).

GP


--- In amibroker@xxxxxxxxxxxxxxx, "Louis P." <rockprog80@xxx> wrote:
>
> Hi,
> 
> @Tony:Sorry I thought gradient was the good word.  Maybe I meant
angle, or
> degree?  I want a LR slope of approx. 30-50 degrees.  How can I do that?
> @gp_sydney: I need to go to work, but will check this tomorrow or
Monday.  I
> looked very quickly and was wondering where in that formula can I
determine
> how steep the slope will be.  That would help a lot!
> 
> Thank you you two a lot!
> 
> Louis
> 
> 
> 
> 2008/9/20 gp_sydney <gp.investment@xxx>
> 
> >   Sorry, a couple of typos in the formula. It should be:
> >
> >
> > n = HHVBars(High, periods);
> > avX = MA(x, n);
> > avY = MA(y, n);
> > avXY = MA(x*y, n);
> > avXX = MA(x*x, n);
> >
> > b = (avXY - avX*avY) / (avXX - avX*avX);
> > a = avY - b*avX;
> >
> > GP
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com>,
> > "gp_sydney" <gp.investment@> wrote:
> > >
> > > Louis,
> > >
> > > I gather you want to use regression to get a best-fit line from the
> > > most-recent HHV, not just draw a line between the end points.
>From my
> > > understanding of regression though, which isn't a lot, I gather that
> > > such a line may not actually pass through either end point, so
may not
> > > go "from the HHV" exactly or end at the current bar exactly (to get
> > > that, just draw a line between those two points as previously
> > > mentioned). Once you have the line though, you could offset it
> > > vertically to get it to pass exactly through the HHV or current bar
> > > (but not both of course).
> > >
> > > From a response Tomasz gave you in another thread about how to
> > > calculate Rsquared without a loop:
> > >
> > > http://finance.groups.yahoo.com/group/amibroker/message/129392
> > >
> > > you can similarly do the regression itself. According to Tomasz,
> > > LinRegSlope already accepts variable periods (ie. arrays), so to get
> > > the slope you should be able to just use that function. Or to
> > > calculate both coefficients yourself, then something like this
(based
> > > on the formula given at http://www.educalc.net/2104083.page):
> > >
> > > n = HHVBars(High, periods);
> > > avX = MA(x, n);
> > > avY = MA(y, n);
> > > avXY = MA(x*y, n);
> > > axXX = MA(x*x, n);
> > >
> > > b = (avXY - avX*avY) / (avXX - avX*avX);
> > > a = axY - b*avX;
> > >
> > > Hopefully I've got that right (I haven't tested it). The line
formula
> > > is then:
> > >
> > > line = a + b*x;
> > >
> > > The slope is 'b' and the intercept 'a'. The slope is in dollars per
> > > bar. I'm not sure what you want by a percentage slope though, as the
> > > 'x' and 'y' axes are in completely different units.
> > >
> > > Also note that the calculated lines would only be straight on a
linear
> > > price scale (if they were plotted). If you use semi-log, then the
> > > formula for a straight line is different - and how to do regression
> > > for it would take some figuring out.
> > >
> > > Hope this helps.
> > >
> > > Regards,
> > > GP
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx <amibroker%40yahoogroups.com>,
"Louis
> > P." <rockprog80@> wrote:
> > > >
> > > > Hi,
> > > >
> > > > I need the gradient of the slope, and for each bar. This is where
> > it is
> > > > difficult...
> > > >
> > > > Thanks,
> > > >
> > > > Louis
> > > >
> > > > 2008/9/19 Tony Grimes <Tonez.Email@>
> > > >
> > > > > Louis,
> > > > >
> > > > > If your looking for the slope & difference between HHV of 20
bars
> > > & the
> > > > > current close, all you should need is this:
> > > > >
> > > > > Pds=20;
> > > > >
> > > > > LastHighBar = HHVBars(High, Pds);
> > > > > LastHighVal = HHV(High, Pds);
> > > > >
> > > > > Slope = IIf(LastHighBar,(Close - LastHighVal) / LastHighBar,0);
> > > > > CloseDiff = Close - Ref(Close, -LastHighBar);
> > > > >
> > > > >
> > > > > On Fri, Sep 19, 2008 at 4:51 PM, Louis P. <rockprog80@> wrote:
> > > > >
> > > > >> Hi Tony,
> > > > >>
> > > > >> Thank you a lot for your response. I'm still very weak with
> > > loops. Last
> > > > >> time experimented with one, I had to reboot my computer! :) So
> > > do you know
> > > > >> how such a loop could work? And if I run, let's say 2 minutes
> > > bar for one
> > > > >> year, wouldn't that be really really long to deal with? I have
> > > PIV with 1.5
> > > > >> GHz ram.
> > > > >>
> > > > >> I am looking for a line that ends at each bar and that starts
> > > from the HHV
> > > > >> of 20 bars, and I want to do things with this bar: e.g. compare
> > > the closes
> > > > >> between current bar and the HHV to the bar and establish the
> > > gradient of
> > > > >> that linear regression bar for each bar.
> > > > >>
> > > > >> Thanks a lot!
> > > > >>
> > > > >> Louis
> > > > >>
> > > > >> 2008/9/19 Tony Grimes <Tonez.Email@>
> > > > >>
> > > > >>> Hi Louis,
> > > > >>>
> > > > >>> A loop will work, but how slow - it depends (Speed of your
> > computer,
> > > > >>> number of bars loaded, how many loops your using etc...).
> > > Without seeing
> > > > >>> what your actually looking for (The end result), I think you
> > > could do it
> > > > >>> with one loop, with only one pass through the loop. The speed
> > > should be OK.
> > > > >>>
> > > > >>> Good Luck.
> > > > >>>
> > > > >>> Tony
> > > > >>>
> > > > >>> On Fri, Sep 19, 2008 at 2:47 PM, Louis P. <rockprog80@> wrote:
> > > > >>>
> > > > >>>> Hi Tony,
> > > > >>>>
> > > > >>>> Thanks for the tips. Basically, I'd need a loop and use it on
> > > each and
> > > > >>>> every bar of the array to determine the LR, right?
> > > > >>>>
> > > > >>>> That will slow down my computer a lot, don't you think?
> > > > >>>>
> > > > >>>> Thanks,
> > > > >>>>
> > > > >>>> Louis
> > > > >>>>
> > > > >>>> 2008/9/16 Tony Grimes <Tonez.Email@>
> > > > >>>>
> > > > >>>>> SelectedValue takes an array ( of numbers) and returns a
> > single
> > > > >>>>> number based on the bar that is selected in the chart.
> > > > >>>>>
> > > > >>>>> The first formula worked because SelectedValue was
giving you a
> > > > >>>>> number.
> > > > >>>>>
> > > > >>>>> Look at it this way: Array --> SelectedValue ---> Number.
> > > > >>>>>
> > > > >>>>> Remove SelectedValue: Array---->Array.
> > > > >>>>>
> > > > >>>>> You can draw a line with single numbers, but not arrays.
> > > > >>>>>
> > > > >>>>> You can always use a loop.
> > > > >>>>>
> > > > >>>>> You might want to read: Understanding how AFL works, in the
> > > Amibroker
> > > > >>>>> users guide. Until you really understand AFL & array
> > > processing, you are
> > > > >>>>> going to keep running into these problems, which will just
> > > slow you down.
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> On Tue, Sep 16, 2008 at 10:34 PM, Louis P.
<rockprog80@>wrote:
> > > > >>>>>
> > > > >>>>>> Hi Tony,
> > > > >>>>>>
> > > > >>>>>> Why was the first formula working (the one with
> > > selectedvalue) and not
> > > > >>>>>> the second one? Why simply deleting the "selectedvalue"
> > > makes it an array
> > > > >>>>>> that will not be accept in "linearray"?
> > > > >>>>>>
> > > > >>>>>> Is there any way to draw a line without using lastvalue or
> > > > >>>>>> selectedvalue? Do I need to use a loop?
> > > > >>>>>>
> > > > >>>>>> Thanks,
> > > > >>>>>>
> > > > >>>>>> Louis
> > > > >>>>>>
> > > > >>>>>> 2008/9/16 Tony Grimes <Tonez.Email@>
> > > > >>>>>>
> > > > >>>>>>> Louis,
> > > > >>>>>>>
> > > > >>>>>>> All of the variables you are creating for the LineArray
> > > function are
> > > > >>>>>>> arrays themselves. Although LineArray generates an
array, it
> > > does not accept
> > > > >>>>>>> any arrays as inputs. Additionally, your error message was
> > > probably
> > > > >>>>>>> different. It probably went from complaining about
argument
> > > #4 having the
> > > > >>>>>>> incorrect type (which you corrected) to argument #3 having
> > > the incorrect
> > > > >>>>>>> type.
> > > > >>>>>>>
> > > > >>>>>>> On Tue, Sep 16, 2008 at 9:10 PM, Louis P.
<rockprog80@>wrote:
> > > > >>>>>>>
> > > > >>>>>>>> Hi,
> > > > >>>>>>>>
> > > > >>>>>>>> Thank you for your help.
> > > > >>>>>>>>
> > > > >>>>>>>> @Ara:
> > > > >>>>>>>>
> > > > >>>>>>>> If in
> > > > >>>>>>>>
> > > > >>>>>>>> barhh1 = HHVBars( High, Periods ) ;
> > > > >>>>>>>> bi1 = BarIndex();
> > > > >>>>>>>> y11 = LinearReg( C, barhh1 ) ;
> > > > >>>>>>>> y01 = LinRegIntercept( C, barhh1 ) ;
> > > > >>>>>>>> sl1 = LineArray( bi1-barhh1+0, y01, bi1, y11, 0, True );
> > > > >>>>>>>>
> > > > >>>>>>>> I replace
> > > > >>>>>>>>
> > > > >>>>>>>> sl1 = LineArray( bi1-barhh1+0, y01, bi1, y11, 0, True );
> > > > >>>>>>>>
> > > > >>>>>>>> by
> > > > >>>>>>>>
> > > > >>>>>>>> sl1 = LineArray( bi1-barhh1+0, y01, bi1,
LastValue(y11), 0,
> > > True
> > > > >>>>>>>> );
> > > > >>>>>>>>
> > > > >>>>>>>> I still have the same error message. I don't know from
> > > where it is
> > > > >>>>>>>> coming.. unfortunately!
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> @gp_sydney:
> > > > >>>>>>>>
> > > > >>>>>>>> That was a typo, you are right; I arranged that by
adding a
> > > 1. But
> > > > >>>>>>>> still, the problem remains: the last line does not work.
> > > > >>>>>>>>
> > > > >>>>>>>> One day, I asked support if I needed a loop to do such LR
> > > and they
> > > > >>>>>>>> said I should not need one.
> > > > >>>>>>>>
> > > > >>>>>>>> Here is the original code:
> > > > >>>>>>>>
> > > > >>>>>>>> barhh = SelectedValue( HHVBars( High, Periods ) );
> > > > >>>>>>>> bi = SelectedValue( BarIndex() );
> > > > >>>>>>>> y1 = SelectedValue( LinearReg( C, barhh ) );
> > > > >>>>>>>> y0 = SelectedValue( LinRegIntercept( C, barhh ) );
> > > > >>>>>>>> sl = LineArray( bi-barhh+0, y0, bi, y1, 0, True );
> > > > >>>>>>>>
> > > > >>>>>>>> What I want to do is simply eliminate the "selectedvalue"
> > > part and
> > > > >>>>>>>> use the code not only for the selected data but for the
> > > whole data. I want
> > > > >>>>>>>> to be able to draw a line from each HHV to each bar and
> > > then work with the
> > > > >>>>>>>> result.
> > > > >>>>>>>>
> > > > >>>>>>>> If it can't be done without a loop, I feel like I'll be
> > > lost in time
> > > > >>>>>>>> again; last time I tried to run a loop on my computer it
> > > freezed and after 2
> > > > >>>>>>>> minutes I decided to shut down AB...
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> Thanks for the help,
> > > > >>>>>>>>
> > > > >>>>>>>> Louis
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>> 2008/9/16 gp_sydney <gp.investment@>
> > > > >>>>>>>>
> > > > >>>>>>>>> As Ara said, in the shown code snippet you don't have
> > > "barhh"
> > > > >>>>>>>>> defined,
> > > > >>>>>>>>> only "barhh1".
> > > > >>>>>>>>>
> > > > >>>>>>>>> Beyond that, you have the same issue I mentioned
> > > originally, that
> > > > >>>>>>>>> the
> > > > >>>>>>>>> linear regression functions and LineArray function take
> > scalar
> > > > >>>>>>>>> values
> > > > >>>>>>>>> (ie. single numbers) as parameters, not arrays.
> > > > >>>>>>>>>
> > > > >>>>>>>>> I gather you're trying to create a line from the
> > > most-recent HHV
> > > > >>>>>>>>> value
> > > > >>>>>>>>> using the subsequent close data for every bar on the
> > > chart. As I
> > > > >>>>>>>>> don't
> > > > >>>>>>>>> think the linear regression functions can take arrays
> > for the
> > > > >>>>>>>>> period,
> > > > >>>>>>>>> I think you'd need to use a loop and do the linear
> > regression
> > > > >>>>>>>>> yourself
> > > > >>>>>>>>> at each bar (you could call the array functions
within the
> > > loop,
> > > > >>>>>>>>> but
> > > > >>>>>>>>> since they fill a whole array each time, they would do a
> > > lot of
> > > > >>>>>>>>> unnecessary work). If you do that yourself inside the
> > > loop, then at
> > > > >>>>>>>>> each bar you'd have scalar 'x' and 'y' values to
calculate
> > > the line
> > > > >>>>>>>>> slope and so on.
> > > > >>>>>>>>>
> > > > >>>>>>>>> For what it's worth, the BarIndex function simply gives
> > > you the bar
> > > > >>>>>>>>> number. It provides a way of using the current bar
number
> > > in array
> > > > >>>>>>>>> formula.
> > > > >>>>>>>>>
> > > > >>>>>>>>> Regards,
> > > > >>>>>>>>> GP
> > > > >>>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>> --- In
amibroker@xxxxxxxxxxxxxxx<amibroker%40yahoogroups.com>
> > > <amibroker%40yahoogroups.com>,
> > > > >>>>>>>>> "Louis P." <rockprog80@> wrote:
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > Hi,
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > Sorry, You can replace "periods" by 50 if you wish. I
> > > just forgot
> > > > >>>>>>>>> to
> > > > >>>>>>>>> > include that.
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > barhh1 = HHVBars( High, *50* ) ;
> > > > >>>>>>>>> > bi1 = BarIndex() ;
> > > > >>>>>>>>> > y11 = LinearReg( C, barhh ) ;
> > > > >>>>>>>>> > y01 = LinRegIntercept( C, barhh ) ;
> > > > >>>>>>>>> > sl1 = LineArray( bi1-barhh1+0, y01, bi1, y11, 0,
True );
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > Still, it is not working, even if barhh1 is defined...
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > Louis
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > 2008/9/16 Ara Kaloustian <ara1@>
> > > > >>>>>>>>> >
> > > > >>>>>>>>> > > y11 and y01 use "barhh" which is not defined.
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > You have defined "barhh1"
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > ----- Original Message -----
> > > > >>>>>>>>> > > *From:* Louis P. <rockprog80@>
> > > > >>>>>>>>> > > *To:*
amibroker@xxxxxxxxxxxxxxx<amibroker%40yahoogroups.com>
> > > <amibroker%40yahoogroups.com>
> > > > >>>>>>>>> > > *Sent:* Tuesday, September 16, 2008 2:46 PM
> > > > >>>>>>>>> > > *Subject:* [amibroker] What is wrong?
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > Hi,
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > What is wrong in the following formula?
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > barhh1 = HHVBars( High, Periods ) ;
> > > > >>>>>>>>> > > bi1 = BarIndex() ;
> > > > >>>>>>>>> > > y11 = LinearReg( C, barhh ) ;
> > > > >>>>>>>>> > > y01 = LinRegIntercept( C, barhh ) ;
> > > > >>>>>>>>> > > sl1 = LineArray( bi1-barhh1+0, y01, bi1, y11, 0,
True );
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > Thanks,
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > Louis
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > > p.s. There was "Selectedvalue" in the first four
lines
> > > but I
> > > > >>>>>>>>> don't
> > > > >>>>>>>>> want to
> > > > >>>>>>>>> > > plot it on the chart based on where I am on that
> > > chart, but
> > > > >>>>>>>>> simply
> > > > >>>>>>>>> set the
> > > > >>>>>>>>> > > variable so I can use the stuff later.
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> > >
> > > > >>>>>>>>> >
> > > > >>>>>>>>>
> > > > >>>>>>>>>
> > > > >>>>>>>>
> > > > >>>>>>>
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>
> > > > >>>
> > > > >>
> > > > >
> > > > >
> > > >
> > >
> >
> >  
> >
>



------------------------------------

Please note that this group is for discussion between users only.

To get 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/