コード例 #1
0
        private void GetMoneyTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started)
        {
            const string tableName = "MNL2";

            string[] indexArray  = { "iGP", "iGL2", "iSW", "iAdjT", "iAdjS" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);

            for (int gp = lowerBound0; gp <= upperBound0; gp++)
            {
                const string s1 = "A";
                const string s2 = "H";

                double value1 = GetArrayValue(array, gp, 1, _iSw, _iAdjS, _iAdjT);
                double value2 = GetArrayValue(array, gp, 2, _iSw, _iAdjS, _iAdjT);
                double value3 = GetArrayValue(array, gp, 3, _iSw, _iAdjS, _iAdjT);

                if (value3.IsNotEqualToZero())
                {
                    //Logger.Debug("value3 is not equal to zero");
                }

                MarketRunner marketRunner = new MarketRunner
                {
                    Total = value1,
                    Price = value2,
                    Side  = s1
                };

                Market market = new Market
                {
                    Tp     = "ML",
                    Target = marketRunner.Total
                };

                market.MarketRunnerList.Add(marketRunner);

                marketRunner = new MarketRunner
                {
                    Total = value1,
                    Price = value3,
                    Side  = s2
                };

                market.MarketRunnerList.Add(marketRunner);

                if (!periodMarkets.ContainsKey(gp))
                {
                    List <Market> markets = new List <Market>();
                    periodMarkets.Add(gp, markets);
                }


                market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                periodMarkets[gp].Add(market);
            }
        }
コード例 #2
0
        public void IsMappedCorrectly()
        {
            var competition = new Models.Betfair.Response.Competition {
                Id = "compId", Name = "compName"
            };
            var homeTeam = new Models.Betfair.Response.Team {
                SelectionId = "home", Name = "homeTeamName", Metadata = new Metadata {
                    Id = "123456"
                }, Odds = 3.5m
            };
            var awayTeam = new Models.Betfair.Response.Team {
                SelectionId = "away", Name = "awayTeamName", Metadata = new Metadata {
                    Id = "987654"
                }, Odds = 12m
            };
            var source = new Market {
                Id = "id", Competition = competition, StartTime = DateTime.UtcNow, Teams = new[] { homeTeam, awayTeam }
            };

            var result = MatchOdds.From(source);

            Assert.Equal(source.Id, result.Id);
            Assert.Equal(competition.Id, result.CompetitionId);
            Assert.Equal(competition.Name, result.CompetitionName);
            Assert.Equal(source.StartTime, result.Date);
            Assert.Equal(homeTeam.Id, result.HomeTeamId);
            Assert.Equal(awayTeam.Id, result.AwayTeamId);
            Assert.Equal(homeTeam.Name, result.HomeTeamName);
            Assert.Equal(awayTeam.Name, result.AwayTeamName);
            Assert.Equal(homeTeam.Odds, result.HomeTeamOddsDecimal);
            Assert.Equal(awayTeam.Odds, result.AwayTeamOddsDecimal);
            Assert.Equal(OddsConverter.ToFractional(homeTeam.Odds), result.HomeTeamOdds);
            Assert.Equal(OddsConverter.ToFractional(awayTeam.Odds), result.AwayTeamOdds);
        }
