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(""); } }
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); } }
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); }