コード例 #1
0
        private void AbnRecon(DateTime reportdate, List<CpTrade> trades)
        {
            var cplist = new List<string> {"LEK", "CQG", "FASTMATCH", "CURRENEX","EXANTE", ""};
            var mltytrades = MultyTradesCheckBox.Checked;
            var boTradeslist = CreateIdForBoTrades(getTradesFromDB(reportdate, cplist, true));
            var numberBoTrades = boTradeslist.Count;
            var cpmapping = getBOtoABNMapping();
            var symbolMap = getSymbolMap();

            var abnTradeslist = CreateIdForAbnTrades(getOnlyTrades(trades));
            var recon = new List<Reconcilation>();
            var db = new EXANTE_Entities();
            foreach (var cpTrade in abnTradeslist)
            {
                List<Ctrade> ctrade;
               
                if (boTradeslist.TryGetValue(cpTrade.Id, out ctrade))
                {
                    cpTrade.BOTradeNumber = ctrade[0].tradeNumber.ToString();
                    cpTrade.BOcp = ctrade[0].cp_id;
                    cpTrade.Comment = ctrade[0].BOtradeTimestamp.Value.ToShortDateString();
                    ctrade[0].RecStatus = true;
                    db.CpTrades.Attach(cpTrade);
                    db.Entry(cpTrade).State = EntityState.Modified;
                    db.Ctrades.Attach(ctrade[0]);
                    db.Entry(ctrade[0]).State = EntityState.Modified;

                    ctrade.RemoveAt(0);
                    if (ctrade.Count == 0)
                    {
                        boTradeslist.Remove(cpTrade.Id);
                    }
                    recon.Add(new Reconcilation
                    {
                        CpTrade_id = cpTrade.FullId,
                        Ctrade_id = Convert.ToInt64(cpTrade.BOTradeNumber),
                        Timestamp = DateTime.UtcNow,
                        username = "******",
                        valid = 1
                    });
                }
                else {
                    var t = 1;
                 //   CheckMultitrades(cpTrade,boTradeslist.Values.SelectMany(x=>x).ToList());
               }
            }
            db.SaveChanges();
     /*       List<Ctrade> bolist = null;
            foreach (KeyValuePair<string, List<Ctrade>> keyValuePair in boTradeslist)
            {
                if ((keyValuePair.Value[0].RecStatus == false)&&(keyValuePair.Value[0].symbol_id.Contains("%/%.%.%20%")))
                {
                    var t = 1;
                }
                bolist.Add(keyValuePair.Value[0]);
            }*/
        /*    foreach (CpTrade cpTrade in abnTradeslist)
            {
                db.CpTrades.Attach(cpTrade);
                db.Entry(cpTrade).State = EntityState.Modified;
            }*/
            foreach (Reconcilation reconcilation in recon)
            {
                db.Reconcilations.Add(reconcilation);
            }
           db.SaveChanges();
  }
