示例#1
0
        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**********");
        }
示例#2
0
        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());
        }
示例#3
0
        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**********");
        }
示例#4
0
        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**********");
        }
示例#5
0
        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**********");
        }
示例#6
0
        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**********");
        }