LinearReg

Modified on 2008/09/16 08:06 by Eugene — Categorized as: Standard Indicators

Syntax

public LinearReg(DataSeries ds, int period, string description) public static LinearReg Series(DataSeries ds, int period) public static double Value(int bar, DataSeries ds, int period)

Parameter Description

ds Price series
period Indicator calculation period

Description

Returns the Linear Regression value for the specified DataSeries ds and period. LinearReg gathers the prices for the number of specified periods and finds a straight line which best fits all the prices using a linear regression model. The procedure is reinitialized and repeated for each bar in the Price Series. Since a new value is calculated at each Bar, the result is not a straight linear regression trendline; rather, it is an indicator which loosely tracks the price action.

LinearReg is a statistical indicator. Other indicators in the same class are LinearRegSlope, StdError, RSquared and StdDev.

Interpretation


Calculation

Linear Regression is a somewhat complex statistical calculation. It uses the least square method to fit a trendline to the data by minimizing the distance between the price and the Linear Regression trendline. LinearReg returns the final value of the LinearRegLine, recalculated for each bar over the regression Period to complete indicator.

Example

using System; using System.Collections.Generic; using System.Text; using System.Drawing; using WealthLab; using WealthLab.Indicators;

namespace WealthLab.Strategies { public class MyStrategy : WealthScript { protected override void Execute() { // Report on how far closing prices are away from predicted value string s; int bar = Bars.Count-1; double close = Closebar; double Diff = close - LinearReg.Series( Close, 20 )bar; Diff = Diff/close*100; if( Diff > 0 ) s = "Price closed above "; else s = "Price closed below "; Diff = Math.Abs( Diff ); s = s + "the Regression Line by " + Bars.FormatValue( Diff ) + "%"; DrawLabel( PricePane, s ); PlotSeries( PricePane, LinearReg.Series( Close, 20 ), Color.Black, WealthLab.LineStyle.Solid, 1 ); } } }