コード例 #2
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private void FORTSReconciliation(string cp, string identify)
        {
            DateTime reportdate = ABNDate.Value; //todo Get report date from xml Processing date
            TradesParserStatus.Text = "Processing";
            var db = new EXANTE_Entities(_currentConnection);
            if (!noparsingCheckbox.Checked)
            {
                List<InitialTrade> lInitTrades = OpenParsing(cp, identify);
                List<CpTrade> lCptrades = OpenConverting(lInitTrades, cp);
                foreach (CpTrade cptrade in lCptrades)
                {
                    cptrade.ReportDate = reportdate.Date;
                    db.CpTrades.Add(cptrade);
                }
                SaveDBChanges(ref db);
            }
            else
            {
                DateTime nextdate = reportdate.AddDays(1);
                Dictionary<string, Map> symbolmap = getMapping(cp);
                //var symbolmap = getMap("OPEN");
                IQueryable<CpTrade> cptradefromDb = from cptrade in db.CpTrades
                                                    where
                                                        cptrade.valid == 1 &&
                                                        (cptrade.BrokerId == cp) &&
                                                        // || cptrade.BrokerId == "MOEX-SPECTRA") &&
                                                        cptrade.ReportDate >= reportdate.Date &&
                                                        cptrade.ReportDate < (nextdate.Date) &&
                                                        cptrade.BOTradeNumber == null
                                                    select cptrade;
                IQueryable<Contract> contractrow =
                    from ct in db.Contracts
                    where ct.valid == 1
                    select ct;
                Dictionary<string, Contract> contractdetails = contractrow.ToDictionary(k => k.id, k => k);

                foreach (CpTrade cpTrade in cptradefromDb)
                {
                    if (cpTrade.Comment != null && cpTrade.Comment.Contains("REPO"))
                    {
                        int type = 1;
                    }

                    if (cpTrade.BOSymbol == null)
                    {
                        if (symbolmap.ContainsKey(cpTrade.Symbol + cpTrade.Type))
                        {
                            Map map = symbolmap[cpTrade.Symbol + cpTrade.Type];
                            cpTrade.BOSymbol = map.BOSymbol;
                            cpTrade.Price = cpTrade.Price*map.MtyPrice;
                            cpTrade.Qty = cpTrade.Qty*map.MtyVolume;
                            cpTrade.value = cpTrade.value*map.Leverage;
                            if (contractdetails.ContainsKey(map.BOSymbol))
                            {
                                cpTrade.ValueDate = contractdetails[map.BOSymbol].ValueDate;
                            }
                            else
                            {
                                cpTrade.ValueDate = map.ValueDate;
                            }
                            db.CpTrades.Attach(cpTrade);
                            db.Entry(cpTrade).State = (EntityState)System.Data.Entity.EntityState.Modified;
                        }
                        else
                        {
                            string symbol = cpTrade.Symbol;
                            if (symbol.Contains("A ") && (cpTrade.Type != "REPO")) //indetify option
                            {
                                cpTrade.Type = "OP";
                                string keysymbol = symbol.Substring(0, symbol.IndexOf("-")) + "OP";
                                Map map;
                                if (symbolmap.TryGetValue(keysymbol, out map))
                                {
                                    int startindex = symbol.IndexOf("M", symbol.IndexOf("-"));
                                    int endindex = symbol.IndexOf(" ", startindex);
                                    cpTrade.ValueDate =
                                        DateTime.ParseExact(
                                            symbol.Substring(startindex + 1, endindex - 2 - (startindex + 1)), "ddMMyy",
                                            CultureInfo.CurrentCulture);
                                    int strikeindex = symbol.IndexOf("A ");
                                    string bosymbol = map.BOSymbol + ".";
                                    if (map.Round == 1)
                                    {
                                        bosymbol = bosymbol + cpTrade.ValueDate.Value.Day.ToString();
                                    }
                                    bosymbol = bosymbol + getLetterOfMonth(cpTrade.ValueDate.Value.Month) +
                                               cpTrade.ValueDate.Value.Year.ToString() + ".";
                                    cpTrade.BOSymbol = bosymbol + symbol.Substring(strikeindex - 1, 1) +
                                                       symbol.Substring(strikeindex + 2);
                                }
                            }
                        }
                    }
                }
                SaveDBChanges(ref db);
            }

            RecProcess(reportdate, cp);
            TradesParserStatus.Text = "Done";
            Console.WriteLine(""); // <-- For debugging use. */
        }
