public List <Rank> Process() { lstRankAll = GetFundEquityInfo.Instance.GetAllRankList(); foreach (Rank oRank in lstRankAll) { fdpInfo = GetFundEquityInfo.Instance.GetFormatedFundInfo(oRank.Symbol, DateService.ThisTimeLastYear(), DateTime.Now); double[] emaFast = MathUtil.CalcEMA(fdpInfo.getPrice(PriceConstants.PRICE_CLOSE), FastPeriod); double[] emaSlow = MathUtil.CalcEMA(fdpInfo.getPrice(PriceConstants.PRICE_CLOSE), SlowPeriod); double[] emaDiff = MathUtil.CalcDiff(emaFast, emaSlow); double[] dea = MathUtil.CalcEMA(emaDiff, SignalPeriod); double[] macdDiff = MathUtil.CalcDiff(emaDiff, dea); if (macdDiff[macdDiff.Length - 1] > 0) { lstRankSelected.Add(oRank); } } return(lstRankSelected); }