Esempio n. 1
0
        private async void CheckWatchedEvents()
        {
            if (WatchedEvents.Count == 0)
            {
                return;
            }
            BettingData FortunaEvents = await GetNewFeedData();

            if (FortunaEvents == null)
            {
                return;
            }
            foreach (var EventsToWatch in WatchedEvents)
            {
                Match FortunaMatch           = FortunaEventHelper.GetMatchByID(EventsToWatch.Item2, FortunaEvents);
                var   FortunaUnflattenedOdds =
                    FortunaMatch.Bets.Bet.Select(x => x.Odds.Select(y => Convert.ToDouble(y.Text, CultureInfo.InvariantCulture)).ToList()).ToList();
                List <double> FortunaOdds = FortunaUnflattenedOdds.SelectMany(x => x).ToList(); // 0 - home, 1 - tie, 2 - away

                int ScrapedEventsCount = Model.MarketSnapshots[EventsToWatch.Item1].Count();

                List <MarketSnapshot> MatchbookOffers = Model.MarketSnapshots[EventsToWatch.Item1].Skip(Math.Max(0, ScrapedEventsCount - 3)).ToList();
                foreach (var offer in MatchbookOffers)
                {
                    if (offer.Lay.Count == 0)
                    {
                        return; // no lay offers
                    }
                }

                List <double> MatchbookOdds = MatchbookOffers.Select(x => x.Lay.First()).Select(x => x.Odds).ToList();
                for (int i = 0; i < MatchbookOdds.Count; i++)
                {
                    if (FortunaOdds[i] > MatchbookOdds[i])
                    {
                        switch (i)
                        {
                        case 0:
                            GUIHelper.ThrowWarning("Arbitrage", $"Arbitrage detected at Home wins market! Home Matchbook odds: {MatchbookOdds[i]}, Fortuna odds: {FortunaOdds[i]}");
                            break;

                        case 1:
                            GUIHelper.ThrowWarning("Arbitrage", $"Arbitrage detected at Tie wins market! Home Matchbook odds: {MatchbookOdds[i]}, Fortuna odds: {FortunaOdds[i]}");
                            break;

                        case 2:
                            GUIHelper.ThrowWarning("Arbitrage", $"Arbitrage detected at Away wins market! Home Matchbook odds: {MatchbookOdds[i]}, Fortuna odds: {FortunaOdds[i]}");
                            break;

                        default:
                            GUIHelper.ThrowWarning("Arbitrage", $"Some kind of arbitrage found! Home Matchbook odds: {MatchbookOdds[i]}, Fortuna odds: {FortunaOdds[i]}");
                            break;
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        private async void FindFortunaEventsByName()
        {
            BindingSource Events        = new BindingSource();
            BettingData   FortunaEvents = await GetNewFeedData();

            if (FortunaEvents == null)
            {
                return;
            }
            foreach (var Category in FortunaEvents.Category)
            {
                foreach (var Tournament in Category.Tournament)
                {
                    foreach (var Match in Tournament.Match)
                    {
                        foreach (var Event in GetMatchPrices(Match))
                        {
                            Event.EventName      = Match.Name;
                            Event.TournamentName = Tournament.Name;
                            Event.ID             = Convert.ToInt64(Match.Id);
                            Events.Add(Event);
                        }
                    }
                }
            }

            SearchResultsView.Columns.Clear();
            SearchResultsView.AutoGenerateColumns = false;
            foreach (var Column in FortunaEventHelper.GenerateColumns())
            {
                SearchResultsView.Columns.Add(Column);
            }

            SearchResultsView.Columns[4].Visible = false; // don't show match ID
            SearchResultsView.DataSource         = Events;
        }