public List <DistributeValue> GetDistributeTrendByMarket(List <IMarketData> dataList) { var l = GetDistributeCube(dataList); if (!IsIncludeZero) { l = l.Where(v => Math.Abs(v.Value) > CommonProc.EPSILON).ToList(); } var nl = l.Select(v => v.Name).Distinct().ToList(); var tl = l.Select(v => v.Time).Distinct().ToList(); var rl = new List <DistributeValue>(); tl.ForEach(t => { var ml = l.Where(c => c.Time == t).ToList(); var statisticList = ml.Select(m => m.Value).ToList(); nl.ForEach(v => { var data = ml.FirstOrDefault(c => c.Time == t); rl.Add(new DistributeValue() { Name = v, Time = t, Value = Distribute.GetDistance(data.Value, statisticList) }); }); }); return(rl); }
public double GetDistanceByTime(List <IMarketData> dataList, string targetName) { var l = GetDistributeCube(dataList); l = l.Where(v => v.Name == targetName).ToList(); if (!IsIncludeZero) { l = l.Where(v => Math.Abs(v.Value) > CommonProc.EPSILON).ToList(); } return(Distribute.GetDistance(l.OrderBy(v => v.Time).LastOrDefault().Value, l.Select(v => v.Value).ToList())); }