/// <summary> /// 获取多头空头状态,0:表示多头,1:表示空头; /// </summary> private int GetSideState(TradeInfo_O32 row) { switch (row.C_ENTRUST_DIRECTION) { case 'X': // 卖出开仓,看跌 case 'Y': // 买入平仓,看跌 return 1; case 'V': // 买入开仓,看涨 case 'W': // 卖出平仓,看涨 return 0; default: return 0; } }
protected int GetDirection(TradeInfo_O32 row) { switch (row.C_ENTRUST_DIRECTION) { case 'X': case 'V': return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUT_OPEN); case 'Y': case 'W': return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUT_CLOSE); case 'P': // ETF基金申购 return DirectionCoding.GetDirectionCode(TradeType.TRADE_ETF_SUBSCRIPTION); case 'Q': // ETF基金赎回 return DirectionCoding.GetDirectionCode(TradeType.TRADE_ETF_REDUMPTION); case 'm': // 基金分拆 return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUND_SPLIT); case 'n': // 基金合并 return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUND_MERGE); case 'p': // 开基申购 return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUND_SUBSCRIPTION); case 'q': // 开基赎回 return DirectionCoding.GetDirectionCode(TradeType.TRADE_FUND_REDUMPTION); default: { if (row.VC_REPORT_DIRECTION == "B" || row.VC_REPORT_DIRECTION == "0B") return DirectionCoding.GetDirectionCode(TradeType.TRADE_BUY); else if (row.VC_REPORT_DIRECTION == "S" || row.VC_REPORT_DIRECTION == "0S") return DirectionCoding.GetDirectionCode(TradeType.TRADE_SELL); else return 0; } } }
protected TradeRow GetTradeRow(TradeInfo_O32 row) { TradeRow info = new TradeRow(); // 02、成交日期: info.Trade_Date = row.L_DATE; // 03、成交ID: info.Trade_Id = row.VC_DEAL_NO; // 04、证券代码: info.Security_Id = this.ConvertSecurityId(row); // 05、方向标志位:可根据平仓类型转换; info.Direction = this.GetDirection(row); // 06、数量: info.Volume = this.GetDouble(row.L_DEAL_AMOUNT); // 07、合约乘数: info.Multiplier = 1.0; // 08、多头空头状态 info.Side = this.GetSideState(row); // 09、价格: info.Price = row.EN_DEAL_PRICE; // 10、金额: info.Balance = row.EN_DEAL_BALANCE; // 11、成交类型: info.Trade_Type = GetTradeTypeByTradeTime(row.L_BUSINESS_TIME.ToString(), 2); // 12、基金公司/内部融券类型 info.Source_Type = 0; // 13、基金代码/账户信息 info.Source = ""; // 14、成交额: info.Turn_Over = row.EN_DEAL_BALANCE; // 15、前置编号: info.Front_Id = 0; // 16、会话编号: info.Session_Id = 0; // 17、本地委托编号: info.Local_Order_Id = ""; // 18、项目代码: info.Xmdm = 0; // 19、资产单元: info.Zcdy = ""; // 20、组合代码: info.Zhdm = row.VC_COMBI_NO; // 21、策略号: info.Policy_Id = 0; // 22、委托日期: info.Order_Date = row.L_DATE; // 23、委托编号: info.Order_Id = row.L_ENTRUST_SERIAL_NO != 0 ? row.L_ENTRUST_SERIAL_NO.ToString() : string.Empty; // 24、交易通道: info.Trade_Route = ""; // 25 、经纪商席位代码: info.Seat_Id = row.VC_REPORT_SEAT; // 26、投资者客户代码: info.Client_Id = row.VC_STOCKHOLDER_ID; // 27、系统成交日期: info.Sys_Trade_Date = ""; // 28、系统成交结算编号: info.Sys_Trade_Settlement_Id = 0; // 29、系统成交编号: info.Sys_Trade_Id = ""; // 30、系统委托日期: info.Sys_Order_Date = ""; // 31、系统委托结算编号: info.Sys_Order_Settlement_Id = 0; // 32、系统委托编号: info.Sys_Order_Id = ""; // 33、成交时间: info.Trade_Time = row.L_BUSINESS_TIME.ToString(); return info; }
protected string ConvertSecurityId(TradeInfo_O32 row) { if (row.C_MARKET_NO == '1') return string.Format("{0}.SH", row.VC_REPORT_CODE); else if (row.C_MARKET_NO == '2') return string.Format("{0}.SZ", row.VC_REPORT_CODE); else if (row.C_MARKET_NO == '7') return string.Format("{0}.CFE", row.VC_REPORT_CODE); else return row.VC_REPORT_CODE; }
public TradeInfo_O32 GetTradeInfo(DbDataReader reader) { TradeInfo_O32 row = new TradeInfo_O32(); //1-10 row.VC_STOCK_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_STOCK_NAME))); row.VC_THIRD_REFF = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_THIRD_REFF))); row.C_BUSIN_CLASS = this.GetChar(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_C_BUSIN_CLASS))); row.L_ENTRUST_SERIAL_NO = this.GetLong(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_ENTRUST_SERIAL_NO))); row.VC_DEAL_NO = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_DEAL_NO))); row.L_DATE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_DATE))); row.L_FUND_ID = this.GetInt(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_FUND_ID))); row.VC_COMBI_NO = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_COMBI_NO))); row.VC_COMBI_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_COMBI_NAME))); row.L_BUSINESS_TIME = this.GetInt(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_BUSINESS_TIME))); // 11-20 row.C_ENTRUST_DIRECTION = this.GetChar(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_C_ENTRUST_DIRECTION))); row.VC_REPORT_DIRECTION = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_REPORT_DIRECTION))); row.VC_ENTRUSTDIR_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_ENTRUSTDIR_NAME))); row.L_DEAL_AMOUNT = this.GetInt(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_DEAL_AMOUNT))); row.EN_DEAL_PRICE = this.GetDouble(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_EN_DEAL_PRICE))); row.EN_DEAL_BALANCE = this.GetDouble(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_EN_DEAL_BALANCE))); row.VC_REPORT_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_REPORT_CODE))); row.VC_STOCKHOLDER_ID = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_STOCKHOLDER_ID))); row.VC_REPORT_SEAT = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_REPORT_SEAT))); row.VC_OPERATOR_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_OPERATOR_NAME))); // 21-30 row.VC_CURRENCY_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_CURRENCY_NAME))); row.C_INVEST_TYPE = this.GetChar(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_C_INVEST_TYPE))); row.VC_FUND_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_FUND_NAME))); row.VC_CURRENCY_NO_BB = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_CURRENCY_NO_BB))); row.EN_DEAL_BALANCE_BB = this.GetDouble(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_EN_DEAL_BALANCE_BB))); row.EN_DEAL_RATIO = this.GetDouble(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_EN_DEAL_RATIO))); row.VC_BROKER_NO = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_BROKER_NO))); row.VC_BROKER_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_BROKER_NAME))); row.VC_GROUPTYPE_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_GROUPTYPE_NAME))); row.VC_GROUP_NAME = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_GROUP_NAME))); // 31-41 row.VC_INTERNATIONAL_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_INTERNATIONAL_CODE))); row.VC_RIC_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_RIC_CODE))); row.VC_SEDOL_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_SEDOL_CODE))); row.VC_CUSIP_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_CUSIP_CODE))); row.VC_BLOOMBERG_CODE = this.GetString(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_VC_BLOOMBERG_CODE))); row.L_REPORT_SERIAL_NO = this.GetLong(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_REPORT_SERIAL_NO))); row.C_MARKET_NO = this.GetChar(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_C_MARKET_NO))); row.EN_FULL_BALANCE = this.GetDouble(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_EN_FULL_BALANCE))); row.L_DIRECT_OPERATOR = this.GetInt(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_DIRECT_OPERATOR))); row.L_DIRECT_INSTEAD_OPERATOR = this.GetInt(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_L_DIRECT_INSTEAD_OPERATOR))); row.C_MARGINED_OUT = this.GetChar(reader.GetValue(reader.GetOrdinal(TradeInfo_O32.C_C_MARGINED_OUT))); return row; }