public List <string> doFilter(List <string> stocks) { List <string> src = new List <string>(); src.AddRange(stocks); List <string> target = new List <string>(); target.AddRange(stocks); for (int i = 0; i < ms_filterSequence.Length; i++) { AppFilterType type = ms_filterSequence[i]; if (m_conditionMap.ContainsKey(type)) { AppFilterItem item = m_conditionMap[type]; IStockFilter flt = item.generateFilter(); if (flt != null) { target = flt.filter(src); outputInfo(item, src.Count, target.Count); src.Clear(); src.AddRange(target); } } } return(target); }
protected IStockFilter generateHolderCountFilter() { IStockFilter filter = null; AppHolderCountFilterSubType hcfType = (AppHolderCountFilterSubType)m_subType; string year = GlobalConfig.getInstance().curYear; string quarter = GlobalConfig.getInstance().curQuarter; int continousQuarter = (int)m_param1; switch (hcfType) { case AppHolderCountFilterSubType.HCFST_AccumRatio: double ratio = double.Parse(m_param2); filter = new HolderChangeRatioFilter(year, quarter, ratio, continousQuarter); break; case AppHolderCountFilterSubType.HCFST_Decrease: bool allowInvariant = bool.Parse(m_param2); filter = new HolderCountTrendFilter(year, quarter, continousQuarter, allowInvariant); break; default: break; } return(filter); }
protected IStockFilter generateInIndustryFilter() { IStockFilter filter = null; NumericStockFilter comparer = null; AppInIndustryFilterSubType indType = (AppInIndustryFilterSubType)m_subType; string year = GlobalConfig.getInstance().curYear; string quarter = GlobalConfig.getInstance().curQuarter; switch (indType) { case AppInIndustryFilterSubType.IIFST_CostAnnual: comparer = new AnnualCostPerfFilter(year, quarter, 0.0); break; case AppInIndustryFilterSubType.IIFST_CostDynamic: comparer = new CostPerfFilter(year, quarter, 0.0); break; case AppInIndustryFilterSubType.IIFST_PEDynamic: comparer = new DynamicPEFilter(0.0); break; case AppInIndustryFilterSubType.IIFST_PEStatic: comparer = new PEFilter(0.0); break; case AppInIndustryFilterSubType.IIFST_ROE: comparer = new ROEFilter(year, quarter, 0.0); break; case AppInIndustryFilterSubType.IIFST_NetProfitRatio: comparer = new NetProfitRatioFilter(year, quarter, 0.0); break; default: break; } if (comparer != null) { filter = new AvgValInIndustryFilter(comparer, m_param1); } return(filter); }
public GetBetDecisions( IStockDataProvider stockDataProvider, IStockFilter stockFilter, IInvestDecider investDecider, ICommandBus commandBus, IUpdate priceUpdate) { Condition.Requires(stockDataProvider).IsNotNull(); Condition.Requires(stockFilter).IsNotNull(); Condition.Requires(investDecider).IsNotNull(); Condition.Requires(commandBus).IsNotNull(); Condition.Requires(priceUpdate).IsNotNull(); this._stockDataProvider = stockDataProvider; this._stockFilter = stockFilter; this._investDecider = investDecider; this._commandBus = commandBus; this._priceUpdate = priceUpdate; }
protected IStockFilter generatePEFilter() { IStockFilter filter = null; AppPEFilterSubType peType = (AppPEFilterSubType)m_subType; switch (peType) { case AppPEFilterSubType.PEFST_Dynamic: filter = new PEFilter(m_param1); break; case AppPEFilterSubType.PEFST_Static: filter = new DynamicPEFilter(m_param1); break; default: break; } return(filter); }
protected IStockFilter generateCostFilter() { IStockFilter filter = null; AppCostFilterSubType cfType = (AppCostFilterSubType)m_subType; string year = GlobalConfig.getInstance().curYear; string quarter = GlobalConfig.getInstance().curQuarter; switch (cfType) { case AppCostFilterSubType.CFST_Annual: filter = new AnnualCostPerfFilter(year, quarter, m_param1); break; case AppCostFilterSubType.CFST_Dynamic: filter = new CostPerfFilter(year, quarter, m_param1); break; case AppCostFilterSubType.CFST_Quarter: filter = new QuarterCostPerfFilter(year, quarter, m_param1); break; case AppCostFilterSubType.CFST_Spec: string refYear = GlobalConfig.getInstance().defaultRefYear; filter = new SpecifiedCostPerfFilter(refYear, quarter, year, quarter, m_param1); break; case AppCostFilterSubType.CFST_Yoy: filter = new CostPerfYoyFilter(year, quarter, m_param1); break; default: break; } return(filter); }
public IStockFilter generateFilter() { IStockFilter filter = null; string year = GlobalConfig.getInstance().curYear; string quarter = GlobalConfig.getInstance().curQuarter; switch (m_type) { case AppFilterType.FLTT_Cost: filter = generateCostFilter(); break; case AppFilterType.FLTT_PE: filter = generatePEFilter(); break; case AppFilterType.FLTT_InIndustry: filter = generateInIndustryFilter(); break; case AppFilterType.FLTT_PriceScale: filter = new PriceScaleFilter(m_param1); break; case AppFilterType.FLTT_Distrib: filter = new DistribBonusFilter(year, quarter, m_param1); break; case AppFilterType.FLTT_ExcludeIndustry: filter = new IndustryExcludeFilter(); break; case AppFilterType.FLTT_STStocks: filter = new STFilter(); break; case AppFilterType.FLTT_ROE: filter = new ROESustainedFilter(year, quarter, m_param1, int.Parse(m_param2)); break; case AppFilterType.FLTT_NetProfitRatio: filter = new NetProfitRatioSustainedFilter(year, quarter, m_param1, int.Parse(m_param2)); break; case AppFilterType.FLTT_IncludeIndustry: string[] arr = m_param2.Split(';'); List <string> industries = new List <string>(); industries.AddRange(arr); filter = new IndustryIncludeFilter(industries); break; case AppFilterType.FLTT_HolderCount: filter = generateHolderCountFilter(); break; case AppFilterType.FLTT_StableProfit: int yearsCount = int.Parse(m_param2); filter = new QuarterNetProfitFilter(year, quarter, yearsCount, 0.1); // AnnualNetProfitFilter(year, quarter, yearsCount, 0.1); break; case AppFilterType.FLTT_Amplitude: int daysCount = int.Parse(m_param2); filter = new AvgAmplitudeFilter(m_param1, daysCount); break; case AppFilterType.FLTT_SubNew: filter = new SubNewFilter(); break; case AppFilterType.FLTT_PBCost: filter = new AnnualPBCostFilter(year, quarter, m_param1); break; case AppFilterType.FLTT_BlackList: filter = new BlackListFilter(); break; default: break; } return(filter); }