コード例 #1
0
        public static List <Tuple <DateTime, string> > GetRaces(BetfairClient client, string venueId)
        {
            var marketFilter = new MarketFilter();

            marketFilter.EventIds = new HashSet <string>()
            {
                venueId
            };
            marketFilter.MarketTypeCodes = new HashSet <String>()
            {
                "WIN"
            };
            //var events = client.ListEvents(marketFilter).Result;

            List <MarketCatalogue> marketCatalogues = client.ListMarketCatalogue(
                marketFilter,
                BFHelpers.HorseRaceProjection(),
                MarketSort.FIRST_TO_START,
                100).Result.Response;
            VenueEngine venueEngine = new VenueEngine();
            var         venue       = venueEngine.GetFromApiId(venueId);

            RaceEngine raceEngine = new RaceEngine();

            raceEngine.Execute(marketCatalogues, venue);

            var races = marketCatalogues.Select(race =>
                                                new Tuple <DateTime, String> (race.Description.MarketTime,
                                                                              race.MarketName + "|" + "|" + race.MarketId)
                                                );

            return(races.ToList());
        }
コード例 #2
0
    public void Test()
    {
        var marketFilter = new MarketFilter();

        marketFilter.EventTypeIds = new HashSet <string>()
        {
            "7"
        };
        marketFilter.MarketCountries = new HashSet <string>()
        {
            "AU"
        };
        marketFilter.MarketStartTime = new TimeRange()
        {
            From = DateTime.Now,
            To   = DateTime.Now.AddDays(2)
        };
        marketFilter.MarketTypeCodes = new HashSet <String>()
        {
            "WIN"
        };
        var events = _client.ListEvents(marketFilter).Result;

        var marketCatalogues = _client.ListMarketCatalogue(
            marketFilter,
            BFHelpers.HorseRaceProjection(),
            MarketSort.FIRST_TO_START,
            100).Result.Response;

        var venues = marketCatalogues.Select(mark =>
                                             mark.Event.Venue).Distinct();

        foreach (MarketCatalogue mc in marketCatalogues)
        {
            Console.WriteLine(mc.Event.Venue);
            Console.WriteLine(mc.MarketName);

            var marketIds = new HashSet <String>()
            {
                mc.MarketId
            };
            var           marketBooks      = _client.ListMarketBook(marketIds).Result.Response;
            List <Runner> runnersForMarket = marketBooks.First().Runners;
            Console.WriteLine("************RUNNERS**************");
            foreach (Runner r in runnersForMarket)
            {
                var rc = mc.Runners.Find(runner => runner.SelectionId.Equals(r.SelectionId));
                Console.WriteLine("Horse: " + rc.RunnerName +
                                  "|Last Price:" + r.LastPriceTraded +
                                  "|Status: " + r.Status);
            }
        }
    }
コード例 #3
0
        public static List <string> GetRunners(BetfairClient client, string raceId)
        {
            var marketFilter = new MarketFilter();

            marketFilter.MarketIds = new HashSet <string>()
            {
                raceId
            };
            marketFilter.MarketTypeCodes = new HashSet <String>()
            {
                "WIN"
            };

            List <MarketCatalogue> marketCatalogues = client.ListMarketCatalogue(
                marketFilter,
                BFHelpers.HorseRaceProjection(),
                MarketSort.FIRST_TO_START,
                100).Result.Response;

            var marketIds = new HashSet <String>()
            {
                raceId
            };
            var marketBooks = client.ListMarketBook(marketIds).Result.Response;

            List <Runner> runnersForMarket = marketBooks.First().Runners;
            RunnerEngine  runnerEngine     = new RunnerEngine();

            RaceEngine raceEngine = new RaceEngine();
            var        race       = raceEngine.GetFromApiId(raceId);

            runnerEngine.Execute(marketCatalogues.First().Runners, runnersForMarket, race);
            var runners = marketCatalogues.First().Runners.Select(runner =>
                                                                  runner.RunnerName + "|" +
                                                                  runner.Metadata.GetValueOrDefault("JOCKEY_NAME") +
                                                                  "^" + runner.Metadata.GetValueOrDefault("TRAINER_NAME") +
                                                                  "^" + runner.Metadata.GetValueOrDefault("WEIGHT_VALUE") +
                                                                  "^" + runner.Metadata.GetValueOrDefault("FORM") +
                                                                  "^" + runner.Metadata.GetValueOrDefault("STALL_DRAW") +
                                                                  "|" + runner.SelectionId +
                                                                  "|" + runnersForMarket.Find(rfm => rfm.SelectionId == runner.SelectionId).LastPriceTraded
                                                                  );;

            //{[WEIGHT_VALUE,]}
            //{[JOCKEY_NAME, T P Mccarthy]}
            //{[TRAINER_NAME, T J Munday]}
            //{[FORM, 83]}
            //{[STALL_DRAW, 3]}
            return(runners.ToList());
        }
