using Muchinfo.Quote; using MuchInfo.Chart.Data.EnumTypes; using MuchInfo.Chart.Data.Interfaces; using MuchInfo.Chart.Data.Models; using System.Collections.Generic; using System.Linq; namespace MuchInfo.Chart.App.Quote { public static class HistoryCycleExtensions { /// /// 行情组件Cycle转换为图表CycleType /// /// The cycle. /// CycleType. public static CycleType ToCycleType(this Cycle cycle) { switch (cycle) { case Cycle.Minute: return CycleType.Minute; case Cycle.Minute5: return CycleType.Minute5; case Cycle.Minute30: return CycleType.Minute30; case Cycle.Minute240: return CycleType.Minute240; case Cycle.Day: return CycleType.Day; case Cycle.Week: return CycleType.Week; case Cycle.Month: return CycleType.Month; case Cycle.Quarter: return CycleType.Quarter; case Cycle.Year: return CycleType.Year; default: return CycleType.Minute; } } /// /// 行情组件Cycle转换为图表CycleType /// /// Type of the cycle. /// Cycle. public static Cycle ToCycle(this CycleType cycleType) { switch (cycleType) { case CycleType.Minute: return Cycle.Minute; case CycleType.Minute5: return Cycle.Minute5; case CycleType.Minute30: return Cycle.Minute30; case CycleType.Minute240: return Cycle.Minute240; case CycleType.Day: return Cycle.Day; case CycleType.Week: return Cycle.Week; case CycleType.Month: return Cycle.Month; case CycleType.Quarter: return Cycle.Quarter; case CycleType.Year: return Cycle.Year; case CycleType.Custom: return Cycle.Custom; default: //行情组件里没有定义的都为自定义 return Cycle.Custom; } } public static List ToDataPointList(this HistoryCycle[] list) { var result = new List(); if (list != null && list.Any()) { foreach (var history in list) { var barDataPoint = history.ToBarDataPoint(); if (barDataPoint == null) continue; result.Add(history.ToBarDataPoint()); } } return result; } public static IBarDataPoint ToBarDataPoint(this HistoryCycle history) { return new BarDataPoint(history.StartTime, (float)history.Opened, (float)history.Highest, (float)history.Lowest, (float)history.Closed, history.TotalVolume, (float)history.TotalTurnover, history.HoldVolume); } } }