public List <string> screen() { List <string> stocks = StockPool.getInstance().getAllStocks(); return(filterStocksByCostPerf_PricePos_PE(stocks, "2018", "1", 0.05, 0.5, 40.0)); }
public static bool isUninterestedIndustry(string stockID) { string industryName = StockPool.getInstance().getStockIndustry(stockID); if (industryName == null) { return(false); } return(ms_uninterestIndustries.Contains(industryName)); }
public List <string> screen() { List <string> src = StockPool.getInstance().getAllStocks(); STFilter stFlt = new STFilter(); IndustryExcludeFilter indFlt = new IndustryExcludeFilter(); KLinePatternFilter osFlt = new KLinePatternFilter(new Oversold2Day()); PriceScaleFilter psFlt = new PriceScaleFilter(0.5); List <string> stocks = psFlt.filter(osFlt.filter(indFlt.filter(stFlt.filter(src)))); return(stocks); }
public static void filterStocksByPriceScaleAndPE(double ratio, double pe, string filepath) { List <string> stocks = new List <string>(); PEFilter peFilter = new PEFilter(pe); PriceScaleFilter priceFilter = new PriceScaleFilter(ratio); List <string> shStocks = peFilter.filter(priceFilter.filter(StockPool.getInstance().allSHStocks)); List <string> szStocks = peFilter.filter(priceFilter.filter(StockPool.getInstance().allSZStocks)); stocks.AddRange(shStocks); stocks.AddRange(szStocks); StockListFileUtil.writeStocksToFile(stocks, filepath); }
public List <string> screen() { List <string> stocks = null; if (m_useIntermediate) { stocks = IntermediateImporter.readLowPriceStocks(); } else { stocks = StockPool.getInstance().getAllStocks(); } return(filterStocksByPriceScale_PE_Eps(stocks, 0.3, 40.0, 0.2)); }
public IActionResult OnGet(int?id) { if (id == null) { return(this.NotFound()); } this.stockPool = this.stockPoolService.GetStockPool(id.Value); if (this.stockPool == null) { return(this.NotFound()); } return(this.Page()); }
public static bool isSTStock(string stockID) { string stockName = StockPool.getInstance().getStockName(stockID); if (stockName == null) { return(false); } if (stockName.Contains("ST")) { return(true); } return(false); }
public bool calcAvgValInIndustry(string stockID, out double val) { val = 0.0; if (m_comparer == null) { return(false); } string industryName = StockPool.getInstance().getStockIndustry(stockID); string comparerName = m_comparer.getFilterDesc(); bool ret = true; if (!StockDataCache.getInstance().getAvgValInIndustry(comparerName, industryName, out val)) { double accumVal = 0.0; int accumCount = 0; List <string> stocksInIndustry = StockPool.getInstance().getStocksInIndustry(industryName); foreach (string code in stocksInIndustry) { double curVal = 0.0; if (m_comparer.getNumericValue(code, out curVal)) { if (m_comparer.needLimitValue() && !m_comparer.isValueValid(curVal)) { curVal = m_comparer.getLimitValue(); } accumVal += curVal; accumCount++; } } if (accumCount > 0) { val = accumVal / accumCount; StockDataCache.getInstance().setAvgValInIndustry(comparerName, industryName, val); } else { ret = false; } } return(ret); }
static void Main(string[] args) { GlobalConfig.getInstance().init(); StockPool.getInstance().init(); OptionalStocks.getInstance().init(); //double ratio = calcCostPerfInHistory("sh603067"); //double r2 = calcCostPerfInHistory("sh600995"); //StockRealTimeData rd = StockDataCenter.getInstance().queryRealTimeData("sz000662"); double pe = 0; DynamicPEFilter.calcDynamicPE("sz002551", out pe); while (true) { Thread.Sleep(1000); } }
public int calcRankInIndustry(string stockID) { if (m_comparer == null) { return(-1); } string industryName = StockPool.getInstance().getStockIndustry(stockID); List <string> stocksInIndustry = StockPool.getInstance().getStocksInIndustry(industryName); List <RankMetadata> sortableArr = new List <RankMetadata>(); foreach (string code in stocksInIndustry) { double val = 0.0; if (!m_comparer.getNumericValue(code, out val)) { continue; } RankMetadata md = new RankMetadata(code, val); sortableArr.Add(md); } sortableArr.Sort(); int i = 0; for (i = 0; i < sortableArr.Count; i++) { if (sortableArr[i].stockID.Equals(stockID)) { break; } } if (i == sortableArr.Count) { return(-1); } return(i + 1); }
public void SetUp() { this.stockPool1 = new StockPool { Id = 1, StockPoolCode = "one" }; this.stockPool2 = new StockPool { Id = 2, StockPoolCode = "two" }; this.StockPoolFacadeService.GetAll() .Returns(new SuccessResult <IEnumerable <StockPool> >(new List <StockPool> { this.stockPool1, this.stockPool2 })); this.Response = this.Browser.Get( "/inventory/stock-pools", with => { with.Header("Accept", "application/json"); }).Result; }
public static bool isInBlackList(string stockID) { return(StockPool.getInstance().blackList.Contains(stockID)); }
private void button_src_defaultAll_Click(object sender, EventArgs e) { AppStockData.getInstance().m_srcList.copy(StockPool.getInstance().getAllStocks()); refreshSrcList(); }
public override void exec() { //var a = analytic.hitkeyprices(); //log.Info(a.ToCsv()); //return; log.Info("run strategy " + param.name.ToLower()); log.Info("get codes"); universe universe; if (param.astock) { var codes = param.universe.Split(new[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); universe = new universe(param.universe, codes); } else if (param.asector) { universe = new universe(param.universe, new Trade.Db.db().codes(param.universe).ToArray()); } else { universe = getUniverse(param.universe); } log.Info("total " + universe.codes.Length); log.Info("get run"); var pool = new StockPool(universe.codes); var orders = !param.backtest ? new IOrder[] { new dbOrder(), new smsOrder() } : new IOrder[] { new dbOrder() }; var portflio = (param.portflio ?? param.name.ToLower()) + (param.backtest ? "-backtest" : ""); var account = new Account(portflio, pool, orders, param.backtest); switch (param.name.ToLower()) { case "macd15min": new strategies.macd15minstrategy().Run(account); break; } if (param.backtest) { log.Info("run back test"); var client = new kdatadb(); log.InfoFormat("total {0}", account.universe.Count); var pnls = new List <pnl>(); foreach (var stock in account.universe.AsParallel()) { log.InfoFormat("run {0}", stock.Code); var k = client.kdata(stock.Code, "D"); if (k == null && !k.Any()) { log.WarnFormat("empty data set for {0}", stock.Code); continue; } var trades = account.Trades .Where(p => p.code == stock.Code) //.Where(p=>p.Date >= new DateTime(2016,9,1)) .OrderBy(p => p.date) .ToArray(); var backtest = new backtesting(stock.Code, k.close(), trades); if (backtest.pnl != null) { pnls.Add(backtest.pnl); } } var format = "{0,-15}{1,-20}{2,10:N0}{3,10:N0}{4,10:N1}"; log.InfoFormat(format, "code", "date", "value", "capital", "ratio%"); foreach (var pnl in pnls) { log.InfoFormat(format, pnl.code, pnl.date, pnl.value, pnl.capital, pnl.ratio); } } log.Info("**********DONE**********"); }
public static bool isStockInIndustry(string stockID, string inddustry) { string industryName = StockPool.getInstance().getStockIndustry(stockID); return(inddustry == industryName); }
public Form1() { InitializeComponent(); m_dt = new StockPool(); }
static void Main(string[] args) { GlobalConfig.getInstance().init(); StockPool.getInstance().init(); OptionalStocks.getInstance().init(); // #1 //LowLevelCheapPESelector s = new LowLevelCheapPESelector(); //List<string> stocks = s.screen(); // #2 //List<string> src = new List<string>(); //src.Add("sh600097"); //PEFilter peFilter = new PEFilter(40); //IndustryFilter indFilter = new IndustryFilter(); //EPSPerfFilter epsFilter = new EPSPerfFilter(0.2); //List<string> r0 = peFilter.filter(src); //List<string> r1 = indFilter.filter(r0); //List<string> stocks = epsFilter.filter(r1); //foreach (string stockCode in stocks) //{ // Logger.debugOutput(stockCode); //} // #3 //string curYear = "2018"; //string curSeason = "1"; ////string targetYear = "2013"; ////string targetSeason = "1"; //string stc1 = "sh600995"; //string stc2 = "sz000883"; //double curVal1 = CostPerfFilter.calcCostRefValue(stc1, curYear, curSeason); //double curVal2 = CostPerfFilter.calcCostRefValue(stc2, curYear, curSeason); ////double targVal1 = CostPerfFilter.calcCostRefValue(stc1, targetYear, targetSeason); ////double targVal2 = CostPerfFilter.calcCostRefValue(stc2, targetYear, targetSeason); ////double param = curVal1 / targVal1 - curVal2 / targVal2; //double histVal1 = CostPerfFilter.getMaxCostRefValueBefore(stc1, curYear, curSeason); //double histVal2 = CostPerfFilter.getMaxCostRefValueBefore(stc2, curYear, curSeason); //double param = curVal1 / histVal1 - curVal2 / histVal2; // #4 //HighCostPerfNotHighPosSelector s = new HighCostPerfNotHighPosSelector(); //List<string> stocks = s.screen(); // #5 //List<string> src = IntermediateImporter.readCheapStocks(); //List<StockSortableMetadata> target = new List<StockSortableMetadata>(); //foreach(string stockID in src) //{ // if (IndustryFilter.isStockInIndustry(stockID, "银行")) // { // continue; // } // StockSortableMetadata sd = new SSMDCostPerf(stockID); // target.Add(sd); //} //target.Sort(); //List<string> stocks = new List<string>(); //for(int i = target.Count - 1; i >= 0; i--) //{ // stocks.Add(target[i].stockID); //} //foreach (string stockCode in stocks) //{ // Logger.debugOutput(stockCode); //} // #6 string stockID = "sz000034"; double curVal = CostPerfFilter.calcCurCostRefValue(stockID, "2018", "1"); int maxYearDyn = 0, maxQuarterDyn = 0, maxYearAnl = 0; double refValByReport = CostPerfFilter.getMaxCostRefValueBefore(stockID, "2018", "1", out maxYearDyn, out maxQuarterDyn); double refValByAnnual = AnnualCostPerfFilter.getMaxAnnualCostRefValueBefore(stockID, "2018", out maxYearAnl); double refVal = Math.Max(refValByReport, refValByAnnual); double ratio = curVal / refVal; // #7 //List<string> selfSelectedList = OptionalStocks.getInstance().optionalStockList; //List<StockSortableMetadata> selfSelectSortByQuarter = new List<StockSortableMetadata>(); //List<StockSortableMetadata> selfSelectSortByYoy = new List<StockSortableMetadata>(); //List<StockSortableMetadata> selfSelectSortByNormal = new List<StockSortableMetadata>(); //List<StockSortableMetadata> selfSelectSortByAnnual = new List<StockSortableMetadata>(); //foreach (string stockCode in selfSelectedList) //{ // StockSortableMetadata sdn = new SSMDCostPerf(stockCode); // StockSortableMetadata sdq = new SSMDQuarterCostPerf(stockCode); // StockSortableMetadata sdy = new SSMDCostPerf(stockCode); // StockSortableMetadata sda = new SSMDAnnualCostPerf(stockCode); // selfSelectSortByQuarter.Add(sdq); // selfSelectSortByNormal.Add(sdn); // selfSelectSortByYoy.Add(sdy); // selfSelectSortByAnnual.Add(sda); //} //selfSelectSortByQuarter.Sort(); //selfSelectSortByQuarter.Reverse(); //selfSelectSortByNormal.Sort(); //selfSelectSortByNormal.Reverse(); //selfSelectSortByYoy.Sort(); //selfSelectSortByYoy.Reverse(); //selfSelectSortByAnnual.Sort(); //selfSelectSortByAnnual.Reverse(); //Logger.log("Normal sort: "); //outputSortData(selfSelectSortByNormal); //Logger.log("Quarter sort: "); //outputSortData(selfSelectSortByQuarter); //Logger.log("Yoy sort: "); //outputSortData(selfSelectSortByYoy); //Logger.log("Annual sort: "); //outputSortData(selfSelectSortByAnnual); // #8 //List<string> src = IntermediateImporter.readMidRepGrowthStocks(); //AnnualCostPerfFilter acpFilter = new AnnualCostPerfFilter("2018", "1", 0.0); //PriceScaleFilter pcFilter = new PriceScaleFilter(0.5); //List<string> stocks = pcFilter.filter(acpFilter.filter(src)); //List<StockSortableMetadata> arr = new List<StockSortableMetadata>(); //foreach(string code in stocks) //{ // StockSortableMetadata sda = new SSMDAnnualCostPerf(code); // arr.Add(sda); //} //arr.Sort(); //outputSortData(arr); // #9 //OversoldSelector s = new OversoldSelector(); //List<string> stocks = s.screen(); //List<StockSortableMetadata> stocksSortByAnnual = new List<StockSortableMetadata>(); //foreach (string stockCode in stocks) //{ // StockSortableMetadata sda = new SSMDAnnualCostPerf(stockCode); // stocksSortByAnnual.Add(sda); //} //stocksSortByAnnual.Sort(); //outputSortData(stocksSortByAnnual); // # temp //string stockID = "sh600703"; //string str = StockDataCollector.queryKLineDataBaidu(stockID); //List<StockKLineBaidu> arr = StockDataConvertor.parseKLineArrayBaiduAdvanced(str); //int endIndex = StockDataUtil.getIndexByDate(arr, "20180426"); //List<StockKLineBaidu> subArr = arr.GetRange(0, endIndex + 1); //Oversold2Day osp = new Oversold2Day(); //bool ret = osp.isMatch(subArr); while (true) { Thread.Sleep(1000); } }
static void initCore() { GlobalConfig.getInstance().init(); StockPool.getInstance().init(); }