コード例 #4
0
        public void Go()
        {
            MarketCatalogue marketCatalogue;

            _markets.TryDequeue(out marketCatalogue);

            _marketSubscription = _marketListener.SubscribeMarketBook(marketCatalogue.MarketId)
                                  .SubscribeOn(Scheduler.Default)
                                  .Subscribe(
                tick =>
            {
                Console.WriteLine(BFHelpers.MarketBookConsole(marketCatalogue, tick, marketCatalogue.Runners));
            },
                () =>
            {
                Console.WriteLine("Market finished");
            });
        }
コード例 #5
0
        public PeriodicExample(BetfairClient client, double pollIntervalInSeconds)
        {
            var betfairClient = client;

            var marketCatalogues = betfairClient.ListMarketCatalogue(
                BFHelpers.HorseRaceFilter("GB"),
                BFHelpers.HorseRaceProjection(),
                MarketSort.FIRST_TO_START,
                25).Result.Response;

            marketCatalogues.ForEach(c =>
            {
                _markets.Enqueue(c);
            });

            _marketListener = MarketListenerPeriodic.Create(betfairClient
                                                            , BFHelpers.HorseRacePriceProjection()
                                                            , pollIntervalInSeconds);
        }
コード例 #6
0
    public void Go()
    {
        var marketCatalogues = _client.ListMarketCatalogue(
            BFHelpers.HorseRaceFilter("GB"),
            BFHelpers.HorseRaceProjection(),
            MarketSort.FIRST_TO_START,
            25).Result.Response;

        marketCatalogues.ForEach(c =>
        {
            _markets.Enqueue(c);
            Console.WriteLine(c.MarketName);
        });
        Console.WriteLine();

        _marketListener = MarketListenerMultiPeriod.Create(_client, BFHelpers.HorseRacePriceProjection());

        MarketCatalogue marketCatalogue1;
        MarketCatalogue marketCatalogue2;

        // Assume these just work...
        _markets.TryDequeue(out marketCatalogue1);
        _markets.TryDequeue(out marketCatalogue2);

        // Save the market ids so we can change the poll interval later
        _id1 = marketCatalogue1.MarketId;
        _id2 = marketCatalogue2.MarketId;

        // Red, every 1 second
        _marketSubscription1 = _marketListener.SubscribeMarketBook(_id1, 1)
                               .SubscribeOn(Scheduler.Default)
                               .Subscribe(
            marketBook =>
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine(marketBook.MarketId);
            //Console.WriteLine(BFHelpers.MarketBookConsole(marketCatalogue1, marketBook, marketCatalogue1.Runners));
            //Console.WriteLine();
        },
            () =>
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("Market finished");
        }
            );

        // Blue, every 2.5 second
        _marketSubscription2 = _marketListener.SubscribeMarketBook(_id2, 2.5)
                               .SubscribeOn(Scheduler.Default)
                               .Subscribe(
            marketBook =>
        {
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine(marketBook.MarketId);
            //Console.WriteLine(BFHelpers.MarketBookConsole(marketCatalogue2, marketBook, marketCatalogue2.Runners));
            //Console.WriteLine();
        },
            () =>
        {
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("Market finished");
        }
            );

        // Now setup a timer so that periodically we swap over the timings of the markets...
        // this will keep going until the Markets close
        _aTimer = new Timer(TimeSpan.FromSeconds(20).TotalMilliseconds); // every 20000 milliseconds change the poll interval for the markets
        // Hook up the Elapsed event for the timer.
        _aTimer.Elapsed += OnTimedEvent;
        _aTimer.Enabled  = true;
    }
