public override void LoadIndexPrice(SeriesIndexPrice pxs) { try { //读数据 string sql = C_SQL_GetIndexPrice; sql += " AND " + base.BuildSQLClauseIn(pxs.Code, "SYMBOL"); sql += " AND Tdate >= '" + pxs.TimeSeriesStartExtended.ToString("yyyyMMdd") + "' AND Tdate <= '" + pxs.TimeSeriesEnd.ToString("yyyyMMdd") + "'"; sql += " ORDER BY Symbol, Tdate Desc"; DataSet ds = base.DBInstance.ExecuteSQL(sql); //更新数据 this.updateIndexPrice(ds, pxs); } catch (Exception ex) { throw ex; } }
private void updateIndexPrice(DataSet ds, SeriesIndexPrice pxs) { DataRow[] rows = ds.Tables[0].Select("SYMBOL='" + pxs.Code + "'"); if (rows.Length > 0) { //基本信息 pxs.DataSource = this.DataSource; pxs.OriginalTimeSeries.Clear(); foreach (DataRow row in rows) { ExchangeTradingPrice px = new ExchangeTradingPrice(); px.TradeDate = DataManager.ConvertToDate(row[C_ColName_TradeDate]); px.PreClose = DataManager.ConvertToDouble(row[C_ColName_PreClose]); px.Close = DataManager.ConvertToDouble(row[C_ColName_Close]); px.High = DataManager.ConvertToDouble(row[C_ColName_High]); px.Low = DataManager.ConvertToDouble(row[C_ColName_Low]); px.Open = DataManager.ConvertToDouble(row[C_ColName_Open]); px.Volume = DataManager.ConvertToDouble(row[C_ColName_Volume]); px.Amount = DataManager.ConvertToDouble(row[C_ColName_Amount]); px.AdjustCoefficient = 1; //判断停牌 if (px.Close == 0) { px.IsTrading = false; px.Close = px.PreClose; } pxs.OriginalTimeSeries.Add(px); } //复权并计算涨跌幅 pxs.Adjust(); } else { MessageManager.GetInstance().AddMessage(MessageType.Warning, Message.C_Msg_ID4, pxs.Code); } }
public abstract void LoadIndexPrice(SeriesIndexPrice pxs);