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);
}
}
}