コード例 #3
0
        public void ToFractional_DecimalBetween3And10_Create10RoundingSteps(decimal value, string expected)
        {
            //Arrange

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #4
0
        public void ToFractional_NoKnownSubDivisibleBy100_FindClosestMatch(decimal value, string expected)
        {
            //Arrange

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #5
0
        public void ToFractional_PreknownSubstitions_ReturnCorrectFraction(decimal value, string expected)
        {
            //Arrange

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #6
0
        public void ToFractional_NumberOver5_ReturnCorrectValue()
        {
            //Arrange
            decimal value    = 12;
            string  expected = "11/1";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #7
0
        public void ToFractional_NumberOver5AndHalfNumber_DoubleAndReturnOverTwo()
        {
            //Arrange
            decimal value    = 5.5m;
            string  expected = "9/2";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #8
0
        public void ToFractional_NumberOver5_MinusOneAndReturnOverOne()
        {
            //Arrange
            decimal value    = 15;
            string  expected = "14/1";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #9
0
        public void ToFractional_ComplexFractionOver2_ReturnCorrectFraction()
        {
            //Arrange
            decimal value    = 3.2m;
            string  expected = "11/5";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #10
0
        public void ToFractional_WholeNumberIs2_ReturnEvens()
        {
            //Arrange
            decimal value    = 2;
            string  expected = "1/1";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #11
0
        public void ToFractional_WholeNumberOver2_ReturnOverOne()
        {
            //Arrange
            decimal value    = 3;
            string  expected = "2/1";

            //Act
            var result = OddsConverter.ToFractional(value);

            //Assert
            Assert.Equal(expected, result);
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: Arynaine/BetAnalyzer
        private static List <LiveGame> GetOddsForCurrentLiveGames(IEnumerable <LiveGame> currentLiveGames)
        {
            foreach (var liveGame in currentLiveGames)
            {
                var currentOddsUrl = $"https://api.sofascore.com/api/v1/event/{liveGame.Id}/odds/1/all";

                using WebClient webClient = new WebClient();

                var liveGamesString = webClient.DownloadString(currentOddsUrl);

                var currentOdds = JsonConvert.DeserializeObject <Odds.RootObject>(liveGamesString);

                var fullTimeOdds = currentOdds.markets.Where(input => input.marketName == "Full time");

                if (fullTimeOdds.Any())
                {
                    var closingOdds = fullTimeOdds.First();

                    var homeTeamClosingOdds = closingOdds.choices.FirstOrDefault(input => input.name == "1");

                    if (homeTeamClosingOdds != null)
                    {
                        liveGame.HomeTeamClosingOdds = OddsConverter.FractionToDecimalOdds(homeTeamClosingOdds.fractionalValue);
                    }

                    var awayTeamClosingOdds = closingOdds.choices.FirstOrDefault(input => input.name == "2");

                    if (awayTeamClosingOdds != null)
                    {
                        liveGame.AwayTeamClosingOdds = OddsConverter.FractionToDecimalOdds(awayTeamClosingOdds.fractionalValue);
                    }

                    liveGame.HasCurrentOdds = fullTimeOdds.Count() > 1;
                }
            }

            return((List <LiveGame>)currentLiveGames);
        }
コード例 #13
0
        private void GetTeamTotalsThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started)
        {
            const string tableName = "TTL3";

            string[] indexArray  = { "iGP", "iALT", "iTVH", "iGL3", "iSW" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int period = lowerBound0; period <= upperBound0; period++)
            {
                for (int alt = lowerBound1; alt <= upperBound1; alt++)
                {
                    const string s1 = "U";
                    const string s2 = "O";
                    const string s3 = "X";

                    double value1 = GetArrayValue(array, period, alt, 1, 1, _iSw);
                    double value2 = GetArrayValue(array, period, alt, 1, 2, _iSw);
                    double value4 = GetArrayValue(array, period, alt, 1, 4, _iSw);

                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = "ATTL3W",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    // X
                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value4,
                        Side  = s3
                    };

                    market.MarketRunnerList.Add(marketRunner);



                    if (!periodMarkets.ContainsKey(period))
                    {
                        List <Market> markets = new List <Market>();
                        periodMarkets.Add(period, markets);
                    }


                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}";

                    periodMarkets[period].Add(market);

                    // market.Tp = "HTTL3W";

                    value1 = GetArrayValue(array, period, alt, 2, 1, _iSw);
                    value2 = GetArrayValue(array, period, alt, 2, 2, _iSw);
                    double value3 = GetArrayValue(array, period, alt, 2, 3, _iSw);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market = new Market
                    {
                        Tp     = "HTTL3W",
                        Target = marketRunner.Total
                    };
                    //market.Target = marketRunner.Total;

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s3
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    if (!periodMarkets.ContainsKey(period))
                    {
                        List <Market> markets = new List <Market>();
                        periodMarkets.Add(period, markets);
                    }


                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}";

                    periodMarkets[period].Add(market);
                }
            }
        }
コード例 #14
0
        private void GetMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live, Dictionary <string, double> adjust)
        {
            //const string tableName = "ML2";
            string liveNotLive = live == false ? "ML2" : "SML";
            string tableName   = liveNotLive;

            string[] indexArray  = { "iGP", "iALT", "iTGT", "iGL2", "iSW", "iAdjS", "iAdjT" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int gp = lowerBound0; gp <= upperBound0; gp++)
            {
                for (int altp = lowerBound1; altp <= upperBound1; altp++)
                {
                    string s1   = "U";
                    string s2   = "O";
                    string type = "TL";

                    //CHECK ADJUSTMENTS
                    string key = $"{type},{gp}";
                    if (adjust.ContainsKey(key))
                    {
                        _iAdjT = ToInt16(adjust[key]);
                    }
                    else
                    {
                        _iAdjT = 11;
                    }

                    double value1 = GetArrayValue(array, gp, altp, 2, 1, _iSw, _iAdjS, _iAdjT);
                    double value2 = GetArrayValue(array, gp, altp, 2, 2, _iSw, _iAdjS, _iAdjT);
                    double value3 = GetArrayValue(array, gp, altp, 2, 3, _iSw, _iAdjS, _iAdjT);

                    if (value3.IsNotEqualToZero())
                    {
                        //Logger.Debug("value3 is not equal to zero");
                    }

                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = type,
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    if (!periodMarkets.ContainsKey(gp))
                    {
                        List <Market> markets = new List <Market>();
                        periodMarkets.Add(gp, markets);
                    }

                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                    periodMarkets[gp].Add(market);

                    // spreads
                    s1   = "A";
                    s2   = "H";
                    type = "SP";

                    //CHECK ADJUSTMENTS
                    key = $"{type},{gp}";
                    if (adjust.ContainsKey(key))
                    {
                        _iAdjS = ToInt16(adjust[key]);
                    }
                    else
                    {
                        _iAdjS = 11;
                    }

                    value1 = GetArrayValue(array, gp, altp, 1, 1, _iSw, _iAdjS, _iAdjT);
                    value2 = GetArrayValue(array, gp, altp, 1, 2, _iSw, _iAdjS, _iAdjT);
                    value3 = GetArrayValue(array, gp, altp, 1, 3, _iSw, _iAdjS, _iAdjT);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market = new Market
                    {
                        Tp     = type,
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = -value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    //     if (market.MarketRunnerList[0].Price > 0)
                    //     {
                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                    periodMarkets[gp].Add(market);
                    //   }
                }
            }
        }
コード例 #15
0
        private void GetInningTeamTotalsThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live)
        {
            const int inning    = 4;
            string    tableName = live ? "MITT3W" : "ITT3W";

            string[] indexArray  = { "iGP", "TTRI", "iTVH", "iGL3" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int period = lowerBound0; period <= upperBound0; period++)
            {
                for (int alt = lowerBound1; alt <= upperBound1; alt++)
                {
                    const string s1 = "U";
                    const string s2 = "O";
                    const string s3 = "X";

                    double value1 = GetArrayValue(array, period, alt, 1, 1);
                    double value2 = GetArrayValue(array, period, alt, 1, 2);
                    double value3 = GetArrayValue(array, period, alt, 1, 3);
                    double value4 = GetArrayValue(array, period, alt, 1, 4);

                    // O
                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = "ATTL3W",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    // U
                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    // X
                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value4,
                        Side  = s3
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    int init = inning + period;

                    if (!periodMarkets.ContainsKey(init))
                    {
                        List <Market> marketSide = new List <Market>();
                        periodMarkets.Add(init, marketSide);
                    }

                    //   if (value4.IsNotEqualToZero())
                    //   {
                    market     = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}";

                    periodMarkets[init].Add(market);
                    //   }


                    market = new Market {
                        Tp = "HTTL3W"
                    };

                    value1 = GetArrayValue(array, period, alt, 2, 1);
                    value2 = GetArrayValue(array, period, alt, 2, 2);
                    value3 = GetArrayValue(array, period, alt, 2, 3);
                    value4 = GetArrayValue(array, period, alt, 2, 4);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market.Target = marketRunner.Total;
                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value4,
                        Side  = s3
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    init = inning + period;

                    if (!periodMarkets.ContainsKey(init))
                    {
                        List <Market> marketSide = new List <Market>();
                        periodMarkets.Add(init, marketSide);
                    }

                    //    if (value4.IsNotEqualToZero())
                    //    {
                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}";

                    periodMarkets[init].Add(market);
                    //   }
                }
            }
        }
コード例 #16
0
        public static void TwoPointO(LiveGame game, double maxDecimal)
        {
            if (game.SetAlgorithms.Any(input => input == 1))
            {
                return;
            }

            var teamToWatch = game.HomeTeamClosingOdds < maxDecimal ? 1 : 2;

            var currentOddsUrl = $"https://api.sofascore.com/api/v1/event/{game.Id}/odds/1/all";

            using WebClient webClient = new WebClient();

            var liveGamesString = webClient.DownloadString(currentOddsUrl);

            var currentOdds = JsonConvert.DeserializeObject <Odds.RootObject>(liveGamesString);

            var fullTimeOdds = currentOdds.markets.Where(input => input.marketName == "Full time");

            var currentFullTimeOdds = fullTimeOdds.Skip(1).FirstOrDefault();

            var fraction = currentFullTimeOdds?.choices.FirstOrDefault(input => input.name == teamToWatch.ToString());

            if (fraction == null)
            {
                return;
            }

            var odds = OddsConverter.FractionToDecimalOdds(fraction.fractionalValue);

            if (!(odds > 2.0))
            {
                return;
            }

            var bet = new PlacedBet
            {
                Id              = game.Id,
                Sport           = (int)game.Sport,
                SportName       = game.Sport.ToString(),
                AlgorithmId     = 1,
                CustomId        = game.CustomId,
                Game            = game.GameName,
                OddsPlaced      = odds,
                TournamentName  = game.TournamentName,
                TournamentId    = game.TournamentId,
                BetPlacedOnTeam = teamToWatch,
            };

            var pending = new Pending
            {
                CustomId   = game.CustomId,
                DatePlaced = DateTime.Today.ToString("yyyy-MM-dd"),
                Sport      = game.Sport.ToString(),
            };

            //var pending =  new Dictionary<string, string> {{game.CustomId, DateTime.Today.ToString("yyyy-MM-dd")}};


            var client = new FirebaseClient(_config);

            try
            {
                //Task<SetResponse> response = client.SetAsync($"placed_bets/{DateTime.Now.Year.ToString()}/{DateTime.Now.Month.ToString()}/{DateTime.Now.Day.ToString()}/{game.Sport.ToString()}/{game.CustomId}", bet);

                Task <SetResponse> response = client.SetAsync(Helper.GetPlacedBetUrl(DateTime.Now.ToString("yyyy-MM-dd"), game.CustomId, game.Sport.ToString()), bet);

                Task <SetResponse> reTask = client.SetAsync($"pending_game_evaluation/{game.CustomId}", pending);

                game.SetAlgorithms.Add(1);

                Console.WriteLine($"Placed bet on {bet.Game} ({bet.SportName}) on team {bet.BetPlacedOnTeam} to odds {bet.OddsPlaced}");
                Console.WriteLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Could not add the bet. See error message: " + e.Message);
            }
        }
コード例 #17
0
        private void GetMainLinesThreeWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live)
        {
            string tableName = live ? "MGML3W" : "GML3W";

            string[] indexArray  = { "GP", "altp", "iTGT", "iGL3" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int period = lowerBound0; period <= upperBound0; period++)
            {
                for (int alt = lowerBound1; alt <= upperBound1; alt++)
                {
                    string       s1 = "U";
                    string       s2 = "O";
                    const string s3 = "X";

                    double value1 = GetArrayValue(array, period, alt, 2, 1);
                    double value2 = GetArrayValue(array, period, alt, 2, 2);
                    double value3 = GetArrayValue(array, period, alt, 2, 3);
                    double value4 = GetArrayValue(array, period, alt, 2, 4);

                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = "TL3W",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };
                    market.Target = marketRunner.Total;
                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value4,
                        Side  = s3
                    };
                    market.MarketRunnerList.Add(marketRunner);

                    if (!periodMarkets.ContainsKey(period))
                    {
                        List <Market> marketSide = new List <Market>();
                        periodMarkets.Add(period, marketSide);
                    }

                    if (value4.IsNotEqualToZero())
                    {
                        market     = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}";

                        periodMarkets[period].Add(market);
                    }

                    // spreads

                    s1 = "A";
                    s2 = "H";

                    value1 = GetArrayValue(array, period, alt, 1, 1);
                    value2 = GetArrayValue(array, period, alt, 1, 2);
                    value3 = GetArrayValue(array, period, alt, 1, 3);
                    value4 = GetArrayValue(array, period, alt, 1, 4);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market = new Market
                    {
                        Tp     = "SP3W",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = -value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.Target = marketRunner.Total;
                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value4,
                        Side  = s3
                    };
                    market.MarketRunnerList.Add(marketRunner);

                    if (value4.IsNotEqualToZero())
                    {
                        market     = OddsConverter.FinishedOdds(market, started, _threeWayVig, _threeWayVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}{period}{market.Tp}";
                        periodMarkets[period].Add(market);
                    }
                }
            }
        }
