Skip to content

Instantly share code, notes, and snippets.

@StefanBelo
Created October 13, 2018 10:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save StefanBelo/a85ee8b9959b841ea423eade056cc762 to your computer and use it in GitHub Desktop.
Save StefanBelo/a85ee8b9959b841ea423eade056cc762 to your computer and use it in GitHub Desktop.
// Bfexplorer cannot be held responsible for any losses or damages incurred during the use of this betfair bot.
// It is up to you to determine the level of risk you wish to trade under.
// Do not gamble with money you cannot afford to lose.
module BfexplorerBot
#I @"C:\Program Files (x86)\BeloSoft\Bfexplorer\"
#r "BeloSoft.Data.dll"
#r "BeloSoft.Betfair.API.dll"
#r "BeloSoft.Bfexplorer.Domain.dll"
#r "BeloSoft.Bfexplorer.Trading.dll"
#r "BeloSoft.Bfexplorer.Service.Core.dll"
open BeloSoft.Data
open BeloSoft.Bfexplorer.Domain
open BeloSoft.Bfexplorer.Trading
/// <summary>
/// ShowHorseData
/// </summary>
type ShowHorseData(market : Market, _selection : Selection, _botName : string, _botTriggerParameters : BotTriggerParameters, myBfexplorer : IMyBfexplorer) =
let outputMessage message =
myBfexplorer.BfexplorerService.OutputMessage(message, market.Id)
let isHorseRacingMarket() =
market.MarketInfo.BetEventType.Id = 7 && market.MarketDescription.MarketType = "WIN"
let getOddsDifference (selection1 : Selection, selection2 : Selection) =
selection1.OddsContext.GetOddsDifference(selection1.LastPriceTraded, selection2.LastPriceTraded)
let getBookValue (selections : Selection list) =
selections
|> List.map (fun mySelection -> toPriceProbability mySelection.LastPriceTraded)
|> List.sum
let reportHorsesData() =
let selectionDataToString (mySelection : Selection) = maybe {
let! metaData = mySelection.MetaData
return sprintf "%s: %.2f | %d" mySelection.Name mySelection.LastPriceTraded metaData.OfficialRating
}
let selections =
market.Selections
|> Seq.filter isNotRemovedSelection
|> Seq.sortBy (fun mySelection -> mySelection.LastPriceTraded)
|> Seq.toList
selections
|> List.choose selectionDataToString
|> String.concat "\n"
|> outputMessage
let firstFavourite, secondFavourite = selections.[0], selections.[1]
outputMessage <|
sprintf "Number of runners: %d\nFavourite: %s\nSecond favourite: %s\nOdds difference: %d\nFavourite and second favourite book value: %.2f"
selections.Length
firstFavourite.Name secondFavourite.Name
(getOddsDifference (firstFavourite, secondFavourite))
(getBookValue [ firstFavourite; secondFavourite ])
interface IBotTrigger with
/// <summary>
/// Execute
/// </summary>
member __.Execute() =
if isHorseRacingMarket()
then
reportHorsesData()
TriggerResult.EndExecution
else
TriggerResult.EndExecutionWithMessage "You can execute this bot only on a horse racing market!"
/// <summary>
/// EndExecution
/// </summary>
member __.EndExecution() =
()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment