Пример #1
0
        protected TradeRow GetTradeRow(CilRow row)
        {
            TradeRow data = new TradeRow();

            // 02、成交日期;
            data.Trade_Date = "";
            // 03、成交编号;
            data.Trade_Id = "";
            // 04、证券代码以证券代码1为准;为了防止与深交所证券代码混淆,需要以加后缀".SH"
            data.Security_Id = this.ConvertSecurityId(row.ZQDM);

            // 02:现金替代退补款;04:赎回替代款;
            if (row.ZJLX.Equals("02"))
            {
                // 05、方向;
                data.Direction = DirectionCoding.GetDirectionCode(TradeType.TRADE_ETF_CASH_REPLACEMENT_DRAWBACK);
                // 10、成交金额;
                data.Balance = this.GetDouble(row.BKJE);
                // 14、成交额;
                data.Turn_Over = this.GetDouble(row.BKJE);
            }
            else
            {
                data.Direction = DirectionCoding.GetDirectionCode(TradeType.TRADE_ETF_RED_REPLACEMENT_DRAWBACK);
                data.Balance = this.GetDouble(row.TKJE);
                data.Turn_Over = this.GetDouble(row.TKJE);
            }

            // 06、数量暂时以成交数量为准;
            data.Volume = 1.0;
            // 07、上海合约乘数为1
            data.Multiplier = 1;
            // 08、多头空头(0表示多头,1表示空头);
            data.Side = 0;
            // 09、价格以价格1为准;
            data.Price = 0.0;
            // 11、成交类型:9:30之前为集合竞价;9:30之后为连续竞价;默认为2。
            data.Trade_Type = 2;
            // 12、基金公司/内部融券(1表示基金公司,2表示内部融券);
            data.Source_Type = 0;
            // 13、基金代码/账户信息;
            data.Source = string.Empty;
            // 15、前置编号;
            data.Front_Id = 0;
            // 16、会话编号;
            data.Session_Id = 0;
            // 17、本地委托编号;
            data.Local_Order_Id = "";
            // 18、项目代码;
            data.Xmdm = 0;
            // 19、资产单元;
            data.Zcdy = "";
            // 20、组合代码;
            data.Zhdm = "";
            // 21、策略号;
            data.Policy_Id = 0;
            // 22、委托日期;
            data.Order_Date = "";
            // 23、委托编号;
            data.Order_Id = "";
            // 24、交易通道;
            data.Trade_Route = "";
            // 25、经纪商席位代码;
            data.Seat_Id = row.JYXW;
            // 26、投资者客户代码;
            data.Client_Id = "";
            // 27、系统成交日期;
            data.Sys_Trade_Date = row.JYRQ;
            // 28、系统成交结算编号;
            data.Sys_Trade_Settlement_Id = 0;
            // 29、系统成交编号;
            data.Sys_Trade_Id = "";
            // 30、系统委托日期;
            data.Sys_Order_Date = row.JYRQ;
            // 31、系统委托结算编号;
            data.Sys_Order_Settlement_Id = 0;
            // 32、系统委托编号;
            data.Sys_Order_Id = "";
            // 33、成交时间;
            data.Trade_Time = "";

            return data;
        }
Пример #2
0
        //public override void Export2TradeTable(DbDataReader reader, IExportCallback callback, IExport2TradeTable tradeService)
        //{
        //    if (reader == null)
        //        return;
        //    TradeTable tradeTable = new TradeTable();
        //    if (!tradeTable.Open())
        //        return;

        //    OrderRowService_LH lhService = new OrderRowService_LH(this.TheProject);
        //    TradeInfo_O32Service o32Service = new TradeInfo_O32Service(this.TheProject);
        //    if (!lhService.Open() || !o32Service.Open())
        //    {
        //        tradeTable.Close();
        //        lhService.Close();
        //        o32Service.Close();

        //        return;
        //    }

        //    // 特别说明:
        //    // 在加载结算明细表中的时候的时候需要从量化系统和O32系统中读取相关的数据进行比较,
        //    // 在读取其他系统数据的时候会出现两个问题:
        //    // 1、如果一次性把其他系统中的数据全部加载到内存,如果数据量过大,则会撑爆内存;
        //    // 2、如果在根据需要实时的从其他系统相关数据表中读取数据,效率太低,导入速度太慢了;
        //    // 3、所以采用一个折中的办法,设置一个临界值,如果大于该临界值,则采用实时加载的方法,否则一次性读取依赖数据;
        //    bool bufferAll_lh = false;
        //    bool bufferAll_o32 = false;
        //    List<OrderRow_LH> buffer_lh = null;
        //    List<TradeInfo_O32> buffer_o32 = null;
        //    List<OrderRow_LH> lhDataList = null;
        //    List<TradeInfo_O32> o32DataList = null;
        //    string securityId = string.Empty;

        //    lhService.SyncImportState2Local();
        //    if (lhService.TotalCount < this.MaxBufferSize)
        //    {
        //        bufferAll_lh = true;
        //        buffer_lh = lhService.GetTradeItems(EMarketType.ALL);
        //    }

        //    o32Service.SyncImportState2Local();
        //    if (o32Service.TotalCount < this.MaxBufferSize)
        //    {
        //        bufferAll_o32 = true;
        //        buffer_o32 = o32Service.GetTradeItems(EMarketType.ALL);
        //    }

        //    while (reader.Read())
        //    {
        //        if (this.TheProject.HasStop)
        //        {
        //            tradeService.ImportState = EImportStatus.Interrupt;
        //            break;
        //        }

        //        CilRow row = this.GetCilRow(reader);
        //        if (securityId != row.ZQDM)
        //        {
        //            securityId = row.ZQDM;
        //            if (bufferAll_lh)
        //                lhDataList = buffer_lh.Where(o => o.zqdm == securityId).ToList();
        //            else
        //                lhDataList = lhService.GetTradeItems(row.ZQDM, EMarketType.ALL);
        //            if (bufferAll_o32)
        //                o32DataList = buffer_o32.Where(o => o.VC_REPORT_CODE == securityId).ToList();
        //            else
        //                o32DataList = o32Service.GetTradeItems(row.ZQDM, EMarketType.ALL);
        //        }

        //        //EEntrustType entrustType = this.GetEntrustType(row);
        //        if (lhDataList.Count <= 0 && o32DataList.Count <= 0)
        //        {
        //            tradeTable.Add(this.GetTradeRow(row));
        //            callback.ValidIndex++;
        //        }

        //        callback.CurrentIndex++;
        //    }

        //    tradeTable.Close();
        //    lhService.Close();
        //    o32Service.Close();
        //}

        protected CilRow GetCilRow(DbDataReader reader)
        {
            CilRow row = new CilRow();

            row.JJDM = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_JJDM)));
            row.ZJLX = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_ZJLX)));
            row.ZQZH = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_ZQZH)));
            row.JYXW = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_JYXW)));
            row.XWHY = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_XWHY)));
            row.TKJE = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_TKJE)));
            row.BKJE = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_BKJE)));
            row.JSRQ = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_JSRQ)));
            row.JYRQ = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_JYRQ)));
            row.ZQDM = this.GetString(reader.GetValue(reader.GetOrdinal(CilRow.C_ZQDM)));

            return row;
        }