コード例 #18
0
        private void GetInningMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live)
        {
            const int inning    = 4;
            string    tableName = live ? "Miml2w" : "iml2w";

            string[] indexArray  = { "iGP", "alti", "iTGT", "iGL2" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int period = lowerBound0; period <= upperBound0; period++)
            {
                for (int alt = lowerBound1; alt <= upperBound1; alt++)
                {
                    try
                    {
                        string s1 = "U";
                        string s2 = "O";

                        double value1 = GetArrayValue(array, period, alt, 2, 1);
                        double value2 = GetArrayValue(array, period, alt, 2, 2);
                        double value3 = GetArrayValue(array, period, alt, 2, 3);

                        MarketRunner marketRunner = new MarketRunner
                        {
                            Total = value1,
                            Price = value2,
                            Side  = s1
                        };

                        Market market = new Market
                        {
                            Tp     = "TL",
                            Target = marketRunner.Total
                        };

                        market.MarketRunnerList.Add(marketRunner);

                        marketRunner = new MarketRunner
                        {
                            Total = value1,
                            Price = value3,
                            Side  = s2
                        };

                        market.MarketRunnerList.Add(marketRunner);
                        int init = inning + period;

                        if (!periodMarkets.ContainsKey(init))
                        {
                            List <Market> marketSide = new List <Market>();
                            periodMarkets.Add(init, marketSide);
                        }

                        market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}";

                        periodMarkets[init].Add(market);

                        s1 = "A";
                        s2 = "H";

                        value1 = GetArrayValue(array, period, alt, 1, 1);
                        value2 = GetArrayValue(array, period, alt, 1, 2);
                        value3 = GetArrayValue(array, period, alt, 1, 3);

                        marketRunner = new MarketRunner
                        {
                            Total = value1,
                            Price = value2,
                            Side  = s1
                        };

                        market = new Market
                        {
                            Tp     = "SP",
                            Target = marketRunner.Total
                        };
                        market.MarketRunnerList.Add(marketRunner);

                        marketRunner = new MarketRunner
                        {
                            Total = -value1,
                            Price = value3,
                            Side  = s2
                        };

                        market.MarketRunnerList.Add(marketRunner);

                        decimal test  = ToDecimal(market.MarketRunnerList[0].Total);
                        int     count = BitConverter.GetBytes(decimal.GetBits(test)[3])[2];

                        market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}{init}{market.Tp}";
                        periodMarkets[init].Add(market);
                    }
                    catch (Exception exception)
                    {
                        Logger.Error(exception);
                    }
                }
            }
        }
