HistoryCycleExtensions.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. using Muchinfo.Quote;
  2. using MuchInfo.Chart.Data.EnumTypes;
  3. using MuchInfo.Chart.Data.Interfaces;
  4. using MuchInfo.Chart.Data.Models;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace MuchInfo.Chart.App.Quote
  8. {
  9. public static class HistoryCycleExtensions
  10. {
  11. /// <summary>
  12. /// 行情组件Cycle转换为图表CycleType
  13. /// </summary>
  14. /// <param name="cycle">The cycle.</param>
  15. /// <returns>CycleType.</returns>
  16. public static CycleType ToCycleType(this Cycle cycle)
  17. {
  18. switch (cycle)
  19. {
  20. case Cycle.Minute:
  21. return CycleType.Minute;
  22. case Cycle.Minute5:
  23. return CycleType.Minute5;
  24. case Cycle.Minute30:
  25. return CycleType.Minute30;
  26. case Cycle.Minute240:
  27. return CycleType.Minute240;
  28. case Cycle.Day:
  29. return CycleType.Day;
  30. case Cycle.Week:
  31. return CycleType.Week;
  32. case Cycle.Month:
  33. return CycleType.Month;
  34. case Cycle.Quarter:
  35. return CycleType.Quarter;
  36. case Cycle.Year:
  37. return CycleType.Year;
  38. default:
  39. return CycleType.Minute;
  40. }
  41. }
  42. /// <summary>
  43. /// 行情组件Cycle转换为图表CycleType
  44. /// </summary>
  45. /// <param name="cycleType">Type of the cycle.</param>
  46. /// <returns>Cycle.</returns>
  47. public static Cycle ToCycle(this CycleType cycleType)
  48. {
  49. switch (cycleType)
  50. {
  51. case CycleType.Minute:
  52. return Cycle.Minute;
  53. case CycleType.Minute5:
  54. return Cycle.Minute5;
  55. case CycleType.Minute30:
  56. return Cycle.Minute30;
  57. case CycleType.Minute240:
  58. return Cycle.Minute240;
  59. case CycleType.Day:
  60. return Cycle.Day;
  61. case CycleType.Week:
  62. return Cycle.Week;
  63. case CycleType.Month:
  64. return Cycle.Month;
  65. case CycleType.Quarter:
  66. return Cycle.Quarter;
  67. case CycleType.Year:
  68. return Cycle.Year;
  69. case CycleType.Custom:
  70. return Cycle.Custom;
  71. default:
  72. //行情组件里没有定义的都为自定义
  73. return Cycle.Custom;
  74. }
  75. }
  76. public static List<ILineDataPoint> ToDataPointList(this HistoryCycle[] list)
  77. {
  78. var result = new List<ILineDataPoint>();
  79. if (list != null && list.Any())
  80. {
  81. foreach (var history in list)
  82. {
  83. var barDataPoint = history.ToBarDataPoint();
  84. if (barDataPoint == null) continue;
  85. result.Add(history.ToBarDataPoint());
  86. }
  87. }
  88. return result;
  89. }
  90. public static IBarDataPoint ToBarDataPoint(this HistoryCycle history)
  91. {
  92. return new BarDataPoint(history.StartTime, (float)history.Opened, (float)history.Highest, (float)history.Lowest,
  93. (float)history.Closed, history.TotalVolume, (float)history.TotalTurnover, history.HoldVolume);
  94. }
  95. }
  96. }