コード例 #3
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private void RecProcess(DateTime reportdate, string ccp)
        {
            DateTime TimeStart = DateTime.Now;
            LogTextBox.AppendText("\r\n" + TimeStart + ": " + "start " + ccp + " reconciliation");
            var db = new EXANTE_Entities(_currentConnection);
            Dictionary<string, Map> symbolmap = getMap(ccp);
            DateTime nextdate = reportdate.AddDays(1);
            IQueryable<CpTrade> cptradefromDb = from cptrade in db.CpTrades
                                                where
                                                    cptrade.valid == 1 && cptrade.BrokerId == ccp &&
                                                    cptrade.ReportDate >= reportdate.Date &&
                                                    cptrade.ReportDate < (nextdate.Date) &&
                                                    cptrade.BOTradeNumber == null
                                                select cptrade;
            if (ccp == "ABN")
                cptradefromDb = cptradefromDb.Where(o => o.TypeOfTrade == "01"); //.Contains(o.StatusCode))
            if (ccp == "Mac")
                cptradefromDb = cptradefromDb.Where(o => o.TypeOfTrade == "A");
            if (ccp == "CFH")
                cptradefromDb = cptradefromDb.Where(o => o.TypeOfTrade == "OnlineTrade");
            //var filteredOrders = orders.Order.Where(o => allowedStatus.Contains(o.StatusCode));
            List<CpTrade> cptradelist = cptradefromDb.ToList();
            foreach (CpTrade cpTrade in cptradelist)
            {
                if (cpTrade.BOSymbol == null)
                {
                    Map symbolvalue;
                    string key = cpTrade.Symbol + cpTrade.Type;
                    if (cpTrade.Type == "FU")
                    {
                        if (cpTrade.ValueDate != null) key = key + cpTrade.ValueDate.Value.ToShortDateString();
                    }
                    if (symbolmap.TryGetValue(key, out symbolvalue))
                    {
                        cpTrade.BOSymbol = symbolvalue.BOSymbol;
                        cpTrade.Qty = cpTrade.Qty*symbolvalue.MtyVolume;
                        cpTrade.Price = cpTrade.Price*symbolvalue.MtyPrice;
                    }
                    db.CpTrades.Attach(cpTrade);
                    db.Entry(cpTrade).State = (EntityState)System.Data.Entity.EntityState.Modified;
                }
            }

            SaveDBChanges(ref db);
            db.Dispose();

            DateTime TimeStartReconciliation = DateTime.Now;
            AbnRecon(reportdate, cptradelist, ccp);
            DateTime TimeEndReconciliation = DateTime.Now;
            LogTextBox.AppendText("\r\n" + TimeEndReconciliation.ToLongTimeString() + ": " +
                                  "Reconciliation completed. Time:" +
                                  (TimeStartReconciliation - TimeEndReconciliation).ToString() + "s");
        }
コード例 #4
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
 private void button10_Click(object sender, EventArgs e)
 {
     var db = new EXANTE_Entities(_currentConnection);
     var reportdate = new DateTime(2012, 05, 14);
     var prevdate = new DateTime(2012, 05, 04);
     DateTime TimeStart = DateTime.Now;
     List<Ftbo> ftboitems =
         (from ct in db.Ftboes
          where
              ct.botimestamp >= prevdate && ct.botimestamp <= reportdate &&
              (ct.symbolId == "" || ct.symbolId == null) && ct.tradeNumber != null
          select ct).ToList();
     //ToDictionary(k => (k.tradeNumber.ToString()+k.gatewayId), k => k);
     int index = 0;
     Dictionary<string, string> ctradeitems =
         (from ct in db.Ctrades
          where ct.BOtradeTimestamp <= reportdate.Date && ct.BOtradeTimestamp >= prevdate.Date
          select ct).ToDictionary(k => (k.tradeNumber.ToString() + k.gatewayId), k => k.symbol_id);
     foreach (Ftbo ftbo in ftboitems)
     {
         string symbolid;
         if (ctradeitems.TryGetValue(ftbo.tradeNumber.ToString() + ftbo.gatewayId, out symbolid))
         {
             ftbo.symbolId = symbolid;
             db.Ftboes.Attach(ftbo);
             db.Entry(ftbo).State = (EntityState)System.Data.Entity.EntityState.Modified;
             index++;
         }
         else
         {
             LogTextBox.AppendText("\r\n" + "Didn't find trade for this id:" + ftbo.id + " " + ftbo.tradeNumber);
         }
     }
     db.SaveChanges();
     //  var n = queryable.Count();
     //  var m = queryable2.Count();
     DateTime TimeFutureParsing = DateTime.Now;
     db.Dispose();
     LogTextBox.AppendText("\r\n" + TimeFutureParsing.ToLongTimeString() + " Updating symbol completed for " +
                           index + " items. Time: " + (TimeFutureParsing - TimeStart).ToString() + "s");
 }