コード例 #19
0
        private void GetMainLinesTwoWaysResults(IDictionary <int, List <Market> > periodMarkets, bool started, bool live)
        {
            string tableName = live ? "Mgml2w" : "gml2w";

            string[] indexArray  = { "GP", "altp", "iTGT", "iGL2" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int gp = lowerBound0; gp <= upperBound0; gp++)
            {
                for (int altp = lowerBound1; altp <= upperBound1; altp++)
                {
                    string s1 = "U";
                    string s2 = "O";

                    double value1 = GetArrayValue(array, gp, altp, 2, 1);
                    double value2 = GetArrayValue(array, gp, altp, 2, 2);
                    double value3 = GetArrayValue(array, gp, altp, 2, 3);

                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = "TL",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    if (!periodMarkets.ContainsKey(gp))
                    {
                        List <Market> marketSide = new List <Market>();
                        periodMarkets.Add(gp, marketSide);
                    }

                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";
                    periodMarkets[gp].Add(market);

                    //------------------spread------------------------------------------
                    s1 = "A";
                    s2 = "H";

                    value1 = GetArrayValue(array, gp, altp, 1, 1);
                    value2 = GetArrayValue(array, gp, altp, 1, 2);
                    value3 = GetArrayValue(array, gp, altp, 1, 3);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market = new Market
                    {
                        Tp     = "SP",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = -value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);
                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                    periodMarkets[gp].Add(market);
                }
            }
        }
