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()); }
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); } } }
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()); }
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"); }); }
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); }
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; }
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(); } }
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(); } }
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(); }