コード例 #7
0
ファイル: StreamingExample.cs プロジェクト: tatarb/betfairng
    public void Go()
    {
        // find all the upcoming UK horse races (EventTypeId 7)
        var marketFilter = new MarketFilter();

        marketFilter.EventTypeIds = new HashSet <string>()
        {
            "7"
        };
        marketFilter.MarketStartTime = new TimeRange()
        {
            From = DateTime.Now,
            To   = DateTime.Now.AddDays(2)
        };
        marketFilter.MarketTypeCodes = new HashSet <String>()
        {
            "WIN"
        };

        Console.WriteLine("BetfairClient.ListEvents()");
        var events = _client.ListEvents(marketFilter).Result;

        if (events.HasError)
        {
            throw new ApplicationException();
        }
        var firstEvent = events.Response.First();

        Console.WriteLine("First Event {0} {1}", firstEvent.Event.Id, firstEvent.Event.Name);

        var marketCatalogues = _client.ListMarketCatalogue(
            BFHelpers.HorseRaceFilter(),
            BFHelpers.HorseRaceProjection(),
            MarketSort.FIRST_TO_START,
            25).Result.Response;

        marketCatalogues.ForEach(c =>
        {
            _markets.Enqueue(c);
            Console.WriteLine(c.MarketName);
        });
        Console.WriteLine();

        while (_markets.Count > 0)
        {
            AutoResetEvent  waitHandle = new AutoResetEvent(false);
            MarketCatalogue marketCatalogue;
            _markets.TryDequeue(out marketCatalogue);

            var marketSubscription = _streamingClient.SubscribeMarket(marketCatalogue.MarketId)
                                     .SubscribeOn(Scheduler.Default)
                                     .Subscribe(
                tick =>
            {
                Console.WriteLine(BFHelpers.MarketSnapConsole(tick, marketCatalogue.Runners));
            },
                () =>
            {
                Console.WriteLine("Market finished");
                waitHandle.Set();
            });

            waitHandle.WaitOne();
            marketSubscription.Dispose();
        }
    }