コード例 #20
0
        private void GetGoalieProps(IDictionary <int, List <Market> > periodMarkets, bool started, bool live, Dictionary <string, double> adjust)
        {
            const string liveNotLive = "GGAP";
            const string tableName   = liveNotLive;

            string[]     indexArray  = { "iTVH", "iGO", "ST", "iGL2" };
            Array        array       = GetTableArray(tableName, indexArray);
            int          lowerBound0 = array.GetLowerBound(0);
            int          upperBound0 = array.GetUpperBound(0);
            int          lowerBound1 = array.GetLowerBound(1);
            int          upperBound1 = array.GetUpperBound(1);
            int          lowerBound2 = array.GetLowerBound(2);
            int          upperBound2 = array.GetUpperBound(2);
            int          lowerBound3 = array.GetLowerBound(3);
            int          upperBound3 = array.GetUpperBound(3);
            const string s1          = "U";
            const string s2          = "O";

            //string[] types = { "GA" };


            string metricStr = "GA";                                  //get type string

            for (int side = lowerBound0; side <= upperBound0; side++) //side
            {
                string sideStr = side == 1 ? "away" : "home";

                for (int player = lowerBound1; player <= upperBound1; player++)     //side
                {
                    //Player playerEl = gm.roster.players.Find(player => player.side == sideStr & player.num == pNum);
                    //create a new player

                    for (int alts = lowerBound2; alts <= upperBound2; alts++)
                    {
                        double value1 = GetArrayValue(array, side, player, alts, 1);
                        double value2 = GetArrayValue(array, side, player, alts, 2);
                        double value3 = GetArrayValue(array, side, player, alts, 3);

                        Market market = new Market
                        {
                            Tp     = metricStr,
                            Target = value1,
                            Player = $"{sideStr}_{player}"
                        };


                        market.MarketRunnerList.Add(new MarketRunner
                        {
                            Total = value1,
                            Price = value2,
                            Side  = s1
                        });

                        market.MarketRunnerList.Add(new MarketRunner
                        {
                            Total = value1,
                            Price = value3,
                            Side  = s2
                        });

                        market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}1{market.Tp}";

                        if (!periodMarkets.ContainsKey(1))
                        {
                            periodMarkets.Add(1, new List <Market>());
                        }

                        periodMarkets[1].Add(market);
                    }
                }
            }
        }
