Linear Regression Line & Bands.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Linear Regression Line & Bands
  4. //  Author/Uploader: Geoff Mulhall 
  5. //  E-mail:          gmulhall@urban.net.au
  6. //  Date/Time Added: 2002-05-27 06:31:34
  7. //  Origin:          www.equis.com/free/taaz/linearregression.html
  8. //  Keywords:        Linear Regression
  9. //  Level:           semi-advanced
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=193
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=193
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  A linear regression line plots the a least squares line of best fit through
  17. //  the closing price. In this case bands are also plotted above and below the
  18. //  central linear regression line to indicate the maximum excursion of the
  19. //  stock from the line.
  20. //
  21. //------------------------------------------------------------------------------
  22. /* Linear Regression Slope */
  23. /* Geoff Mulhall 25-May-2002 */
  24. /* Refer www.equis.com/free/taaz/linearregression.html */
  25. /* for a mathematical explanation of the formulae */
  26. N = LastValue(LLVBars(Low,190));   // lookback period  - can be set by the user if necessary
  27. Start = 1;
  28. X = Cum(Start);    // Set up the x cordinate array of the Linear Regression Line
  29. Y = Close;         // Set the y co-ordinate of the Linear Regression line    
  30. /* Calculate the slope (bconst) and the y intercept (aconst) of the line */
  31. SUMX    = LastValue(Sum(X,N));
  32. SUMY    = LastValue(Sum(Y,N));
  33. SUMXY   = LastValue(Sum(X*Y,N));
  34. SUMXSqd = LastValue(Sum(X*X,N));
  35. SUMSqdX = LastValue(SUMX * SUMX);
  36. bconst  = (N * SUMXY - SUMX * SUMY)/(N * SUMXSqd - SUMSqdX);
  37. aconst  = (SUMY - bconst * (SUMX))/N;
  38. /* Force the x value to be very negative so the graph does not apear before the lookback period */
  39. Domain =  IIf ( X > LastValue(X) - N, 1 , -1e10);   
  40. Xvar = X * Domain;
  41. /* Linear Regression Line */
  42. Yvar = aconst + bconst * Xvar;
  43. /* Plot the graphs */
  44. Graphxspace = 10;
  45. MaxGraph=4;
  46. /* Candle chart */ 
  47. Graph0 = Close;
  48. Graph0Style = 64;
  49. Graph0Color = 1;
  50. /* Linear Regression Lines */
  51. Graph1 = Yvar;
  52. Graph2 = Yvar - LastValue(HHV(Yvar - Low,N));
  53. Graph3 = Yvar + LastValue(HHV(High - Yvar,N));
  54. Graph1Style = 1;
  55. Graph1Color = 2;
  56. Graph2Style = 1;
  57. Graph2Color = 2;
  58. Graph3Style = 1;
  59. Graph3Color = 2;