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

Re: Parallel lines for regression channels ?



PureBytes Links

Trading Reference Links

Hello Ed,

Wow ! That's amazing. 

However, in order to learn, I would prefer to understand the concept 
behind how you created this AFL. 

Could you provide some comments for your code. 

I'm asking because I want to modify this code to be able to display 
the line & channels starting from a certain day and ending on a 
certain day (not necessarily today). So, there would be two 
variables (Period & Daysback) or (startdate & enddate).

Also, I want to modify the "dist" variable so that it is equal to the 
the max absolute difference between the regression line and the price 
array in that period.

Thanks again,
HB

--- In amibroker@xxxx, "Sharps_45_70" <sharps_45_70@xxxx> wrote:
> HB,
> 
> Try this. 
> 
> Ed
> 
> ///////////////////////////////////////////////////////
> Period=40;
> price=A;// choose price array
> 
> 
> LinReg=( Period * Sum( Cum( 1 ) * price,Period ) - 
> Sum( Cum( 1 ),Period) * Sum( price,Period) ) / 
> (Period * Sum(Cum( 1 )^2,Period ) - 
> Sum( Cum( 1 ),Period )^2 ) * Cum( 1 ) + (MA(price,Period) - 
> MA( Cum(1 ),Period) * (Period * Sum( Cum( 1 ) * price,Period) - 
> Sum( Cum( 1 ),Period ) * Sum( price,Period) ) / (Period * 
> Sum( Cum(1 )^2 ,Period) - Sum( Cum( 1 ),Period )^2 ) );
> 
> ind=(LastValue(LinReg)-(LastValue(LinRegSlope(price,Period))*
> (LastValue(Cum(1))-Cum(1))))+Ref(price,(0-(LastValue(Cum(1))-
> Period)))-Ref(price,(0-(LastValue(Cum(1))-Period)));
> 
> Dist=ind*.05;// distance from regression
> 
> Plot( price, "Price", 1, 64);
> Plot( ind, "Regression", 5, 1);
> Plot( ind+Dist, "+Line", 6, 1);
> Plot( ind-Dist, "-Line", 6, 1);
> /////////////////////////////////////////////////////
> 
> 
> 
> --- In amibroker@xxxx, "HB" <hbahlool0542@xxxx> wrote:
> > Hello Ed,
> > 
> > Yes, I used parts of that formula. However, it plots incorrect 
> results.
> > 
> > Try plotting that one and you'll see what I mean.
> > 
> > HB
> > ----- Original Message ----- 
> > From: Sharps_45_70 
> > To: amibroker@xxxx 
> > Sent: Wednesday, July 24, 2002 9:19 AM
> > Subject: [amibroker] Re: Parallel lines for regression 
channels ?
> > 
> > 
> > HB,
> > 
> > Try working off this formula from the AFL library.
> > 
> > http://www.amibroker.com/library/formula.php?id=106
> > 
> > Ed
> > 
> > 
> > --- In amibroker@xxxx, "HB" <hbahlool0542@xxxx> wrote:
> > > Ok, I've been trying to build the 40-day linear regression 
line 
> > (starting from today, going back 40 days) and I can't even seem 
> to do 
> > that.
> > > 
> > > First, some basic math:
> > > 
> > > linear line: y = mx + b where m is the slope, b is the 
> intercept, 
> > and x is the bar #
> > > 
> > > LRline = Slope * (bar #) + Intercept
> > > 
> > > Note: Any time I write "Summation", it is the sum of the 
> variable 
> > for i = 1 to N, where N is the period
> > > 
> > > Slope = [ N*(Summation(X*Y)) - Summation(X) * Summation
(Y) ] / 
> [N * 
> > Summation (X^2) - (Summation(X))^2]
> > > OR
> > > Slope = [Summation ((X-MeanX)*(Y-MeanY))] / [Summation((X-
MeanX)
> ^2)]
> > > 
> > > Intercept = [Summation(Y) - Slope * Summation(X)] / N
> > > OR
> > > Intercept = MeanY - Slope * MeanX
> > > 
> > > Based on that, here's the AFL I've implemented so far. 
Someone 
> > please correct what I'm doing wrong !
> > > 
> > > // Raff Regression Channels (at least the beginning of it :)
> > > 
> > > periods = 40;
> > > DaysBack = 0;
> > > 
> > > // Compute the number of bars in datafile, this section was 
> > developed by Frank Snay
> > > RABars = 0; //initialize
> > > TotalBars = Cum(1); //how many bars in database
> > > FinalBar = LastValue(TotalBars);//number value of last bar
> > > EndDay = FinalBar - DaysBack;//for other than 0 DaysBack
> > > StartDay = EndDay - periods+1;//starting point for line
> > > Master1 = IIf(TotalBars >= StartDay AND TotalBars <= 
> > EndDay,1,0);//defined period
> > > RABars = IIf(Master1,Ref(RABars,-1)+1,0); // daily counter in 
> > defined period
> > > RABarKntr = IIf(Master1,Sum(RABars,periods),0); //Sum of 
daily 
> > counts
> > > 
> > > // Calculate LRLine formula components
> > > SumX = Sum (RABars, periods);
> > > SumY = Sum(C, periods);
> > > SumXY = Sum (C * RABars, periods) ;
> > > SumXX = Sum (RABars * RABars, periods);
> > > 
> > > n = periods;
> > > 
> > > Slope = (n * SumXY - SumX * SumY) / (n * SumXX - SumX * 
SumX );
> > > Intercept = (SumY - Slope * SumX) / n;
> > > 
> > > /*
> > > // Other calculation method which yields a different result ?!
> > > SumX = Sum (RABars, periods);
> > > SumY = Sum(C, periods);
> > > SumXY = Sum (C * RABars, periods) ;
> > > SumXX = Sum (RABars * RABars, periods);
> > > MeanX = SumX/periods;
> > > MeanY = SumY/periods;
> > > 
> > > Slope = Sum((RABars-MeanX)*(C-MeanY), periods);
> > > Intercept = MeanY - slope * MeanX;
> > > */
> > > 
> > > // Linear Regression Line
> > > LRLine = Slope * RABars + Intercept; 
> > > LRLine = IIf(RABarKntr >= 1, LRLine,-1e10);
> > > 
> > > // Graph the output
> > > MaxGraph=2;
> > > Graph0 = Close; Graph0Style = 1; Graph0Color =1;
> > > Graph1 =LRLine; Graph1Style = 1;
> > > 
> > > //END
> > > 
> > > ----- Original Message ----- 
> > > From: hmab1 
> > > To: amibroker@xxxx 
> > > Sent: Tuesday, July 23, 2002 7:07 PM
> > > Subject: [amibroker] Parallel lines for regression 
channels ?
> > > 
> > > 
> > > 
> > > Hello,
> > > 
> > > Is it possible in AFL to contruct parallel lines on either 
> side 
> > of a 
> > > linear regression line ?
> > > 
> > > I'm trying to build a linear regression channels indicator.
> > > 
> > > The central line would be the linear regression line. The 
> upper 
> > and 
> > > lower channel lines are placed equidistant from the center 
> line 
> > and 
> > > parallel to it. The distance between the central line and 
the 
> > upper 
> > > line would be equal to greatest distance between the 
central 
> line 
> > and 
> > > the highest value. The distance between the central line 
and 
> the 
> > > lower line would be equal to greatest distance between the 
> > central 
> > > line and the lowest value.
> > > 
> > > I've been racking my brain, reading through the various AFL 
> > > functions, and searching this group !! Is this even 
> possible ?
> > > 
> > > Inputs would be the start date, end date, and variable 
array 
> > (e.g. 
> > > Close).
> > > 
> > > Thanks,
> > > HB
> > > 
> > > 
> > > 
> > > Yahoo! Groups Sponsor 
> > > ADVERTISEMENT
> > > 
> > > 
> > > 
> > > Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
> > Service.
> > 
> > 
> > Yahoo! Groups Sponsor 
> > ADVERTISEMENT
> > 
> > 
> > 
> > Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
> Service.