public override void exec() { log.Info("**********START**********"); var db = new Db.db(); var funds = private_fund_position.funds; for (var i = 0; i < funds.Length; ++i) { var fund = funds.ElementAt(i); try { log.Info($"{i+1}/{funds.Length} get {fund}"); Thread.Sleep(5 * 1000); var s = private_fund_position.get(fund); log.Info($"{i + 1}/{funds.Length} got {fund}, total {s.Length}"); db.save(s); } catch (Exception e) { log.Warn("ex @ get " + fund, e); } } log.Info("**********DONE**********"); }
IEnumerable <kdata> kdata(Db.db db, Dictionary <string, kdata> cache, IEnumerable <string> codes, string ktype) { var list = new List <kdata>(); var notincache = new List <string>(); foreach (var code in codes) { var key = code + ktype; if (cache.ContainsKey(key)) { list.Add(cache[key]); } else { notincache.Add(code); } } var data = new kdatadb().kdata(notincache, ktype); foreach (var d in data) { var key = d.Code + ktype; cache[key] = d; } return(list.Concat(data).ToArray()); }
public override void exec() { log.Info("**********START**********"); var cache = new Dictionary <string, kdata>(); var db = new Db.db(); var kdatadb = new kdatadb(); var sectors = db.sectors(); var i = 0; var count = sectors.Count(); foreach (var sector in sectors) { Interlocked.Increment(ref i); log.InfoFormat("{0}/{1} calc sector {2}", i, count, sector); var codes = db.codes(sector); if (!codes.Any()) { log.WarnFormat("empty data set for sector {0}", sector); continue; } new kdatadb().save(sum(sector, kdata(db, cache, codes, "5")), "5"); kdatadb.save(sum(sector, kdata(db, cache, codes, "15")), "15"); kdatadb.save(sum(sector, kdata(db, cache, codes, "30")), "30"); kdatadb.save(sum(sector, kdata(db, cache, codes, "60")), "60"); kdatadb.save(sum(sector, kdata(db, cache, codes, "D")), "D"); kdatadb.save(sum(sector, kdata(db, cache, codes, "W")), "W"); kdatadb.save(sum(sector, kdata(db, cache, codes, "M")), "M"); } log.Info("**********DONE**********"); }
public override void exec() { log.Info("**********START**********"); var db = new Db.db(); var codes = db.fenjib_fund_codes(); var validcodes = db.basicnames().GroupBy(p => p.code).ToDictionary(p => p.Key, p => p.First().code); for (var i = 0; i < codes.Count(); ++i) { var code = codes.ElementAt(i); try { log.Info($"{i}/{codes.Count()} get {code}"); var s = fenjib.get(code).Where(p => validcodes.ContainsKey(p.stock_code)).ToArray(); db.save(s); } catch (Exception e) { log.Warn("ex @ get " + code, e); } } log.Info("**********DONE**********"); }
public override void exec() { log.Info("**********START**********"); var cache = new Dictionary <string, kdata>(); var db = new Db.db(); var codes = db.codes(); var i = 0; var count = codes.Count(); var keypricedates = db.keypricedates(); var ktypes = new[] { "5", "15", "30", "60", "D", "W", "M" }; foreach (var code in codes.AsParallel()) { Interlocked.Increment(ref i); log.InfoFormat("{0}/{1} calc {2}", i, count, code); foreach (var ktype in ktypes) { try { var key = code + ktype; var o = analytic.keyprice(code, ktype); o = o.Where(p => !keypricedates.ContainsKey(key) || (keypricedates.ContainsKey(key) && p.Date > keypricedates[key])) .ToArray(); db.save(ktype, o); } catch (Exception e) { log.Warn("ex @ calc " + code + " for " + ktype, e); } } } log.Info("**********DONE**********"); }
public override void exec() { log.Info("**********START**********"); var cache = new Dictionary <string, kdata>(); var db = new Db.db(); var codes = db.codes(); var i = 0; var count = codes.Count(); var ktypes = new[] { "5", "15", "30", "60", "D", "W", "M" }; foreach (var code in codes.AsParallel()) { Interlocked.Increment(ref i); log.InfoFormat("{0}/{1} calc {2}", i, count, code); foreach (var ktype in ktypes) { try { var kdata = new kdatadb().kdata(code, ktype); if (kdata != null && kdata.Any()) { var date = kdata.Last().date; var close = kdata.close(); var macd = new MACD(close); var macdvol = new MACD(kdata.volume(100)); var ma5 = new MA(close, 5); var ma10 = new MA(close, 10); var ma20 = new MA(close, 20); var ma30 = new MA(close, 30); var ma60 = new MA(close, 60); var ma120 = new MA(close, 120); var chg = new CHG(close); var ka = new kanalytic() { code = code, date = date, ktype = ktype, close = kdata.Last().close.ZeroNaN(), open = kdata.Last().open.ZeroNaN(), high = kdata.Last().high.ZeroNaN(), low = kdata.Last().low.ZeroNaN(), volume = kdata.Last().volume.ZeroNaN(), chg = chg.Last().Value.ZeroNaN(), ma5 = ma5.Last().Value.ZeroNaN(), ma10 = ma10.Last().Value.ZeroNaN(), ma20 = ma20.Last().Value.ZeroNaN(), ma30 = ma30.Last().Value.ZeroNaN(), ma60 = ma60.Last().Value.ZeroNaN(), ma120 = ma120.Last().Value.ZeroNaN(), dea = macd.Last().DEA.ZeroNaN(), macd = macd.Last().MACD.ZeroNaN(), dif = macd.Last().DIF.ZeroNaN(), deavol = macdvol.Last().DEA.ZeroNaN(), macdvol = macdvol.Last().MACD.ZeroNaN(), difvol = macdvol.Last().DIF.ZeroNaN() }; db.save(new[] { ka }); } } catch (Exception e) { log.Warn("ex @ calc " + code + " for " + ktype, e); } } } log.Info("**********DONE**********"); }