Example #1
0
        public Dictionary<string, int> GetLastRefreshNr(String marketIds)
        {
            Dictionary<string, int> result = new Dictionary<string, int>();
            try
            {
                string query = null;
                using (var ctx = new bfmsEntities())
                {
                    query = "SELECT MAX(RefreshNr) as RefreshNr,Marketbook.*  from Marketbook where Marketid in (" + marketIds + ") group by marketid";
                    var RefrNrList = ctx.Database.SqlQuery<marketbook>(query).ToList();

                    foreach (var row in RefrNrList)
                    {

                        result.Add(row.MarketId, row.RefreshNr);

                    }
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }
            return result;
        }
Example #2
0
        public List<DataView> GetDataSeries(string marketId, long selId, Util.DataSeries ds)
        {
            List<DataView> res = new List<DataView>();
            string query = "";
            try
            {
                using (var ctx = new bfmsEntities())
                {
                    switch (ds)
                    {
                        case Util.DataSeries.PRICE:
                            query = "SELECT AvgPrice as VolPrice,LastPriceTraded,Matched,ToBackTotal,ToLayTotal FROM Runner JOIN Marketbook using (Marketid,RefreshNr) WHERE Runner.marketid='" + marketId +
                                    "' AND Runner.SelectionId =" + selId + " AND Runner.Matched>0 AND Marketbook.RefreshNr>1 AND Marketbook.IsinPlay='False'";
                            break;
                        case Util.DataSeries.VOLUME:
                            Console.WriteLine("Case 2");
                            break;
                    }

                    //var data1 = (from run in ctx.runners
                    //             from book in ctx.marketbooks
                    //             where (book.MarketId == run.MarketId && book.RefreshNr == run.RefreshNr)
                    //             && (book.MarketId == marketId) && (run.SelectionId == selId)
                    //             //select new { book, run=run.AvgPrice as VolPrice,run, vol }).ToList();
                    //             select new { run.AvgPrice, run.LastPriceTraded, run.Matched, run.ToBackTotal, run.ToLayTotal });

                    res.Add(ToDataTable(ctx, query).AsDataView());
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }
            return res;
        }
Example #3
0
File: DBAPI.cs Project: BFMS/BFMS
        public MarketBook GetMarketBook(string marketId)
        {
            MarketBook mb = new MarketBook();
            try
            {
                long lastRefreshNr = 0; ;
                if (LastRefreshNr.ContainsKey(marketId))
                {
                    LastRefreshNr.TryGetValue(marketId, out lastRefreshNr);
                }
                else
                {
                    LastRefreshNr.Add(marketId, lastRefreshNr);
                }
                using (var ctx = new bfmsEntities())
                {
                string query = "SELECT * FROM marketbook JOIN runner USING(Marketid,RefreshNr) " +
                                      "JOIN volume USING (Marketid,Refreshnr,Selectionid) " +
                                      "WHERE Marketid=@MarketId  AND refreshNr=" +
                                      "(SELECT MAX(RefreshNr) FROM marketbook WHERE Marketid=@MarketId AND IsInPlay='False')";
                //"(SELECT MIN(RefreshNr) FROM Marketbook WHERE Marketbook.Marketid=@MarketId AND Marketbook.Status='OPEN' AND Marketbook.IsInPlay='False' AND Marketbook.RefreshNr>@LastRefreshNr)";
                var MaxRefrNr = (from book in ctx.marketbooks where book.MarketId == marketId && book.IsInplay=="False" select book.RefreshNr).Max();
                var MarketCatList = (from book in ctx.marketbooks
                                     from run in ctx.runners
                                     from vol in ctx.volumes
                                     where (book.MarketId==run.MarketId && book.RefreshNr==run.RefreshNr)&&
                                     (run.MarketId==vol.MarketId&&run.SelectionId==vol.SelectionId&&run.RefreshNr==vol.RefreshNr)
                                     && (book.MarketId == marketId) && (book.RefreshNr == MaxRefrNr)
                                     select new {book,run, vol}).ToList();

                    mb.Runners = new List<Runner>();
                    Runner r = null;
                    long lastSelectionId = 0;
                    foreach (var row in MarketCatList)
                    {
                        if (lastSelectionId == 0)
                        {
                            mb.MarketId = row.book.MarketId;
                            mb.RefreshNr =row.book.RefreshNr;
                            mb.RefreshTS = (DateTime)row.book.RefreshTS;
                            mb.IsMarketDataDelayed = "False".Equals(row.book.IsMarketDataDelayed) ? false : true;
                            mb.Status = (MarketStatus)Enum.Parse(typeof(MarketStatus), row.book.Status.ToString());
                            mb.BetDelay = (int)row.book.BetDelay;
                            mb.IsInplay = "False".Equals(row.book.IsInplay) ? false : true;
                            mb.NumberOfWinners = (int)row.book.NumberOfWinners;
                            mb.NumberOfActiveRunners = (int)row.book.NumberOfActiveRunners;
                            mb.NumberOfRunners = (int)row.book.NumberOfRunners;
                            mb.TotalMatched = (double)row.book.TotalMatched;
                            mb.TotalAvailable = (double)row.book.TotalAvailable;
                            mb.OVRBack = (double)row.book.OVRBack;
                            mb.OVRLay = (double)row.book.OVRLay;

                            LastRefreshNr[marketId] = mb.RefreshNr;

                        }
                        if (lastSelectionId != (int)row.run.SelectionId)
                        {
                            r = new Runner();
                            r.ExchangePrices = new ExchangePrices();
                            r.ExchangePrices.AvailableToBack = new List<PriceSize>();
                            r.ExchangePrices.AvailableToLay = new List<PriceSize>();
                            r.ExchangePrices.TradedVolume = new List<PriceSize>();

                            r.SelectionId = (int)row.run.SelectionId;
                            r.RefreshNr = (int)row.run.RefreshNr;
                            r.RunnerName = (string)row.run.Name;
                            r.Status = (RunnerStatus)Enum.Parse(typeof(RunnerStatus), row.run.RunnerStatus.ToString());
                            r.AdjustmentFactor = (double)row.run.AdjustmentFactor;
                            r.ToBackTotal = (double)row.run.ToBackTotal;
                            r.ToLayTotal = (double)row.run.ToLayTotal;
                            r.BackLayRatio = (double)row.run.BackLayRatio;
                            r.LastPriceTraded = row.run.LastPriceTraded.ToString() == "" ? 0 : (double)row.run.LastPriceTraded;
                            r.VolPrice = (double)row.run.VolPrice;
                            r.AvgPrice = (double)row.run.AvgPrice;
                            r.ActMatched = (double)row.run.Matched;
                            r.MatchedVol = (double)row.run.MatchedTotal;//Namenskonflikt mit Marketbook
                            //r.TotalMatched = (double)row[27];
                            r.VolumeBack = (double)row.run.VolumeBack;
                            r.VolumeLay = (double)row.run.VolumeLay;
                            r.InsMoneyBack = (double)row.run.InsMoneyBack;
                            r.InsMoneyLay = (double)row.run.InsMoneyLay;
                            r.Indikator1 = (double)row.run.Indikator1;
                            r.Indikator2 = (double)row.run.Indikator2;
                            lastSelectionId = r.SelectionId;
                            mb.Runners.Add(r);
                        }
                        if (("ATB").Equals(row.vol.Type.ToString()))
                        {
                            PriceSize ps = new PriceSize();
                            ps.Price = (double)row.vol.Price;
                            ps.Size = (double)row.vol.Size;
                            r.ExchangePrices.AvailableToBack.Add(ps);
                        }
                        if (("ATL").Equals(row.vol.Type.ToString()))
                        {
                            PriceSize ps = new PriceSize();
                            ps.Price = (double)row.vol.Price;
                            ps.Size = (double)row.vol.Size;
                            r.ExchangePrices.AvailableToLay.Add(ps);
                        }
                        if (("TVOL").Equals(row.vol.Type.ToString()))
                        {
                            PriceSize ps = new PriceSize();
                            ps.Price = (double)row.vol.Price;
                            ps.Size = (double)row.vol.Size;
                            r.ExchangePrices.TradedVolume.Add(ps);
                        }

                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;

            }

            return mb;
        }
Example #4
0
File: DBAPI.cs Project: BFMS/BFMS
        public List<MarketCatalogue> GetMarkets()
        {
            List<MarketCatalogue> lmc = new List<MarketCatalogue>();
            try
            {
                using (var ctx = new bfmsEntities())
                {

                    //ctx.Database.Connection.Open();
                    //var ctx = new bfmsEntities();

                    var MarketCatList = (from cat in ctx.marketcatalogues
                                         join desc in ctx.marketdescriptions on cat.MarketId equals desc.MarketId
                                         orderby cat.LocalStartTime
                                         select new { cat, desc }).ToList();

                    string lastMarketId = "";
                    MarketCatalogue mc = null;
                    foreach (var row in MarketCatList)
                    {
                        if (lastMarketId != row.cat.MarketId)
                        {
                            mc = new MarketCatalogue();
                            mc.MarketId = row.cat.MarketId;
                            mc.MarketName = row.cat.MarketName;
                            mc.Description = new MarketDescription();
                            mc.Description.MarketTime = row.cat.LocalStartTime ?? DateTime.Now;
                            mc.Description.Clarifications = row.desc.Clarifications;
                            mc.Event = new Event();
                            mc.Event.Name = row.cat.MarketDescr;
                            //mc.EventType = (string)rdr["EventType"];
                            mc.IsMarketDataDelayed = "False".Equals(row.cat.IsMarketDataDelayed) ? false : true;

                            mc.Runners = new List<RunnerDescription>();
                            lmc.Add(mc);
                            lastMarketId = mc.MarketId;
                        }

                        //RunnerDescription rd = new RunnerDescription();
                        //rd.SelectionId = (int)row["SelectionId"];
                        //rd.RunnerName = (string)row["Name"];
                        //mc.Runners.Add(rd);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;

            }

            return lmc;
        }
Example #5
0
        public List<RunnerDescription> GetRunnerDesc(string marketId)
        {
            List<RunnerDescription> res = new List<RunnerDescription>();
            try
            {
                using (var ctx = new bfmsEntities())
                {
                    int minRefrNr = (from run in ctx.runners where (run.MarketId == marketId) select run.RefreshNr).Min();
                    var data = (from run in ctx.runners
                                where (run.MarketId == marketId) && (run.RunnerStatus == "ACTIVE") && (run.RefreshNr == minRefrNr)
                                orderby run.AvgPrice
                                //select new { book, run=run.AvgPrice as VolPrice,run, vol }).ToList();
                                select new { run } ).ToList();

                    foreach (var row in data)
                    {
                        RunnerDescription rd = new RunnerDescription();
                        rd.SelectionId = row.run.SelectionId;
                        rd.RunnerName = row.run.Name;
                        res.Add(rd);
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }

            return res;
        }
Example #6
0
        private bool MarketCatExist(String marketId)
        {
            bool result = false;
            try
            {
                using (var ctx = new bfmsEntities())
                {
                    string query = @"SELECT EXISTS(SELECT 1 FROM MarketCatalogue WHERE MarketId=@MarketId LIMIT 1)";
                    List<MySqlParameter> parms = new List<MySqlParameter>();
                    parms.Add(new MySqlParameter("@MarketId", marketId));
                    //result = (long)mySql.ExecScalar(query, parms.ToArray()) > 0;
                    var rows = (ctx.Database.SqlQuery<int>(query, parms.ToArray())).ToList<int>();
                    result = rows.Count > 0 && rows[0] > 0;
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }

            return result;
        }
Example #7
0
        private void InsertVolume(Runner runner, MarketBook marketBook)
        {
            try
            {
                if (runner.ActTradedVol != null && runner.ActTradedVol.Count > 0)
                {
                    using (var ctx = new bfmsEntities())
                    {
                        string query = "INSERT INTO volume (MarketId, SelectionId,RefreshNr,Type,Price,Size) VALUES ";
                        int cnt = 0;
                        List<MySqlParameter> parms = new List<MySqlParameter>();
                        foreach (Volume ps in runner.ActTradedVol)
                        {
                            query = query + "(@MarketId" + cnt + ",@SelectionId" + cnt + ",@RefreshNr" + cnt + ",@Type" + cnt + ",@Price" + cnt + ",@Size" + cnt + "),";

                            parms.Add(new MySqlParameter("@MarketId" + cnt, marketBook.MarketId));
                            parms.Add(new MySqlParameter("@SelectionId" + cnt, runner.SelectionId));
                            parms.Add(new MySqlParameter("@RefreshNr" + cnt, runner.RefreshNr));
                            parms.Add(new MySqlParameter("@Type" + cnt, ps.Type.ToString()));
                            parms.Add(new MySqlParameter("@Price" + cnt, ps.Price));
                            parms.Add(new MySqlParameter("@Size" + cnt, ps.Size));

                            ++cnt;
                        }
                        query = query.Remove(query.Length - 1, 1) + ";";
                        int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());
                    }
                }

                if (runner.ExchangePrices != null && runner.ExchangePrices.AvailableToBack.Count > 0)
                {
                    using (var ctx = new bfmsEntities())
                    {
                        string query = "INSERT INTO volume (MarketId, SelectionId,RefreshNr,Type,Price,Size) VALUES ";

                        int cnt = 0;
                        List<MySqlParameter> parms = new List<MySqlParameter>();
                        foreach (PriceSize ps in runner.ExchangePrices.AvailableToBack)
                        {

                            query = query + "(@MarketId" + cnt + ",@SelectionId" + cnt + ",@RefreshNr" + cnt + ",@Type" + cnt + ",@Price" + cnt + ",@Size" + cnt + "),";
                            parms.Add(new MySqlParameter("@MarketId" + cnt, marketBook.MarketId));
                            parms.Add(new MySqlParameter("@SelectionId" + cnt, runner.SelectionId));
                            parms.Add(new MySqlParameter("@RefreshNr" + cnt, runner.RefreshNr));
                            parms.Add(new MySqlParameter("@Type" + cnt, "ATB"));
                            parms.Add(new MySqlParameter("@Price" + cnt, ps.Price));
                            parms.Add(new MySqlParameter("@Size" + cnt, ps.Size));

                            ++cnt;
                        }
                        query = query.Remove(query.Length - 1, 1) + ";";
                        int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());
                    }
                }

                if (runner.ExchangePrices != null && runner.ExchangePrices.AvailableToLay.Count > 0)
                {
                    using (var ctx = new bfmsEntities())
                    {
                        string query = "INSERT INTO volume (MarketId, SelectionId,RefreshNr,Type,Price,Size) VALUES ";
                        int cnt = 0;
                        List<MySqlParameter> parms = new List<MySqlParameter>();
                        foreach (PriceSize ps in runner.ExchangePrices.AvailableToLay)
                        {
                            query = query + "(@MarketId" + cnt + ",@SelectionId" + cnt + ",@RefreshNr" + cnt + ",@Type" + cnt + ",@Price" + cnt + ",@Size" + cnt + "),";
                            parms.Add(new MySqlParameter("@MarketId" + cnt, marketBook.MarketId));
                            parms.Add(new MySqlParameter("@SelectionId" + cnt, runner.SelectionId));
                            parms.Add(new MySqlParameter("@RefreshNr" + cnt, runner.RefreshNr));
                            parms.Add(new MySqlParameter("@Type" + cnt, "ATL"));
                            parms.Add(new MySqlParameter("@Price" + cnt, ps.Price));
                            parms.Add(new MySqlParameter("@Size" + cnt, ps.Size));

                            ++cnt;
                        }
                        query = query.Remove(query.Length - 1, 1) + ";";
                        int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }
        }
Example #8
0
        //private MySqlHandler mySql = new MySqlHandler();
        public void InsertMarketCat(List<MarketCatalogue> marketCatalogues)
        {
            try
            {
                foreach (MarketCatalogue mc in marketCatalogues)
                {
                    if (!MarketCatExist(mc.MarketId))
                    {
                        //create command and assign the cmd.CommandText and connection from the constructor
                        using (var ctx = new bfmsEntities())
                        {
                            string query = "INSERT INTO marketcatalogue (MarketId, MarketName,MarketDescr,IsMarketDataDelayed,LocalStartTime) VALUES " +
                                      "(@MarketId,@MarketName,@MarketDescr,@IsMarketDataDelayed,@LocalStartTime);";

                            List<MySqlParameter> parms = new List<MySqlParameter>();

                            parms.Add(new MySqlParameter("@MarketId", mc.MarketId));
                            parms.Add(new MySqlParameter("@MarketName", mc.MarketName));
                            parms.Add(new MySqlParameter("@MarketDescr", mc.MarketDescr));
                            parms.Add(new MySqlParameter("@IsMarketDataDelayed", mc.IsMarketDataDelayed.ToString()));
                            parms.Add(new MySqlParameter("@LocalStartTime", mc.Description.MarketTime));

                            //Execute command
                            //mySql.ExecNonQuery(query, parms.ToArray());

                            int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());

                        }
                        using (var ctx = new bfmsEntities())
                        {
                            string query = "INSERT INTO marketdescription (MarketId, IsPersistenceEnabled,IsBspMarket,MarketTime," +
                                  "IsTurnInPlayEnabled,MarketType,MarketBaseRate,IsDiscountAllowed,Wallet,Rules,RulesHasDate,Clarifications) VALUES " +
                                  "(@MarketId,@IsPersistenceEnabled,@IsBspMarket,@MarketTime," +
                                  "@IsTurnInPlayEnabled,@MarketType,@MarketBaseRate,@IsDiscountAllowed,@Wallet,@Rules,@RulesHasDate,@Clarifications);";

                            List<MySqlParameter> parms = new List<MySqlParameter>();
                            parms.Add(new MySqlParameter("@MarketId", mc.MarketId));
                            parms.Add(new MySqlParameter("@IsPersistenceEnabled", mc.Description.IsPersistenceEnabled.ToString()));
                            parms.Add(new MySqlParameter("@IsBspMarket", mc.Description.IsBspMarket.ToString()));
                            parms.Add(new MySqlParameter("@MarketTime", mc.Description.MarketTime));
                            //parms.Add(new MySqlParameter("@SuspendTime", mc.Description.SuspendTime));
                            //parms.Add(new MySqlParameter("@SettleTime", mc.Description.SettleTime));
                            parms.Add(new MySqlParameter("@IsTurnInPlayEnabled", mc.Description.IsTurnInPlayEnabled.ToString()));
                            parms.Add(new MySqlParameter("@MarketType", mc.Description.MarketType));
                            parms.Add(new MySqlParameter("@MarketBaseRate", mc.Description.MarketBaseRate));
                            parms.Add(new MySqlParameter("@IsDiscountAllowed", mc.Description.IsDiscountAllowed.ToString()));
                            parms.Add(new MySqlParameter("@Wallet", mc.Description.Wallet));
                            parms.Add(new MySqlParameter("@Rules", mc.Description.Rules));
                            parms.Add(new MySqlParameter("@RulesHasDate", mc.Description.RulesHasDate.ToString()));
                            parms.Add(new MySqlParameter("@Clarifications", mc.Description.Clarifications));

                            //Execute command
                            //mySql.ExecNonQuery(query, parms.ToArray());
                            int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());

                        }
                    }

                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }
        }
Example #9
0
        public void InsertMarketBook(List<MarketBook> marketBooks)
        {
            try
            {
                foreach (MarketBook mb in marketBooks)
                {
                    if (mb.Status == MarketStatus.OPEN && mb.volumeTraded && !mb.IsInplay && mb.Runners != null && mb.Runners.Count > 0)
                    {
                        if (mb.DBRefreshNr == 0)
                        {
                            int lastDBRefreshNr = 0;
                            Dictionary<string, int> RefNr = GetLastRefreshNr(mb.MarketId);
                            if (RefNr.ContainsKey(mb.MarketId))
                            {
                                RefNr.TryGetValue(mb.MarketId, out lastDBRefreshNr);

                            }
                            //MarketBook bereits vorhanden
                            if (mb.DBRefreshNr <= lastDBRefreshNr)
                            {
                                mb.DBRefreshNr = (int)lastDBRefreshNr;
                            }
                        }
                        mb.DBRefreshNr = ++mb.DBRefreshNr;
                        mb.RefreshTS = DateTime.Now;

                        using (var ctx = new bfmsEntities())
                        {
                            string query = "INSERT INTO marketbook (MarketId, RefreshNr,RefreshTS,IsMarketDataDelayed,Status,BetDelay,IsInplay,NumberOfWinners,NumberOfRunners,NumberOfActiveRunners,TotalMatched,TotalAvailable,OVRBack,OVRLay) VALUES " +
                                    "(@MarketId,@RefreshNr,@RefreshTS,@IsMarketDataDelayed,@Status,@BetDelay,@IsInplay,@NumberOfWinners,@NumberOfRunners,@NumberOfActiveRunners,@TotalMatched,@TotalAvailable,@OVRBack,@OVRLay);";

                            List<MySqlParameter> parms = new List<MySqlParameter>();
                            parms.Add(new MySqlParameter("@MarketId", mb.MarketId));
                            parms.Add(new MySqlParameter("@RefreshNr", mb.DBRefreshNr));
                            parms.Add(new MySqlParameter("@RefreshTS", mb.RefreshTS));
                            parms.Add(new MySqlParameter("@IsMarketDataDelayed", mb.IsMarketDataDelayed.ToString()));
                            parms.Add(new MySqlParameter("@Status", mb.Status.ToString()));
                            parms.Add(new MySqlParameter("@BetDelay", mb.BetDelay));
                            parms.Add(new MySqlParameter("@IsInplay", mb.IsInplay.ToString()));
                            parms.Add(new MySqlParameter("@NumberOfWinners", mb.NumberOfWinners));
                            parms.Add(new MySqlParameter("@NumberOfRunners", mb.NumberOfRunners));
                            parms.Add(new MySqlParameter("@NumberOfActiveRunners", mb.NumberOfActiveRunners));
                            parms.Add(new MySqlParameter("@TotalMatched", mb.TotalMatched));
                            parms.Add(new MySqlParameter("@TotalAvailable", mb.TotalAvailable));
                            parms.Add(new MySqlParameter("@OVRBack", mb.OVRBack));
                            parms.Add(new MySqlParameter("@OVRLay", mb.OVRLay));

                            //Execute command
                            int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());
                        }

                        using (var ctx = new bfmsEntities())
                        {
                            string query = "INSERT INTO runner (MarketId, SelectionId,RefreshNr,Name,RunnerStatus,RemovalDate,Handicap,AdjustmentFactor," +
                                "ToBackTotal,ToLayTotal,BackLayRatio,LastPriceTraded,VolPrice,AvgPrice,Matched,MatchedTotal,VolumeBack,VolumeLay,InsMoneyBack,InsMoneyLay,Indikator1,Indikator2) VALUES ";
                            int cnt = 0;
                            List<MySqlParameter> parms = new List<MySqlParameter>();
                            foreach (Runner runner in mb.Runners)
                            {
                                runner.RefreshNr = mb.DBRefreshNr;
                                query = query + "(@MarketId" + cnt + ",@SelectionId" + cnt + ",@RefreshNr" + cnt + ",@Name" + cnt + ",@RunnerStatus" + cnt + ",@RemovalDate" + cnt + ",@Handicap" + cnt + ",@AdjustmentFactor" + cnt + "," +
                                        "@ToBackTotal" + cnt + ",@ToLayTotal" + cnt + ",@BackLayRatio" + cnt + ",@LastPriceTraded" + cnt + ",@VolPrice" + cnt + ",@AvgPrice" + cnt + ",@Matched" + cnt + ",@MatchedTotal" + cnt + ",@VolumeBack" + cnt + ",@VolumeLay" + cnt + ",@InsMoneyBack" + cnt + ",@InsMoneyLay" + cnt + ",@Indikator1" + cnt + ",@Indikator2" + cnt + "),";

                                //create command and assign the query and connection from the constructor

                                parms.Add(new MySqlParameter("@MarketId" + cnt, mb.MarketId));
                                parms.Add(new MySqlParameter("@SelectionId" + cnt, runner.SelectionId));
                                parms.Add(new MySqlParameter("@RefreshNr" + cnt, runner.RefreshNr));
                                parms.Add(new MySqlParameter("@Name" + cnt, runner.RunnerName));
                                parms.Add(new MySqlParameter("@RunnerStatus" + cnt, runner.Status.ToString()));
                                parms.Add(new MySqlParameter("@RemovalDate" + cnt, runner.RemovalDate));
                                parms.Add(new MySqlParameter("@Handicap" + cnt, runner.Handicap));
                                parms.Add(new MySqlParameter("@AdjustmentFactor" + cnt, runner.AdjustmentFactor));
                                //parms.Add(new MySqlParameter("@ToBackTotal" + cnt, runner.ExchangePrices.AvailableToBack.Count < 3 ? runner.ToBackTotal : Math.Round(runner.ToBackTotal - runner.ExchangePrices.AvailableToBack[2].Size, 2)));
                                //parms.Add(new MySqlParameter("@ToLayTotal" + cnt, runner.ExchangePrices.AvailableToLay.Count < 3 ? runner.ToLayTotal : Math.Round(runner.ToLayTotal - runner.ExchangePrices.AvailableToLay[2].Size, 2)));
                                parms.Add(new MySqlParameter("@ToBackTotal" + cnt, runner.ToBackTotal));
                                parms.Add(new MySqlParameter("@ToLayTotal" + cnt, runner.ToLayTotal));
                                parms.Add(new MySqlParameter("@BackLayRatio" + cnt, runner.BackLayRatio));
                                parms.Add(new MySqlParameter("@LastPriceTraded" + cnt, runner.LastPriceTraded));
                                parms.Add(new MySqlParameter("@VolPrice" + cnt, runner.VolPrice));
                                parms.Add(new MySqlParameter("@AvgPrice" + cnt, runner.AvgPrice));
                                parms.Add(new MySqlParameter("@Matched" + cnt, runner.ActMatched));
                                parms.Add(new MySqlParameter("@MatchedTotal" + cnt, runner.MatchedVol));
                                parms.Add(new MySqlParameter("@VolumeBack" + cnt, runner.VolumeBack));
                                parms.Add(new MySqlParameter("@VolumeLay" + cnt, runner.VolumeLay));
                                parms.Add(new MySqlParameter("@InsMoneyBack" + cnt, runner.InsMoneyBack));
                                parms.Add(new MySqlParameter("@InsMoneyLay" + cnt, runner.InsMoneyLay));
                                parms.Add(new MySqlParameter("@Indikator1" + cnt, runner.Indikator1));
                                parms.Add(new MySqlParameter("@Indikator2" + cnt, runner.Indikator2));

                                //runner.RefreshNr = mb.RefreshNr;
                                InsertVolume(runner, mb);
                                ++cnt;
                            }
                            query = query.Remove(query.Length - 1, 1) + ";";
                            int noOfRows = ctx.Database.ExecuteSqlCommand(query, parms.ToArray());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(Util.FormatExc(ex));

            }
        }