コード例 #5
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private void cFHReconciliationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DateTime reportdate = ABNDate.Value; //todo Get report date from xml Processing date
            var db = new EXANTE_Entities(_currentConnection);
            if (!noparsingCheckbox.Checked)
            {
                List<InitialTrade> lInitTrades = CFHParsing();
                List<CpTrade> lCptrades = OpenConverting(lInitTrades, "CFH");
                foreach (CpTrade cptrade in lCptrades)
                {
                    db.CpTrades.Add(cptrade);
                }
                SaveDBChanges(ref db);
            }
            else
            {
                DateTime nextdate = reportdate.AddDays(1);
                Dictionary<string, Map> symbolmap = getMapping("CFH");
                IQueryable<CpTrade> cptradefromDb = from cptrade in db.CpTrades
                                                    where cptrade.valid == 1 && cptrade.BrokerId == "CFH" &&
                                                          cptrade.ReportDate >= reportdate.Date &&
                                                          cptrade.ReportDate < (nextdate.Date) &&
                                                          cptrade.BOTradeNumber == null
                                                    select cptrade;
                IQueryable<Contract> contractrow =
                    from ct in db.Contracts
                    where ct.valid == 1
                    select ct;
                Dictionary<string, Contract> contractdetails = contractrow.ToDictionary(k => k.id, k => k);

                foreach (CpTrade cpTrade in cptradefromDb)
                {
                    if (cpTrade.BOSymbol == null && symbolmap.ContainsKey(cpTrade.Symbol))
                    {
                        Map map = symbolmap[cpTrade.Symbol];
                        cpTrade.BOSymbol = map.BOSymbol;
                        cpTrade.Price = cpTrade.Price*map.MtyPrice;
                        cpTrade.Qty = cpTrade.Qty*map.MtyVolume;
                        cpTrade.value = cpTrade.value*map.Leverage;
                        if (contractdetails.ContainsKey(map.BOSymbol))
                        {
                            cpTrade.ValueDate = contractdetails[map.BOSymbol].ValueDate;
                        }
                        else
                        {
                            cpTrade.ValueDate = map.ValueDate;
                        }
                        db.CpTrades.Attach(cpTrade);
                        db.Entry(cpTrade).State = (EntityState)System.Data.Entity.EntityState.Modified;
                    }
                }
                SaveDBChanges(ref db);
            }
            RecProcess(reportdate, "CFH");
        }
コード例 #6
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private static void UpdateRecTrades(CpTrade cpTrade, List<Ctrade> ctrade, EXANTE_Entities db,
                                            List<Reconcilation> recon)
        {
            long? botradenumber = ctrade[0].tradeNumber;
            if (cpTrade.BOTradeNumber == null)
            {
                cpTrade.BOTradeNumber = botradenumber.ToString();
            }
            else
            {
                cpTrade.BOTradeNumber = cpTrade.BOTradeNumber + ";" + botradenumber.ToString();
            }
            cpTrade.BOcp = ctrade[0].cp_id;
            cpTrade.BOSymbol = ctrade[0].symbol_id;
            cpTrade.Comment = ctrade[0].BOtradeTimestamp.Value.ToShortDateString();
            ctrade[0].RecStatus = true;
            db.CpTrades.Attach(cpTrade);
            db.Entry(cpTrade).State = (EntityState)System.Data.Entity.EntityState.Modified;
            db.Ctrades.Attach(ctrade[0]);
            db.Entry(ctrade[0]).State = (EntityState)System.Data.Entity.EntityState.Modified;

            recon.Add(new Reconcilation
                {
                    CpFull_id = cpTrade.FullId,
                    BOTradenumber = botradenumber,
                    Timestamp = DateTime.UtcNow,
                    username = "******",
                    valid = 1
                });

            SaveDBChanges(ref db);
        }