コード例 #21
0
        private void GetMainLinesTwoWaysResultsLive(IDictionary <int, List <Market> > periodMarkets, bool started, bool live)
        {
            const string liveNotLive = "SML";
            const string tableName   = liveNotLive;

            string[] indexArray  = { "iGP", "iALT", "iTGT", "iGL2", "iAdjT", "iAdjS" };
            Array    array       = GetTableArray(tableName, indexArray);
            int      lowerBound0 = array.GetLowerBound(0);
            int      upperBound0 = array.GetUpperBound(0);
            int      lowerBound1 = array.GetLowerBound(1);
            int      upperBound1 = array.GetUpperBound(1);

            for (int gp = lowerBound0; gp <= upperBound0; gp++)
            {
                for (int altp = lowerBound1; altp <= upperBound1; altp++)
                {
                    string s1 = "U";
                    string s2 = "O";

                    double value1 = GetArrayValue(array, gp, altp, 2, 1, _iAdjS, _iAdjT);
                    double value2 = GetArrayValue(array, gp, altp, 2, 2, _iAdjS, _iAdjT);
                    double value3 = GetArrayValue(array, gp, altp, 2, 3, _iAdjS, _iAdjT);

                    if (value3.IsNotEqualToZero())
                    {
                        //Logger.Debug("value3 is not equal to zero");
                    }

                    MarketRunner marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    Market market = new Market
                    {
                        Tp     = "TL",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    if (!periodMarkets.ContainsKey(gp))
                    {
                        List <Market> markets = new List <Market>();
                        periodMarkets.Add(gp, markets);
                    }

                    market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                    market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                    periodMarkets[gp].Add(market);


                    // spreads
                    // get totals
                    s1 = "A";
                    s2 = "H";

                    value1 = GetArrayValue(array, gp, altp, 1, 1, _iAdjS, _iAdjT);
                    value2 = GetArrayValue(array, gp, altp, 1, 2, _iAdjS, _iAdjT);
                    value3 = GetArrayValue(array, gp, altp, 1, 3, _iAdjS, _iAdjT);

                    marketRunner = new MarketRunner
                    {
                        Total = value1,
                        Price = value2,
                        Side  = s1
                    };

                    market = new Market
                    {
                        Tp     = "SP",
                        Target = marketRunner.Total
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    marketRunner = new MarketRunner
                    {
                        Total = -value1,
                        Price = value3,
                        Side  = s2
                    };

                    market.MarketRunnerList.Add(marketRunner);

                    if (market.MarketRunnerList[0].Price > 0)
                    {
                        market     = OddsConverter.FinishedOdds(market, started, _preVig, _liveVig);
                        market.Key = $"{market.MarketRunnerList[0].Total}{gp}{market.Tp}";

                        periodMarkets[gp].Add(market);
                    }
                }
            }
        }