コード例 #8
0
    public void Go()
    {
        // find all the upcoming UK horse races (EventTypeId 7)
        var marketFilter = new MarketFilter();

        marketFilter.EventTypeIds = new HashSet <string>()
        {
            "7"
        };
        marketFilter.MarketStartTime = new TimeRange()
        {
            From = DateTime.Now,
            To   = DateTime.Now.AddDays(2)
        };
        marketFilter.MarketTypeCodes = new HashSet <String>()
        {
            "WIN"
        };

        Console.WriteLine("BetfairClient.ListEvents()");
        var events = _client.ListEvents(marketFilter).Result;

        if (events.HasError)
        {
            throw new ApplicationException();
        }
        var firstEvent = events.Response.First();

        Console.WriteLine("First Event {0} {1}", firstEvent.Event.Id, firstEvent.Event.Name);

        Console.WriteLine("BetfairClient.ListTimeRanges()");
        var timeRanges = _client.ListTimeRanges(marketFilter, TimeGranularity.HOURS).Result;

        if (timeRanges.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.ListCurrentOrders()");
        var currentOrders = _client.ListCurrentOrders().Result;

        if (currentOrders.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.ListVenues()");
        var venues = _client.ListVenues(marketFilter).Result;

        if (venues.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.GetAccountDetails()");
        var accountDetails = _client.GetAccountDetails().Result;

        if (accountDetails.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.GetAccountStatement()");
        var accountStatement = _client.GetAccountStatement().Result;

        if (accountStatement.HasError)
        {
            throw new ApplicationException();
        }

        Console.Write("BetfairClient.GetAccountFunds() ");
        var acc = _client.GetAccountFunds(Wallet.UK).Result;

        if (acc.HasError)
        {
            throw new ApplicationException();
        }
        Console.WriteLine(acc.Response.AvailableToBetBalance);

        Console.WriteLine("BetfairClient.ListClearedOrders()");
        var clearedOrders = _client.ListClearedOrders(BetStatus.SETTLED).Result;

        if (clearedOrders.HasError)
        {
            throw new ApplicationException();
        }

        var marketCatalogues = _client.ListMarketCatalogue(
            BFHelpers.HorseRaceFilter(),
            BFHelpers.HorseRaceProjection(),
            MarketSort.FIRST_TO_START,
            25).Result.Response;


        marketCatalogues.ForEach(c =>
        {
            _markets.Enqueue(c);
            Console.WriteLine(c.MarketName);
        });
        Console.WriteLine();

        Console.WriteLine("BetfairClient.ListRaceDetails()");
        var firstMarket = marketCatalogues.First();
        var raceDetails = _client.ListRaceDetails(new HashSet <string>()
        {
            firstMarket.Event.Id
        }).Result;

        Console.WriteLine("ListRaceDetails {0} {1}", raceDetails.Response.First().MeetingId, raceDetails.Response.First().RaceStatus.ToString());

        var marketListener = MarketListener.Create(_client, BFHelpers.HorseRacePriceProjection(), 1);

        while (_markets.Count > 0)
        {
            AutoResetEvent  waitHandle = new AutoResetEvent(false);
            MarketCatalogue marketCatalogue;
            _markets.TryDequeue(out marketCatalogue);

            var marketSubscription = marketListener.SubscribeMarketBook(marketCatalogue.MarketId)
                                     .SubscribeOn(Scheduler.Default)
                                     .Subscribe(
                tick =>
            {
                Console.WriteLine(BFHelpers.MarketBookConsole(marketCatalogue, tick, marketCatalogue.Runners));
            },
                () =>
            {
                Console.WriteLine("Market finished");
                waitHandle.Set();
            });

            waitHandle.WaitOne();
            marketSubscription.Dispose();
        }
    }
コード例 #9
0
    public static void Main()
    {
        // TODO:// replace with your app details and Betfair username/password
        BetfairClient client = new BetfairClient(Exchange.UK, "APPKEY");

        client.Login(@"client-2048.p12", "certpass", "username", "password");

        // find all the upcoming UK horse races (EventTypeId 7)
        var marketFilter = new MarketFilter();

        marketFilter.EventTypeIds = new HashSet <string>()
        {
            "7"
        };
        marketFilter.MarketStartTime = new TimeRange()
        {
            From = DateTime.Now,
            To   = DateTime.Now.AddDays(2)
        };
        marketFilter.MarketTypeCodes = new HashSet <String>()
        {
            "WIN"
        };

        Console.WriteLine("BetfairClient.ListTimeRanges()");
        var timeRanges = client.ListTimeRanges(marketFilter, TimeGranularity.HOURS).Result;

        if (timeRanges.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.ListCurrentOrders()");
        var currentOrders = client.ListCurrentOrders().Result;

        if (currentOrders.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.ListVenues()");
        var venues = client.ListVenues(marketFilter).Result;

        if (venues.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.GetAccountDetails()");
        var accountDetails = client.GetAccountDetails().Result;

        if (accountDetails.HasError)
        {
            throw new ApplicationException();
        }

        Console.WriteLine("BetfairClient.GetAccountStatement()");
        var accountStatement = client.GetAccountStatement().Result;

        if (accountStatement.HasError)
        {
            throw new ApplicationException();
        }

        Console.Write("BetfairClient.GetAccountFunds() ");
        var acc = client.GetAccountFunds(Wallet.UK).Result;

        if (acc.HasError)
        {
            throw new ApplicationException();
        }
        Console.WriteLine(acc.Response.AvailableToBetBalance);

        Console.WriteLine("BetfairClient.ListClearedOrders()");
        var clearedOrders = client.ListClearedOrders(BetStatus.SETTLED).Result;

        if (clearedOrders.HasError)
        {
            throw new ApplicationException();
        }

        var marketCatalogues = client.ListMarketCatalogue(
            BFHelpers.HorseRaceFilter(),
            BFHelpers.HorseRaceProjection(),
            MarketSort.FIRST_TO_START,
            25).Result.Response;

        marketCatalogues.ForEach(c =>
        {
            Markets.Enqueue(c);
            Console.WriteLine(c.MarketName);
        });
        Console.WriteLine();

        var marketListener = MarketListener.Create(client, BFHelpers.HorseRacePriceProjection(), 1);

        while (Markets.Count > 0)
        {
            AutoResetEvent  waitHandle = new AutoResetEvent(false);
            MarketCatalogue marketCatalogue;
            Markets.TryDequeue(out marketCatalogue);

            var marketSubscription = marketListener.SubscribeMarketBook(marketCatalogue.MarketId)
                                     .SubscribeOn(Scheduler.Default)
                                     .Subscribe(
                tick =>
            {
                Console.WriteLine(BFHelpers.MarketBookConsole(marketCatalogue, tick, marketCatalogue.Runners));
            },
                () =>
            {
                Console.WriteLine("Market finished");
                waitHandle.Set();
            });

            waitHandle.WaitOne();
            marketSubscription.Dispose();
        }

        Console.WriteLine("done.");
        Console.ReadLine();
    }