コード例 #7
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private void updateOpenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileDialog2.ShowDialog();
            var lInitTrades = new List<CpTrade>();
            if (result == DialogResult.OK) // Test result.
            {
                DateTime TimeStart = DateTime.Now;
                LogTextBox.AppendText("\r\n" + TimeStart.ToLongTimeString() + ": " + "start OPEN trades uploading");

                var db = new EXANTE_Entities(_currentConnection);
                Dictionary<string, ColumnMapping> cMapping = (from ct in db.ColumnMappings
                                                              where ct.Brocker == "OPEN" && ct.FileType == "EXCEL"
                                                              select ct).ToDictionary(k => k.Type, k => k);
                var ObjExcel = new Application();
                //Открываем книгу.
                Workbook ObjWorkBook = ObjExcel.Workbooks.Open(openFileDialog2.FileName,
                                                               0, false, 5, "", "",
                                                               false,
                                                               XlPlatform
                                                                   .xlWindows,
                                                               "",
                                                               true, false, 0, true,
                                                               false, false);
                //Выбираем таблицу(лист).
                Worksheet ObjWorkSheet;
                ObjWorkSheet = (Worksheet) ObjWorkBook.Sheets[cMapping["ST"].cTabName];
                Range xlRange = ObjWorkSheet.UsedRange;
                var tradescounter = new Dictionary<DateTime, int>();
                int? i = cMapping["ST"].cLineStart;
                int n = xlRange.Rows.Count;
                int numberofchanges = 0;
                while (i <= n)
                {
                    if (xlRange.Cells[i, cMapping["ST"].cTradeDate].value2 != null)
                    {
                        if ((xlRange.Cells[i, cMapping["ST"].cFee2].value2 != null) ||
                            (xlRange.Cells[i, cMapping["ST"].cFee3].value2 != null))
                        {
                            string currExchorder = xlRange.Cells[i, cMapping["ST"].cExchangeOrderId].value2;
                            CpTrade currcptrade = (from ct in db.CpTrades
                                                   where
                                                       ct.BrokerId == "OPEN" &&
                                                       ct.exchangeOrderId.Contains(currExchorder)
                                                   select ct).FirstOrDefault();
                            if (currcptrade != null)
                            {
                                currcptrade.Fee2 = cMapping["ST"].cFee2 != null
                                                       ? xlRange.Cells[i, cMapping["ST"].cFee2].value2
                                                       : null;
                                currcptrade.Fee3 = cMapping["ST"].cFee3 != null
                                                       ? xlRange.Cells[i, cMapping["ST"].cFee3].value2
                                                       : null;
                                db.CpTrades.Attach(currcptrade);
                                db.Entry(currcptrade).State = (EntityState) System.Data.Entity.EntityState.Modified;
                            }
                            SaveDBChanges(ref db);
                            numberofchanges++;
                        }
                    }
                    i++;
                }
                db.Dispose();
                LogTextBox.AppendText("\r\n Updated trades " + numberofchanges.ToString());
                //***
            }
        }
コード例 #8
0
ファイル: Form1.cs プロジェクト: ferzok/tradesUploader
        private void UpdateMacSymbol(DateTime reportdate, string cp)
        {
            var db = new EXANTE_Entities(_currentConnection);
            IQueryable<CpTrade> cptradefromDb = from cptrade in db.CpTrades
                                                where
                                                    cptrade.valid == 1 && cptrade.BrokerId == "Mac" &&
                                                    cptrade.ReportDate >= reportdate.Date &&
                                                    cptrade.ReportDate <= (reportdate.Date) &&
                                                    cptrade.BOSymbol == null
                                                select cptrade;
            List<CpTrade> cptradelist = cptradefromDb.ToList();
            /*   var symbolmap = getMapping("Mac");
               var contractrow =
                       from ct in db.Contracts
                       where ct.valid == 1
                       select ct;
               var contractdetails = contractrow.ToDictionary(k => k.id, k => k);*/
            Dictionary<string, Map> symbolmap = GetMapSymbol(cp, db);

            foreach (CpTrade cpTrade in cptradelist)
            {
                Map symbolvalue;
                if (symbolmap.TryGetValue(cpTrade.Symbol + cpTrade.Type, out symbolvalue))
                {
                    string key = symbolvalue.BOSymbol + "." + getLetterOfMonth(cpTrade.ValueDate.Value.Month) +
                                 cpTrade.ValueDate.Value.Year;
                    Contract mapContract;
                    cpTrade.Price = cpTrade.Price*symbolvalue.MtyPrice;
                    cpTrade.value = -cpTrade.Price*cpTrade.Qty*symbolvalue.Leverage;
                    cpTrade.Qty = cpTrade.Qty*symbolvalue.MtyVolume;
                    cpTrade.BOSymbol = key;
                    /*      if (contractdetails.TryGetValue(key, out mapContract))
                          {
                              cpTrade.ValueDate = mapContract.ValueDate;
                              cpTrade.BOSymbol = key;
                          }
                          else
                          {
                              LogTextBox.AppendText("\r\n" + "Mac: No Map in Contracts for " + key);
                          }*/
                }
                db.CpTrades.Attach(cpTrade);
                db.Entry(cpTrade).State = (EntityState)System.Data.Entity.EntityState.Modified;
                SaveDBChanges(ref db);
            }
        }
