MACD indicator display.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:3k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    MACD indicator display
  4. //  Author/Uploader: Paul Moore 
  5. //  E-mail:          
  6. //  Date/Time Added: 2006-05-21 19:36:21
  7. //  Origin:          
  8. //  Keywords:        MACD
  9. //  Level:           medium
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=622
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=622
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Sometimes, it can be difficult to view the MACD histogram bars when the
  17. //  MACD lines are very close together, causing the bars to be very short. This
  18. //  indicator automatically adjusts the scaling of the MACD histogram bars such
  19. //  that they occupy the maximum area in its indicator pane.
  20. //
  21. //------------------------------------------------------------------------------
  22. PeriodFast = Param( "Fast EMA", 12, 2, 200, 1 );
  23. PeriodSlow = Param( "Slow EMA", 26, 2, 200, 1 );
  24. PeriodSignal = Param( "Signal EMA", 9, 2, 200, 1 );
  25. MACDInd = MACD(PeriodFast, PeriodSlow );
  26. SigInd = Signal(PeriodFast, PeriodSlow , PeriodSignal );
  27. HistInd = MACDInd - SigInd ;
  28. _N( macdStr = WriteVal( PeriodFast, 1.0 )+","+WriteVal( PeriodSlow , 1.0 ) );
  29. _N( sigStr = macdStr + ","+WriteVal( PeriodSignal , 1.0 ) );
  30. // Get displayed min and max value of MACD and MACD-H, to rescale it for better visibility
  31. // BarsDisplayed = BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1)  );
  32. BarsDisplayed = IIf( IsEmpty(BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) ) ),
  33.                      BarIndex(),
  34.                      BarsSince( Status("barvisible") AND NOT Ref(Status("barvisible"),-1) ) );
  35. scMACDMax = LastValue(HHV(Max(MACDInd, sigInd), BarsDisplayed ) );
  36. scMACDMin = LastValue(-HHV(Max(-MACDInd, -sigInd), BarsDisplayed ) );
  37. scaleMACD = Max( abs(scMACDMax), abs(scMACDMin) ); 
  38. // Plot(BarsDisplayed, "bars", colorBlue );
  39. // Plot( HHV(Max(MACDInd, sigInd), BarsDisplayed ), "max", colorGreen );
  40. // Plot( -HHV(Max(-MACDInd, -sigInd), BarsDisplayed ), "min", colorRed );
  41. // Plot( scMACDMax, "max", colorGreen );
  42. // Plot( scMACDMin, "min", colorOrange );
  43. scHistMax = LastValue(HHV(HistInd, BarsDisplayed ) );
  44. scHistMin = LastValue(LLV(HistInd, BarsDisplayed ) );
  45. scaleHist = Max( abs(scHistMax), abs(scHistMin) );
  46. HistColour = colorBlue;
  47. // HistColour = IIf( HistInd > Ref(HistInd,-1), colorBlue, colorRed ); 
  48. Plot( HistInd, "", HistColour, styleHistogram  | styleThick | styleOwnScale , 
  49.       -scaleHist * 1.2, scaleHist * 1.2 );
  50. Plot( MACDInd, "", colorBrightGreen);
  51. Plot( SigInd , "", colorRed);
  52. Plot( scaleMACD * 1.2,"", colorRed , styleNoDraw );
  53. Plot( -scaleMACD * 1.2 ,"", colorRed , styleNoDraw ); 
  54. GraphXSpace = 0;