Beispiel #1
0
        private string judgeStrategy(quotationstate state, kdatapoint price, double ma120)
        {
            switch (state)
            {
            case quotationstate.调整:
                return(price.close > ma120 ? "减仓" : "清仓");

            case quotationstate.反弹:
                return("高抛低吸");

            case quotationstate.升:
                return("持股不动");

            case quotationstate.回升:
                return("持股不动");

            case quotationstate.回调:
                return("高抛低吸");

            default:
                return("");
            }
        }
Beispiel #2
0
        private double judgePosition(quotationstate state, kdatapoint price, double ma120)
        {
            switch (state)
            {
            case quotationstate.调整:
                return(price.close > ma120 ? 25 :0);

            case quotationstate.反弹:
                return(50);

            case quotationstate.升:
                return(100);

            case quotationstate.回升:
                return(100);

            case quotationstate.回调:
                return(100);

            default:
                return(0d);
            }
        }
Beispiel #3
0
        IEnumerable <kdatapoint> kupdate(IEnumerable <kdatapoint> p, string code, string ktype)
        {
            if (p.Any())
            {
                switch (ktype)
                {
                case "5":
                case "15":
                case "30":
                case "60":
                {
                    var perunit  = int.Parse(ktype);
                    var kcurrent = p.Last().date;
                    var kt       = ktoday(code);
                    var eodtoday = new DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 15, 30, 0);
                    if (kcurrent < eodtoday)
                    {
                        if (kt.Any())
                        {
                            var s = kt
                                    .Where(p1 => p1.ts > kcurrent)
                                    .OrderBy(p1 => (DateTime)p1.ts)
                                    .Select(t =>
                                {
                                    var ts = ((DateTime)t.ts);

                                    var afeernoon = new DateTime(ts.Year, ts.Month, ts.Day, 13, 30, 0);
                                    var eod       = new DateTime(ts.Year, ts.Month, ts.Day, 15, 30, 0);

                                    var sod  = new DateTime(ts.Year, ts.Month, ts.Day, 9, 30, 0);
                                    var noon = new DateTime(ts.Year, ts.Month, ts.Day, 11, 30, 0);

                                    var datetime = ts < sod
                                                            ? ts.NearestKMinutes(sod, perunit, noon)
                                                            : ts.NearestKMinutes(afeernoon, perunit, eod);

                                    return(new kdatapoint()
                                    {
                                        date = datetime,
                                        open = (double)t.open,
                                        close = (double)t.trade,
                                        high = (double)t.high,
                                        low = (double)t.low,
                                        volume = (double)t.volume / 100d
                                    });
                                })
                                    .ToArray();

                            s = s.Concat(p).ToArray();
                            var dict = new SortedDictionary <DateTime, kdatapoint>();
                            foreach (var i in s)
                            {
                                dict[i.date] = i;
                            }

                            p = dict.Values;
                        }
                    }
                }
                break;

                case "D":
                case "W":
                case "M":
                {
                    var current  = p.Last();
                    var kcurrent = current.date;
                    if (kcurrent < DateTime.Today)
                    {
                        var kt = ktoday(code);
                        if (kt.Any())
                        {
                            var t = kt.OrderByDescending(p1 => p1.ts).First();
                            if (((DateTime)t.ts) > kcurrent)
                            {
                                var dt = (DateTime)t.ts;
                                var kp = new kdatapoint()
                                {
                                    date   = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0),
                                    open   = (double)t.open,
                                    close  = (double)t.trade,
                                    high   = (double)t.high,
                                    low    = (double)t.low,
                                    volume = (double)t.volume / 100d
                                };
                                p = p.Concat(new[] { kp }).ToArray();

                                var dict = new SortedDictionary <DateTime, kdatapoint>();
                                foreach (var i in p)
                                {
                                    dict[i.date] = i;
                                }

                                p = dict.Values;
                            }
                        }
                    }
                }
                break;
                }
            }

            return(p);
        }