コード例 #9
0
ファイル: Form1 - Copy.cs プロジェクト: ferzok/tradesUploader
        private void ABNReconButtonClick(object sender, EventArgs e)
        {
            var reportdate = ABNDate.Value;//todo Get report date from xml Processing date
            var testexample = new EXANTE_Entities();
            var symbolmap = getMap("ABN");

            if (noparsingCheckbox.Checked)
            {
                var nextdate = reportdate.AddDays(1);
                var cptradefromDb = from cptrade in testexample.CpTrades
                                    where
                                        cptrade.TypeOfTrade == "01" && cptrade.valid == 1 && cptrade.BrokerId=="ABN" &&
                                        cptrade.ReportDate >= reportdate.Date && cptrade.ReportDate < (nextdate.Date) &&
                                        cptrade.BOTradeNumber == null
                                    select cptrade;
                var cptradelist = cptradefromDb.ToList();
                foreach (CpTrade cpTrade in cptradelist)
                {
                     if (cpTrade.BOSymbol == null)
                    {
                        Map symbolvalue;
                        var key = cpTrade.Symbol + cpTrade.Type;
                        if (cpTrade.Type == "FU") key = key + cpTrade.ValueDate.Value.ToShortDateString();
                        if (symbolmap.TryGetValue(key, out symbolvalue))
                        {
                            cpTrade.BOSymbol = symbolvalue.BOSymbol;
                        }
                        testexample.CpTrades.Attach(cpTrade);
                        testexample.Entry(cpTrade).State = EntityState.Modified;

                /*       if (cpTrade.Type == "FW")
                       {
                           cpTrade.BOSymbol = cpTrade.BOSymbol + cpTrade.ValueDate.Value.ToShortDateString();
                       }*/

                  /*      var tt = "GBP/USD.E2.23M2014";

                        var p=tt.IndexOf('.',tt.IndexOf('.')+1);// > -1)*/
                    }
                }

                testexample.SaveChanges();
                AbnRecon(reportdate, cptradelist);
            }
            else
            {
                var allfromfile = new List<CpTrade>();
                var futtrades = new List<CpTrade>();
                var result = openFileDialog2.ShowDialog();
                if (result == DialogResult.OK)
                {
                    if (CliffCheckBox.Checked)
                    {
                        var cliffdict = LoadCliff(openFileDialog2.FileName, reportdate);
                        List<string> rowlist;

                        if (cliffdict.TryGetValue("610", out rowlist)) updateBalance(rowlist, reportdate);
                        if (cliffdict.TryGetValue("310", out rowlist))allfromfile = ExtractTradesFromCliff(rowlist, symbolmap);
                        if (cliffdict.TryGetValue("410", out rowlist))allfromfile.AddRange(ExtractTradesFromCliff(rowlist, symbolmap));
                        if (cliffdict.TryGetValue("210", out rowlist)) allfromfile.AddRange(ExtractOptionTradesFromCliff(rowlist, symbolmap));

                    }
                    else
                    {
                        allfromfile = ExtractTradesFromXml(symbolmap);
                    }
                    foreach (CpTrade tradeIndex in allfromfile)
                    {
                        testexample.CpTrades.Add(tradeIndex);
                    }
                    testexample.SaveChanges();
                    allfromfile = allfromfile.Where(s => s.TypeOfTrade == "01").ToList();
                    AbnRecon(reportdate, allfromfile);
                }
            }
        }
コード例 #10
0
ファイル: Form1 - Copy.cs プロジェクト: ferzok/tradesUploader
        private static void UpdateRecTrades(CpTrade cpTrade, List<Ctrade> ctrade, EXANTE_Entities db, Dictionary<string, List<Ctrade>> boTradeslist,
                                            List<Reconcilation> recon)
        {
            var botradenumber = ctrade[0].tradeNumber;
            if (cpTrade.BOTradeNumber == null)
            {
                cpTrade.BOTradeNumber = botradenumber.ToString();
            }
            else
            {

                cpTrade.BOTradeNumber = cpTrade.BOTradeNumber + ";" + botradenumber.ToString();
            }
            cpTrade.BOcp = ctrade[0].cp_id;
            cpTrade.BOSymbol = ctrade[0].symbol_id;
            cpTrade.Comment = ctrade[0].BOtradeTimestamp.Value.ToShortDateString();
            ctrade[0].RecStatus = true;
            db.CpTrades.Attach(cpTrade);
            db.Entry(cpTrade).State = EntityState.Modified;
            db.Ctrades.Attach(ctrade[0]);
            db.Entry(ctrade[0]).State = EntityState.Modified;

            recon.Add(new Reconcilation
                {
                    CpTrade_id = cpTrade.FullId,
                    Ctrade_id = botradenumber,
                    Timestamp = DateTime.UtcNow,
                    username = "******",
                    valid = 1
                });
        }