How to find the extra place markets and their prices

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • monkeymagix
    Junior Member
    • Jul 2010
    • 105

    #1

    How to find the extra place markets and their prices

    I am trying to write a system that uses the EXTRA PLACE prices (if they exist).

    In the old system it was pretty easy with a LINQ statement and function to check the market type (5TBP, 4TBP etc). However when I try and pass anything into the market I don't get a response even though I have been checking online to ensure there is a place market and extra place market (lower OR higher)

    The code I am using is below

    Code:
    public void SetUpHorseRacingMarketExtra(bool inplayEnabled)
    {
    
    	this.HelperLib.LogMsg("IN SetUpHorseRacingMarketExtra inplayEnabled = " + inplayEnabled.ToString(), "MEDIUM");
    
    	var time = new TimeRange();
    	time.From = DateTime.Now;
    	time.To = DateTime.Today.AddDays(1);
    
    	MarketFilter marketFilter = new MarketFilter();
    
    	// only need horse racing
    	ISet<string> EventTypeIDs = new HashSet<string>();
    	EventTypeIDs.Add("7");
    
    	marketFilter.EventTypeIds = EventTypeIDs;
    	marketFilter.MarketStartTime = time;
    
    
    	marketFilter.MarketCountries = new HashSet<string>();
       
    	marketFilter.MarketCountries.Add("GB");
    
    	// Add in all the place markets that are shown on the website - as I cannot find any other definition to use?
    	marketFilter.MarketTypeCodes = new HashSet<String>() { "OTHER_PLACE", "4TBP", "5TBP", "PLACE_OTHER" };
    	
    	marketFilter.TurnInPlayEnabled = inplayEnabled;
    
    	ISet<MarketProjection> marketProjections = new HashSet<MarketProjection>();
    	marketProjections.Add(MarketProjection.COMPETITION);
    	marketProjections.Add(MarketProjection.RUNNER_DESCRIPTION);
    	marketProjections.Add(MarketProjection.COMPETITION);
    	marketProjections.Add(MarketProjection.EVENT);
    	marketProjections.Add(MarketProjection.EVENT_TYPE);
    	marketProjections.Add(MarketProjection.MARKET_START_TIME);
    	marketProjections.Add(MarketProjection.RUNNER_METADATA);
    
    
    	this.HelperLib.LogMsg("SaveGlobalMarkets - Market Info", "HIGH");
    
    
    	this.HelperLib.LogMsg("CALL SaveGlobalMarkets", "HIGH");
    
    	// add these markets to our global list of markets
    	//this.SaveGlobalMarkets(marketFilter, marketProjections, inplayEnabled);
    			   
    
    	var marketSort = MarketSort.FIRST_TO_START;
    	var maxResults = "200";
    
    	var marketCatalogues = BetfairAPI.Client.listMarketCatalogue(marketFilter, marketProjections, marketSort, maxResults);
    
    	this.HelperLib.LogMsg("We have " + marketCatalogues.Count.ToString() + " markets to loop through", "MEDIUM");
    
    
    	for (int i = 0; i < marketCatalogues.Count; i++)
    	{
    		MarketCatalogue marketCatalogue = marketCatalogues[i];
    
    		string course = "";
    		string country = "";
    
    		this.HelperLib.LogMsg("MarketID: " + marketCatalogue.MarketId, "MEDIUM");
    		this.HelperLib.LogMsg("Market Name: " + marketCatalogue.MarketName, "MEDIUM");
    		this.HelperLib.LogMsg("Market StartTime: " + marketCatalogue.MarketStartTime, "MEDIUM");
    		this.HelperLib.LogMsg("isMarketDataDelayed: " + marketCatalogue.IsMarketDataDelayed, "MEDIUM");
    		this.HelperLib.LogMsg("Description: " + marketCatalogue.Description, "MEDIUM");
    		this.HelperLib.LogMsg("EventType: " + marketCatalogue.EventType, "MEDIUM");
    		this.HelperLib.LogMsg("Event: " + marketCatalogue.Event, "MEDIUM");
    		this.HelperLib.LogMsg("Competition: " + marketCatalogue.Competition, "MEDIUM");
    
    		course = marketCatalogue.Event.Venue;
    		country = marketCatalogue.Event.CountryCode;
    
    		this.HelperLib.LogMsg("Get race info for " + marketCatalogue.MarketName.ToString() + " - " + course + " - " + country, "MEDIUM");
    
    
    		// ensure we get the right race info so we can save it all to our table in one go
    		RaceInfo raceInfo = this.GetRaceInfo(marketCatalogue.MarketName, Convert.ToDateTime(marketCatalogue.MarketStartTime), course, country);
    
    		this.HelperLib.LogMsg("RacePK for market is " + raceInfo.RacePK.ToString(), "HIGH");
    
    		if (raceInfo.RacePK > 0)
    		{
    			this.HelperLib.LogMsg("Add to this.AllMarkets", "HIGH");
    								
    
    			this.HelperLib.LogMsg("Add to Market obj", "HIGH");
    			this.HelperLib.LogMsg("RacePK = " + raceInfo.RacePK.ToString(), "HIGH");
    			this.HelperLib.LogMsg("MarketID = " + this.HelperLib.FormatMarketID(marketCatalogue.MarketId).ToString(), "HIGH");
    			this.HelperLib.LogMsg("MarketType = " + raceInfo.MarketType, "HIGH");
    			this.HelperLib.LogMsg("Racedatetime = " + Convert.ToDateTime(marketCatalogue.MarketStartTime).ToString(), "HIGH");
    			this.HelperLib.LogMsg("InplayEnabled = " + inplayEnabled.ToString(), "HIGH");
    
    			this.HelperLib.LogMsg("Added ok", "HIGH");
    		}
    
    	}
    }

    DEBUG FROM THAT.....


    IN SetUpHorseRacingMarketExtra inplayEnabled = False;
    SaveGlobalMarkets - Market Info;
    CALL SaveGlobalMarkets;
    EndPoint = https://api.betfair.com/exchange/betting/json-rpc/v1/;
    Calling: SportsAPING/v1.0/listMarketCatalogue With args: {"filter":{"eventTypeIds":["7"],"turnInPlayEnabled":false,"marketCountries":["GB"],"marketTypeCodes":["OTHER_PLACE","4TBP","5TBP","PLACE_OTHER"],"marketStartTime":{"from":"2016-10-17T17:52:37.9214385+01:00","to":"2016-10-18T00:00:00+01:00"}},"marketProjection":["COMPETITION","RUNNER_DESCRIPTION","EVENT","EVENT_ TYPE","MARKET_START_TIME","RUNNER_METADATA"],"sort":"FIRST_TO_START","maxResults":"200","local e":null};
    try and get response;
    Got Response: {"jsonrpc":"2.0","result":[],"id":1};
    We have 0 markets to loop through;


    Is there a special format for extra place markets I need to use?

    How do I return the prices, market Id and information for a runner in a 4TBP market where is it's the extra market in a standard 8 horse race?

    Thanks

    Rob
  • LiamP
    Junior Member
    • Oct 2015
    • 284

    #2
    Its Monday, there are no more UK races today, also UK races have turnInPlayEnabled: True.

    Comment

    • monkeymagix
      Junior Member
      • Jul 2010
      • 105

      #3
      I know but

      I know there was no more races on the day I posted as I had been at work all day trying to figure out how to get the extra place markets back before I wrote the question. Try first, search online then ask for help is they way I try and proceed if I am stuck with something.

      So today, with all the extra place markets what do I put into the filter e.g "WIN","PLACE" etc to get those extra place markets.

      Can't seem to find anything in the API documentation and emails to @bdp.com just redirect to a form now to post a question whereas before they helped you out.

      So if anyone knows what the parameter is please let me know.

      Or if there is another way e.g in the PLACE market there are extra response params that tell you it's got a 2 and 4 TBP market with the market IDs then that would be great as well.

      Any help much appreciated.

      Thanks

      Comment

      • betdynamics
        Junior Member
        • Sep 2010
        • 534

        #4
        The correct marketCode is "OTHER_PLACE".

        Sending the following JSON request returns a long list of 2 TBP, 3 TBP, 4 TBP and 5 TBP markets:

        Code:
        {"jsonrpc": "2.0", "method": "SportsAPING/v1.0/listMarketCatalogue", "params": {"filter":{"eventTypeIds":["7"],"marketTypeCodes":["OTHER_PLACE"]},"maxResults":"100","marketProjection":["MARKET_DESCRIPTION"]}, "id": 1}

        Comment

        • monkeymagix
          Junior Member
          • Jul 2010
          • 105

          #5
          But

          Hi

          I just tried that using JsonRpcClient not rescript (code handles both methods)

          Debug from log file

          CALL SaveGlobalMarkets;

          EndPoint = https://api.betfair.com/exchange/betting/json-rpc/v1/;

          Calling: SportsAPING/v1.0/listMarketCatalogue With args: {"filter":{"eventTypeIds":["7"],"turnInPlayEnabled":false,"marketCountries":["GB"],"marketTypeCodes":["OTHER_PLACE"],"marketStartTime":{"from":"2016-10-19T15:48:13.2717854+01:00","to":"2016-10-20T00:00:00+01:00"}},"marketProjection":["MARKET_DESCRIPTION"],"sort":"FIRST_TO_START","maxResults":"200","local e":null};

          try and get response;

          Got Response: {"jsonrpc":"2.0","result":[],"id":1};

          We have 0 markets to loop through;
          This is written in C# with abstract classes (jsonrpc/rescript pointing to their own implementations of calling the API which both work)

          So either I am not passing something I would normally do that hasn't broken anything before or I need to pass something extra for special markets.

          By the way this is just the standard code I use for WIN / PLACE markets for any country/sport and I just change the market type and country code in the parameters that are passed through to the call to the API.

          Can you spot anything I am doing wrong.

          Thanks

          Rob

          Comment

          • jabe
            Senior Member
            • Dec 2014
            • 705

            #6
            Make it
            "turnInPlayEnabled":true

            Comment

            • monkeymagix
              Junior Member
              • Jul 2010
              • 105

              #7
              Hi
              That seemed to work in that I got data back. The only issue is the amount of data and seemingly irrelevant data e.g

              CALL SaveGlobalMarkets;
              EndPoint = https://api.betfair.com/exchange/betting/json-rpc/v1/;
              Calling: SportsAPING/v1.0/listMarketCatalogue With args: {"filter":{"eventTypeIds":["7"],"turnInPlayEnabled":true,"marketCountries":["GB"],"marketTypeCodes":["OTHER_PLACE"],"marketStartTime":{"from":"2016-10-19T17:26:27.6807854+01:00","to":"2016-10-20T00:00:00+01:00"}},"marketProjection":["MARKET_DESCRIPTION"],"sort":"FIRST_TO_START","maxResults":"200","local e":null};
              try and get response;
              Got Response: {"jsonrpc":"2.0","result":[{"marketId":"1.127720037","marketName":"4 TBP","isMarketDataDelayed":false,"description":{"p ersistenceEnabled":true,"bspMarket":false,"marketT ime":"2016-10-19T16:40:00Z","suspendTime":"2016-10-19T16:40:00Z","bettingType":"ODDS","turnInPlayEnab led":true,"marketType":"OTHER_PLACE","regulator":" GIBRALTAR REGULATOR","marketBaseRate":5.0,"discountAllowed": true,"wallet":"UK wallet","rules":"<table cellborder=\"0\" width=\"100%\"><tr><td><img src=\"http://content-cache.betfair.com/images/en_GB/homepage/ATRlogo.gif\" border=\"0\"></td><td width=\"5\">&nbsp;</td><td class=\"marketInfo_GreyText\">This meeting is on Attheraces</td></tr></table><br><a href=\"http://form.timeform.betfair.com/\" target=\"_blank\"><img src=\" http://content-cache.betfair.com/images/en_GB/mr_fr.gif\" title=”Form/ Results” border=\"0\"></a>\n<br><br><b>MARKET INFORMATION</b><br><br>For further information please see <a href=http://content.betfair.com/aboutus/content.asp?sWhichKey=Rules%20and%20Regulations#un defined.do style=color:0163ad; text-decoration: underline; target=_blank>Rules & Regs.</a><br><br>Who will finish <FONT COLOR = \"RED\"> 1st, 2nd, 3rd or 4th </FONT>in this race? NON RUNNERS DO NOT CHANGE THE PLACE TERMS. Should the number of runners be equal to or less than the number of places available as set out above in these rules all bets will be void. Betfair Non-Runner Rule applies. <b>This market will turn IN PLAY at the off with unmatched bets (with the exception of bets for which the \"keep\" option has been selected) cancelled. Betting will be suspended at the end of the race.</b> This market will initially be settled on a First Past the Post basis. However we will re-settle all bets should the official result at the time of the \"weigh-in\" announcement differ from any initial settlement. BETS ARE PLACED ON A NAMED HORSE. Dead Heat rules apply.<br><br>Customers should be aware that:<ol><b><li>transmissions described as \"live\" by some broadcasters may actually be delayed;</li><li>the extent of any such delay may vary, depending on the set-up through which they are receiving pictures or data; and</li></b><li>information (such as jockey silks, saddlecloth numbers etc) is provided \"as is\" and is for guidance only. Betfair does not guarantee the accuracy of this information and use of it to place bets is entirely at your own risk.</li></ol><br>","rulesHasDate":true,"clarifications":"NR: (UKT) <br> 1. Above Board (45.7%,15:52), <br> 4. Ghost River (52.5%,17:05)"}},{"marketId":"1.127720039","market Name":"2 TBP","isMarketDataDelayed":false,"description":{"p ersistenceEnabled":true,"bspMarket":false,"marketT ime":"2016-10-19T16:40:00Z","suspendTime":"2016-10-19T16:40:00Z","bettingType":"ODDS","turnInPlayEnab led":true,"marketType":"OTHER_PLACE","regulator":" GIBRALTAR REGULATOR","marketBaseRate":5.0,"discountAllowed": true,"wallet":"UK wallet","rules":"<table cellborder=\"0\" width=\"100%\"><tr><td><img src=\"http://content-cache.betfair.com/images/en_GB/homepage/ATRlogo.gif\" border=\"0\"></td><td width=\"5\">&nbsp;</td><td class=\"marketInfo_GreyText\">This meeting is on Attheraces</td></tr></table><br><a href=\"http://form.timeform.betfair.com/\" target=\"_blank\"><img src=\" http://content-cache.betfair.com/images/en_GB/mr_fr.gif\" title=”Form/ Results” border=\"0\"></a>\n<br><br><b>MARKET INFORMATION</b><br><br>For further information please see <a href=http://content.betfair.com/aboutus/content.asp?sWhichKey=Rules%20and%20Regulations#un defined.do style=color:0163ad; text-decoration: underline; target=_blank>Rules & Regs.</a><br><br>Who will finish <FONT COLOR = \"RED\"> 1st or 2nd </FONT>in this race? NON RUNNERS DO NOT CHANGE THE PLACE TERMS. Should the number of runners be equal to or less than the number of places available as set out above in these rules all bets will be void. Betfair Non-Runner Rule applies. <b>This market will turn IN PLAY at the off with unmatched bets (with the exception of bets for which the \"keep\" option has been selected) cancelled. Betting will be suspended at the end of the race.</b> This market will initially be settled on a First Past the Post basis. However we will re-settle all bets should the official result at the time of the \"weigh-in\" announcement differ from any initial settlement. BETS ARE PLACED ON A NAMED HORSE. Dead Heat rules apply.<br><br>Customers should be aware that:<ol><b><li>transmissions described as \"live\" by some broadcasters may actually be delayed;</li><li>the extent of any such delay may vary, depending on the set-up through which they are receiving pictures or data; and</li></b><li>information (such as jockey silks, saddlecloth numbers etc) is provided \"as is\" and is for guidance only. Betfair does not guarantee the accuracy of this information and use of it to place bets is entirely at your own risk.</li></ol><br>","rulesHasDate":true,"clarifications":"NR: (UKT) <br> 1. Above Board (31.4%,15:52), <br> 4. Ghost River (52.2%,17:05)"}},{"marketId":"1.127719386","market Name":"2 TBP","isMarketDataDelayed":false,"description":{"p ersistenceEnabled":true,"bspMarket":false,"marketT ime":"2016-10-19T16:50:00Z","suspendTime":"2016-10-19T16:50:00Z","bettingType":"ODDS","turnInPlayEnab led":true,"marketType":"OTHER_PLACE","regulator":" GIBRALTAR REGULATOR","marketBaseRate":5.0,"discountAllowed": true,"wallet":"UK wallet","rules":"<table cellborder=\"0\" width=\"100%\"><tr><td><img src=\"http://content-cache.betfair.com/images/en_GB/homepage/RUKlogo.gif\" border=\"0\"></td><td width=\"5\">&nbsp;</td><td class=\"marketInfo_GreyText\">This meeting is on RACING UK</td></tr></table><br><a href=\"http://form.timeform.betfair.com/\" target=\"_blank\"><img src=\" http://content-cache.betfair.com/images/en_GB/mr_fr.gif\" title=”Form/ Results” border=\"0\"></a>\n<br><br><b>MARKET INFORMATION</b><br><br>For further information please see <a href=http://content.betfair.com/aboutus/content.asp?sWhichKey=Rules%20and%20Regulations#un defined.do style=color:0163ad; text-decoration: underline; target=_blank>Rules & Regs.</a><br><br>Who will finish <FONT COLOR = \"RED\">1st or 2nd </FONT>in this race? NON RUNNERS DO NOT CHANGE THE PLACE TERMS. Should the number of runners be equal to or less than the number of places available as set out above in these rules all bets will be void. Betfair Non-Runner Rule applies. <b>This market will turn IN PLAY at the off with unmatched bets (with the exception of bets for which the \"keep\" option has been selected) cancelled. Betting will be suspended at the end of the race.</b> This market will initially be settled on a First Past the Post basis. However we will re-settle all bets should the official result at the time of the \"weigh-in\" announcement differ from any initial settlement. BETS ARE PLACED ON A NAMED HORSE. Dead Heat rules apply.<br><br>Customers should be aware that:<ol><b><li>transmissions described as \"live\" by some broadcasters may actually be delayed;</li><li>the extent of any such delay may vary, depending on the set-up through which they are receiving pictures or data; and</li></b><li>information (such as jockey silks, saddlecloth numbers etc) is provided \"as is\" and is for guidance only. Betfair does not guarantee the accuracy of this information and use of it to place bets is entirely at your own risk.</li></ol><br>","rulesHasDate":true}},{"marketId":"1.1277 19384","marketName":"4 TBP","isMarketDataDelayed":false,"description":{"p ersistenceEnabled":true,"bspMarket":false,"marketT ime":"2016-10-19T16:50:00Z","suspendTime":"2016-10-19T16:50:00Z","bettingType":"ODDS","turnInPlayEnab led":true,"marketType":"OTHER_PLACE","regulator":" GIBRALTAR REGULATOR","marketBaseRate":5.0,"discountAllowed": true,"wallet":"UK wallet","rules":"<table cellborder=\"0\" width=\"100%\"><tr><td><img src=\"http://content-cache.betfair.com/images/en_GB/homepage/RUKlogo.gif\" border=\"0\"></td><td width=\"5\">&nbsp;</td><td class=\"marketInfo_GreyText\">This meeting is on RACING UK</td></tr></table><br><a href=\"http://form.timeform.betfair.com/\" target=\"_blank\"><img src=\" http://content-cache.betfair.com/images/en_GB/mr_fr.gif\" title=”Form/ Results” border=\"0\"></a>\n<br><br><b>MARKET INFORMATION</b><br><br>For further information please see <a href=http://content.betfair.com/aboutus/content.asp?sWhichKey=Rules%20and%20Regulations#un defined.do style=color:0163ad; text-decoration: underline; target=_blank>Rules & Regs.</a><br><br>Who will finish <FONT COLOR = \"RED\">1st, 2nd, 3rd or 4th </FONT>in this race? NON RUNNERS DO NOT CHANGE THE PLACE TERMS. Should the number of runners be equal to or less than the number of places available as set out above in these rules all bets will be void. Betfair Non-Runner Rule applies. <b>This market will turn IN PLAY at the off with unmatched bets (with the exception of bets for which the \"keep\" option has been selected) cancelled. Betting will be suspended at the end of the race.</b> This market will initially be settled on a First Past the Post basis. However we will re-settle all bets should the official result at the time of the \"weigh-in\" announcement differ from any initial settlement. BETS ARE PLACED ON A NAMED HORSE. Dead Heat rules apply.<br><br>Customers should be aware that:<ol><b><li>transmissions described as \"live\" by some broadcasters may actually be delayed;</li><li>the extent of any such delay may vary, depending on the set-up through which they are receiving pictures or data; and information (such as jockey silks, saddlecloth numbers etc) is provided \"as is\" and is for guidance only. Betfair does not guarantee the accuracy of this information and use of it to place bets is entirely at your own risk.</li></ol><br>","rulesHasDate":true}}

              So I am going to need a bit of parsing to get the right market I need and any other info.

              Thanks

              Rob

              Comment

              • LiamP
                Junior Member
                • Oct 2015
                • 284

                #8
                You asked for MARKET_DESCRIPTION and thats what was returned, what are you expecting?

                Comment

                • jabe
                  Senior Member
                  • Dec 2014
                  • 705

                  #9
                  If you're using Visual Studio you don't need to do parsing. There are a couple of add-ins which will convert the JSON string into an object (and vice-versa).

                  In VS, under Project, there should be an option called Manage NuGet Packages. These are all third party packages. The one that appears to be used most commonly on here is NewtonSoftJson. If you install that, you can set up objects that will receive a parsed JSON string into variables that you can instantly access, and the whole parsing thing takes one line of code.

                  This is the kind of code you can use:

                  Code:
                  Dim jsonBookObject as MarketBook = Newtonsoft.Json.JsonConvert.DeserializeObject(Of MarketBook)(ListMarketBookResponse)
                  If you search the forum for JsonConvert, you'll find more examples.

                  I'm using something different; it's doing the job for me, but I don't know if it's better or worse.

                  Code:
                  Dim jss As New JavaScriptSerializer() 'JSON serialiser 
                                  Dim BetfairCompetitions As ClassListCompetitionResult = jss.Deserialize(Of ClassListCompetitionResult)(API_listCompetitions())
                  What I did early in my project was to go through all the documentation and create classes for everything - the data returned from calls, etc, etc. Important to be aware that part of the data can be returned as, basically, an array, so that while I might have a class like this:

                  Code:
                  Public Class ClassEventType
                      ' Event Type
                      Public id As String         ' id
                      Public name As String       ' name
                  End Class
                  when I get a string back, there will be many of these, so the converted string needs to end up in something like this:

                  Code:
                  Public Class ClassEventTypeResult
                      ' EventType Result
                      Public eventType As ClassEventType      ' The ID identifying the Event Type
                      Public marketCount As Integer           ' Count of markets associated with this eventType
                  End Class
                  The process of creating all these classes was a great help in familiarising myself with the data and where the data appears.

                  I'm sure much of the above is blindingly obvious, but I hope it's of use to you and others who will come across it later.

                  Comment

                  • jabe
                    Senior Member
                    • Dec 2014
                    • 705

                    #10
                    It looks like much of your data is the MarketDescription. It's up to you whether it's necessary. On the plus side, you only call listMarketCatalogue once for an event.

                    I'm using this for the marketProjection parameter:

                    Code:
                    ""marketProjection"":[""RUNNER_DESCRIPTION"",""MARKET_START_TIME"", ""COMPETITION""]"
                    You might need more or less than I do.

                    Comment

                    • monkeymagix
                      Junior Member
                      • Jul 2010
                      • 105

                      #11
                      Thanks

                      Hi

                      Yes I am using C# .NET and NewtonSoft.JSON and I have classes for all the objects that come back as well e.g ClearedOrderSummary.cs, ClearedOrderSummaryReport.cs, CancelInstructions.cs, CancelInstructionsReport.cs and so on.

                      I wasn't saying I was expecting less data, just that compared to other markets WIN/PLACE there is a lot of extra data such as all the information under RULES.

                      I have all the races, dates, courses and when I get the markets (place/win) I match them up, saving the marketID, SelectionID against runners etc and for the extra place market I just want to do the same e.g collect any markets where there is an extra place either by using marketName e.g 4 TBP, 5 TBP or NoOfWinners etc.

                      If I know that the place market has a noOfWinners of 4 then the extra place market I am looking for is the 5TBP, 2 then 3TBP and so on. As long as the no of runners doesn't equal the number of winners of course.

                      The thing is I don't want to have to rework the whole system (it took so long to rewrite and iron out bugs with my own cash from the SOAP system to API_ING) but instead of having separate 3TBP, 4TBP, 5TBP (I've seen 10 before on Royal Ascot), markets stored as individual records in the DB. I just want to get the following data and save it against the standard place market for that race.

                      -Extra Place MarketID (so I can get prices)
                      -Extra Places (so as long as it's not noOfWinners should be the standard place no + 1) - don't want to go up them all.
                      -Last Extra Place Price (from my general method where a marketID is all that is needed etc)

                      So once I have run my job to link my race card data up with the Betfair market data (prices, marketId, selectionId, silks etc), I want to run a job to get the extra place markets using (time/course/name to sync) and then update the related place market with those 3 pieces of information.

                      If I DO need to normalise more in future I will but this is a quick test job just to test some place systems so see if they would perform better with the extra place markets.

                      I wanted to just run some reports on possible systems but getting the real last exchange back price is key as I am currently using a UDF which estimates the price from the place price, the no of runners, place winners and so on.

                      For example from last night these were the actual Runners, Place Prices, Extra Place Prices and my Guesstimate Place Prices

                      Golden Wedding (4 TBP)
                      Place = 1.99
                      extra = 1.74 - guess = 1.58

                      Up In Lights (4 TBP)
                      Place = 2.0
                      extra = 1.47 - guess = 1.60

                      Moorstone (4 TBP)
                      Place = 1.59
                      extra = 1.36 - guess = 1.30

                      Ghayyar (4 TBP)
                      Place = 1.83
                      extra = 1.43 - guess = 1.49

                      Some are not too far away, others are and an accurate price would be better.

                      So getting the extra price is key for any reports on any systems that may work.

                      If there is a quicker way to get the extra place market (the one with 1 place above the normal place market) and the marketID then that would be great.

                      Thanks for your help.

                      Comment

                      Working...
                      X