Linear Regression Line w Std Deviation Channels.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:4k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Linear Regression Line w/ Std Deviation Channels
  4. //  Author/Uploader: Patrick Hargus 
  5. //  E-mail:          
  6. //  Date/Time Added: 2005-03-07 00:58:06
  7. //  Origin:          Based on the Linear Regression Indicator found in TC2000 and the AB Lin Regression Drawing Tool.
  8. //  Keywords:        linnear regression, standard deviation
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=438
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=438
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Plot a linear regression line of any price field available on a chart for a
  17. //  period determined by the user. 2 Channels are plotted above and below based
  18. //  on standard deviations of the linear regression line as determined by the
  19. //  user. A look back feature is also provided for examining how the indicator
  20. //  would have appeared on a chart X periods in the past. Designed for AB
  21. //  versions 4.63 and above using drag and drop feature with user variable
  22. //  Params.
  23. //
  24. //  Various explorations based on crossovers, excursions and returns within the
  25. //  SD channels are easily added.
  26. //
  27. //------------------------------------------------------------------------------
  28. //  Linear Regression Line with 2 Standard Deviation Channels Plotted Above and Below 
  29. //  Written by Patrick Hargus, with critical hints from Marcin Gorzynski, Amibroker.com Technical Support 
  30. //      Designed for use with AB 4.63 beta and above, using drag and drop feature.  
  31. //  Permits plotting a linear regression line of any price field available on the chart for a period determined by the user.  
  32. //     2 Channels, based on a standard deviation each determined by the user, are plotted above and below the linear regression line. 
  33. //  A look back feature is also provided for examining how the indicator would have appeared on a chart X periods in the past.    
  34. P = ParamField("Price field",-1);
  35. Daysback = Param("Period for Liner Regression Line",21,1,240,1);
  36. shift = Param("Look back period",0,0,240,1); 
  37. //  =============================== Math Formula =============================================================
  38. x = Cum(1);
  39. lastx = LastValue( x ) - shift; 
  40. aa = LastValue( Ref(LinRegIntercept( p, Daysback), -shift) ); 
  41. bb = LastValue( Ref(LinRegSlope( p, Daysback ), -shift) ); 
  42. y = Aa + bb * ( x - (Lastx - DaysBack +1 ) ); 
  43. // ==================Plot the Linear Regression Line ==========================================================
  44. LRColor = ParamColor("LR Color", colorCycle ); 
  45. LRStyle = ParamStyle("LR Style");
  46. LRLine =  IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y, Null );
  47. Plot( LRLine , "LinReg", LRCOLOR, LRSTYLE ); //  styleDots ); 
  48. // ==========================  Plot 1st SD Channel ===============================================================
  49. SDP = Param("Standard Deviation", 1.5, 0, 6, 0.1);
  50. SD = SDP/2;
  51. width = LastValue( Ref(SD*StDev(p, Daysback),-shift) );   // THIS IS WHERE THE WIDTH OF THE CHANELS IS SET  
  52. SDU = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y+width , Null ) ;
  53. SDL = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y-width , Null ) ;
  54. SDColor = ParamColor("SD Color", colorCycle ); 
  55. SDStyle = ParamStyle("SD Style");
  56. Plot( SDU , "Upper Lin Reg", SDColor,SDStyle ); 
  57. Plot( SDL , "Lower Lin Reg", SDColor,SDStyle ); 
  58. //  ==========================  Plot 2d SD Channel ===============================================================
  59. SDP2 = Param("2d Standard Deviation", 2.0, 0, 6, 0.1);
  60. SD2 = SDP2/2;
  61. width2 = LastValue( Ref(SD2*StDev(p, Daysback),-shift) );   // THIS IS WHERE THE WIDTH OF THE CHANELS IS SET  
  62. SDU2 = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y+width2 , Null ) ;
  63. SDL2 = IIf( x > (lastx - Daysback) AND BarIndex() < Lastx, y-width2 , Null ) ;
  64. SDColor2 = ParamColor("2 SD Color", colorCycle ); 
  65. SDStyle2 = ParamStyle("2 SD Style");
  66. Plot( SDU2 , "Upper Lin Reg", SDColor2,SDStyle2 ); 
  67. Plot( SDL2 , "Lower Lin Reg", SDColor2,SDStyle2 ); 
  68. // ============================ End Indicator Code ==============================================================