/// <summary> /// 索引时序数据 /// </summary> /// <param name="code"></param> /// <param name="tu"></param> /// <returns></returns> public TimeSerialsDataSet this[String code] { get { if (timeserials.ContainsKey(code)) { return(timeserials[code]); } if (!securities.ContainsKey(code)) { return(null); } SecurityProperties sp = securities[code]; TimeSerialsDataSet ds = TimeSerialsDataSet.Create(sp, dataPath); timeserials[code] = ds; return(ds); } }
/// <summary> /// 初始化,缺省初始读取日线数据 /// </summary> /// <param name="datapath"></param> public static TimeSerialsDataSet Create(SecurityProperties code, String datapath) { TimeSerialsDataSet ds = new TimeSerialsDataSet(); ds.datapath = datapath; ds.code = code.Code; ds.baseName = code.Exchange + ds.code; String dayFilename = ds.baseName + ".csv"; ds.CreateOrLoad <KLine>("kline", TimeUnit.day); /*KLine kline = new KLine(code.Code, TimeUnit.day); * kline.Load(datapath+"kline\\"+dayFilename, false, ","); * //kline.Load(dayFilename, false, ",", new String[] { "时间", "开盘", "最高", "最低", "收盘", "成交量", "成交额" }); * ConcurrentDictionary<String, Object> datas = new ConcurrentDictionary<string, object>(); * datas["kline"] = kline; * ds.timeSerials.Add(TimeUnit.day, datas);*/ return(ds); }
/// <summary> /// 静态初始化方法 /// </summary> static TimeSerialsDataSet() { IndicatorMetaCollection.META_CUBEBUY.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; return(tsd.CubeCreate(tu, false).buyLine); }; IndicatorMetaCollection.META_CUBESELL.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; return(tsd.CubeCreate(tu, false).sellLine); }; IndicatorMetaCollection.META_CUBEPT.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; return(tsd.CubeCreate(tu, false).buysellPoints); }; IndicatorMetaCollection.META_FUND_TREND.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; return(tsd.FundTrendCreate(tu)); }; IndicatorMetaCollection.META_FUND_CROSS.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; return(tsd.FundTrendCrossCreate(tu)); }; IndicatorMetaCollection.META_MACD.Geneartor = props => { TimeSerialsDataSet tsd = (TimeSerialsDataSet)props["TimeSerialsDataSet"]; TimeUnit tu = (TimeUnit)props["timeunit"]; String dataname = (String)props["name"]; String code = (String)props["code"]; KLine kline = tsd.KLineCreateOrLoad(tu); if (kline == null) { return(null); } return(MACD.Create(kline)); }; }