Market Profile & Market Volume Profile.afl
上传用户:shiqiang
上传日期:2009-06-12
资源大小:1289k
文件大小:2k
源码类别:

金融证券系统

开发平台:

Others

  1. //------------------------------------------------------------------------------
  2. //
  3. //  Formula Name:    Market Profile & Market Volume Profile
  4. //  Author/Uploader: noname 
  5. //  E-mail:          
  6. //  Date/Time Added: 2006-05-28 07:10:16
  7. //  Origin:          
  8. //  Keywords:        Market Profile
  9. //  Level:           basic
  10. //  Flags:           indicator
  11. //  Formula URL:     http://www.amibroker.com/library/formula.php?id=623
  12. //  Details URL:     http://www.amibroker.com/library/detail.php?id=623
  13. //
  14. //------------------------------------------------------------------------------
  15. //
  16. //  Market Profile & Market Volume Profile
  17. //
  18. //------------------------------------------------------------------------------
  19. //Market Profile
  20. GraphXSpace = 5;
  21. SetChartOptions(0, chartShowDates);
  22. //===========================
  23. Den = Param("Density", 40, 10, 100, 10);
  24. ShowMP = ParamToggle("Show MP", "No|Yes");
  25. ShowVP = ParamToggle("Show VP", "No|Yes");
  26. StyleMP = ParamStyle("style MP", styleLine, maskAll);
  27. StyleVP = ParamStyle("style VP", styleLine, maskAll);
  28. //===========================
  29. BarsInDay = BarsSince(Day() != Ref(Day(), -1)) + 1;
  30. //===========================
  31. NewDay = Day() != Ref(Day(), 1) OR Cum(1) == BarCount;
  32. //===========================
  33. Bot = TimeFrameGetPrice("L", inDaily, 0);
  34. Top = TimeFrameGetPrice("H", inDaily, 0);
  35. Vol = TimeFrameGetPrice("V", inDaily, 0);
  36. //===========================
  37. Range = Highest(Top-Bot);
  38. Box = Range/Den;
  39. VolumeUnit = Vol/BarsInDay;
  40. for (k = 0; k < Den; k++)            // loop through each line (price) starting at the Lowest price
  41. {
  42. Line = Bot + k*Box;
  43. detect = Line >= L & Line <= H;
  44. if(ShowMP == True)
  45. {
  46. CountMPString = IIf(NewDay, Sum(detect, BarsInDay), 0);
  47. CountMPString = Ref(ValueWhen(NewDay, CountMPString, 0), -1);
  48. MpLine = IIf(CountMPString >= BarsInDay, Line, Null);
  49. Plot(MPLine, "", colorRed, styleMP);
  50. }
  51. if(ShowVP == True)
  52. {
  53. CountVPString = IIf(NewDay, Sum(detect*V, BarsInDay)/VolumeUnit, 0);
  54. CountVPString = Ref(ValueWhen(NewDay, CountVPString, 0), -1);
  55. VpLine = IIf(CountVPString >= BarsInDay, Line + Box/4, Null);
  56. // Plot()
  57. Plot(VPLine, "", colorBlue, styleVP);
  58. }
  59. }
  60. Title = "{{NAME}} - {{INTERVAL}} {{DATE}} {{VALUES}} - \c04 Market Profile  \c06 Volume Profile";