-
Bets
Hello, I am still using trial version, I have money on my Betfair account and would like to try to stake. However, in practice mode I am able to stake but not in live mode. Account is connected. In left bottom corner shows my cash balance
5.1.2026 9:05:39
-
Bfexplorer Latest Release
Version 4.10.1227
The cumulative updates for net 10. Install from Bfexplorer Preview version.
Version 4.08.1010
The cumulative updates. Install from Bfexplorer Preview version.
Version 3.34.0704
WeightOfMoneyData provider for ...
27.12.2025 20:36:17
-
8 Essential Data Contexts Available for Betfair Market Analysis
Just documented the comprehensive data contexts available in our Betfair trading system. Here's what we can analyze:
🏇 OLBG Racing Tips - Professional tipster confidence ratings and analysis📈 Custom Performance Metrics - In-play ratings, trends, and win ...
26.7.2025 19:03:01
Betfair Bot
You cannot use console script code in your bot trigger code. It was created in other context and for other purpose.
If you would read error message in Visual Studio or Visual Code (I do not know which IDE you are using.), then errors would suggest problems in your code.
Please, just read what IDE suggests.
peteresgate@outlook.com
Please see my attempt at Part 4. I added lines 75, 76, and 178 to 184.
I basically wanted to have parameter maxLossesInRow and if the number of losses in row is less or equal to this parameter, then continue to execute bot, or else exit. Unfortunately it has some errors that hopefully can be corrected thanks?
https://github.com/PeterEsgate/BfexplorerTestBots/blob/master/HorseRacingBotTrigger2
Betfair Bot
We have got your strategy for horse racing programmed as bot trigger:
Bot Trigger Building Part 2
Bot trigger code is executed by bot called: “Execute Trigger Bot”, and trigger executes the action bot, so bot strategy that places bets or starts trading session. In my test I used: “Lay trade 4 ticks”. I named this strategy: “Horse Racing Bot Trigger”.
So you have got your strategy that can be executed manually from My Strategies /Bots to Execute, on the market you open in Bet Event view, just selecting your strategy “Horse Racing Bot Trigger” and clicking on the Execute toolbar button.
If you want to execute your strategy automatically on all races, then you can use “Bot Executor” tool.
Bfexplorer app offer more general purpose bot strategies, one them is bot strategy named: “Execute Till Target Profit”, and that is what you need, to stop the execution of your strategy when it is executed automatically, when target profit or loss is reached. Again, the bot uses action bot to be executed, set by parameter BotName, in our case we want to execute: “Horse Racing Bot Trigger” and that is all. Just name your strategy (I named it: “My Horse Racing Strategy”) and execute it at set time relative to the race time (market start time).
When programming your strategy using Bfexplorer BOT SDK, you have got access to all bfexplorer generated data with public interface, so you can access your betting results, or create your own version of “Execute Till Target Profit”.
For instance Bfexplorer Console, the tool executing a script code to automate bfexplorer UI interaction, or querying data. The similar script can be programmed to read your strategy results and process data.
For instance here is script opening Match Odds and Over/Under 2.5 Goals markets that met required parameters:
SearchFootballMarkets.fsx
peteresgate@outlook.com
That's great to hear Stefan. Bfexplorer truly is the best- no other software can do what Bfexplorer can. For my non programming brain I wonder "how", but with your knowledge you always "know". I very much look forward to the final solution :)
Betfair Bot
With anything you do, you need at least base understanding of what you do.
If you go with Excel automation to place your bets on betfair, then you need to learn how to use Excel, formulas, and of course VBA programming, because you cannot make running your strategy just by using formulas, or bet angel rules.
To part 4 of your tutorial, without saying anything about coding, just use common sense to understand what should be done.
If your strategy depends on previous results, then of course something in bfexplorer should be able to retrieve your bet results, and process this information. Your bot trigger must be able to work with such information.
peteresgate@outlook.com
Thanks Stefan. I do have more understanding now, but have a long long way to go. Thanks for your help. With Part 4 in which the bot "counts" it's losses before shutting down, is this possible? I question it because I see in the console bot started and bot ended, so I don't understand the mechanism of how it stores the losses if the bot ends.
Betfair Bot
Peter, it is up to you what homework you do, or what different bot trigger you could offer for other readers, as your bot trigger can evaluate different selection values, and as well evaluation process could be programmed by many different ways.
I actually separated storing of selection trigger values to different type/class, so code is prepared for different scenarios.
If you really are able to read the trigger bot code you have to see it, so you can describe those different scenarios to others, but that is up to you.
I asked for “homework” because you reported problems with compiling bot trigger code, what means you did not understand what were you doing, I hope you do now.
peteresgate@outlook.com
'F' grade for me this time. Thanks for the solution to Part 2 :) What homework would you like me to submit before the final reveal in Part 4? - I hope to redeem myself
Betfair Bot
Ok, it seems you managed to understand the concept of F# programming.
On the other hand I see you have actually no understanding of betting terminology, as book value is not calculated as you did in your code. The book value in betting is sum of selection’s probabilities.
Here is my bot trigger code for part 2: HorseRacingBotTrigger2.fs
peteresgate@outlook.com
I am not a programmer, but this is the part 1 with the Last Price Traded added to output
https://github.com/PeterEsgate/BfexplorerTestBots/blob/master/HorseRacingBotTrigger1-1
I am looking forward to viewing Stefan's code with Part 2 combined into Part 1 :)
Betfair Bot
Here is my first test that actually triggered some trading session. When testing it is really important how you set all trigger parameters, for testing it is good to set them without limits, so not parameters are tested but code
I set the fallowing parameters as default ones:
allowedSelectionIndexes: 1,2,3,4,5,6
timeToStart: 40.0
favouritesPrice: 50.0
When the race started, bot trigger saved position of allowed horses. When timeToStart expired, all allowed horses were evaluated again
positionDifference <- startPosition – position
So trigger selected Bianca Minola as nominated selection on which Bot Trigger started lay/back trading session for 4 ticks of profit.
peteresgate@outlook.com
Sorry about the formatting. I copied and pasted the working code and it looked good on my side with the correct indentations etc,, but the website changed it to the posted result that is there now. I'll look at setting up GitHub and reposting the link to the code so others who are following/learning can view and get it.
Betfair Bot
Peter, I do not want to patronize you, but I have got very simple question?
Are you satisfied with what you did?
Why did I ask?
Because any written source code must be formatted to be readable by other programmers.
Yes, some programming languages that use for instance { } to separate block of code, could be stripped to one line and compiler successfully build such code, but not F# where code block must be formatted by text/code indentation and you cannot used tabs:
https://docs.microsoft.com/en-us/dotnet/fsharp/style-guide/formatting
I mentioned that, because during weekend you posted video showing you edited bot trigger in Notepad text editor. So anyone who would like to use your code you posted in your comment, must copy and paste your text, reformat it correctly, and then will find out that your code does not do what you claim you did.
So you waste maybe 10 minutes or more, to someone who wants to test your code. English is foreign language for me so is very hard for me to find politically correct words for your behavior.
Please, install either Visual Code, like I show here:
Betfair Bot Programming for Non-Developers
Or Visual Studio Community version:
Bfexplorer - Betfair BOT SDK
Both IDE (Integrated Developer Environment) applications are free, unlike Microsoft Excel other betfair app use, where you must buy licenses of Microsoft Excel. Using Bfexplorer BOT SDK all applications or tools helping you to create bot trigger are for free.
Why is using right programs/applications important when developing/writing code?
Because like text editors with spellchecking, such IDE checks your code when writing, so any mistake in misspelling anything in code is reported. Visual Studio, or Visual Studio code offer you as well, so called IntelliSense/IntelliCode technology when writing code, so helping you to write the code:
https://visualstudio.microsoft.com/services/intellicode/
And finally why did I ask you to make some changes in the code?
To force you learn something, because bot trigger code in other parts of our tutorial will be more difficult.
I know you are not software developer, but in part 1 the source code is really readable even by non programmer, it contains plain English words like if, then, else, match, let, try, with, and some words you would maybe need to think about, like open, type, interface, member and map
https://en.wikipedia.org/wiki/Map_(higher-order_function)
Please, when you want to use source code, and want to share it with others, do them favor and share it on http://github.com through Github Gist, like I do:
https://gist.github.com/StefanBelo
Again, you can register on github.com for free. Or just use any of other code sharing services on the Internet:
https://www.google.com/search?q=code+sharing+service&oq=code+sharing+service
peteresgate@outlook.com
Betfair Bot
Ok, but you did not specify that you want to check horse's positions in two different times. My first implementation was that bot waits till market is turned at in-play, then saves information about all allowed selections, so horse's positions is saved as well.
At set time in race, bot checks your conditions, so favourites must be traded at that moment of checking under set price/odds.
Then allowed selections are sorted by position change difference, so biggest position change is the first one, if this selection is not among the first three favourites, it is nominated as the selection your strategy will be executed on.
The bot trigger again similar like I explained to you in the part 3, does not have to know anything about your criteria for entry point, so if you allow starting lay/back trading session only when the selection/horse is traded from 10.0 to 20.0, then you can simply set that to Entry Criteria for this lay trading bot.
Now think a little bit. I hope you already know that Entry Criteria could be evaluated just once, or could be evaluated till all set Entry Criteria are met. This feature gives you two different options for your bot placing a lay bet.
If you think more, then you will find that bfexplorer offers more bots placing a bet, or starting trading session, namely:
Place Bet
Be the First in Queue
Fill or Kill
Place Bet and Close Selection Bet Position
Scratch Trading
This gives you really big flexibility for different ways your bet is placed on the market selection, and closes your bet position for loss when needed.
Of course not all of above bot strategies to place a bet are suitable for in-play markets where odds changes so rapidly as on the horse racing, therefore I would suggest to use:
Place Bet and Close Selection Bet Position
But of course you can test them all, or other combinations for instance:
Place Bet, and Trailing Stop Loss
What is very good news for you is that bot trigger code does not have to implement anything to place a bet and manage its status, so you will get simpler trigger code.
I really cannot imagine how people could manage such strategies just in Excel spreadsheets, so traders using Bet Angel, Cymatic or Gruss software. I think they cannot run such strategies, am I right?
Your tutorial in the part 1 is ready, I will post bot trigger code for the part 2, but first test your bot trigger for part 1, and as the simple coding exercise, change the bot trigger code to report not only horse name, but the last traded price as well.
Here is the hint:
https://gist.github.com/StefanBelo/a85ee8b9959b841ea423eade056cc762
peteresgate@outlook.com
That is a great explanation :)
Thanks for clearing that up for me.
peteresgate@outlook.com
After for example 20 seconds in play, I would like to check the position of the horse (using it's odds). When (if) 2 horses achieve odds less then x ( 2 for example), then re-check the position of our selection and compare it to the position it was at at 20 seconds. So if at 20 seconds, it is at position 2 and then when trigger is 2 horses are at odds below 2, it re-checks the selection and sees that it is at position 5, the selection has dropped in position.
Betfair Bot
How is evaluated “…our selection has dropped in position...”?
Betfair Bot
Peter, you do not need to program a trigger or anything for this feature, as your lay trade can be started by bot strategy: “Place Bet and Close Selection Bet Position”, and set your Profit/Loss target as required. So in your case you want to close your bet position, so by your words:
“… so that if it looks like my trade is not going good, I'd like to limit my losses …”
You can set Loss parameter, either by (ProfitLossType parameter) Ticks, Percentage, or exact Money value. As the Profit parameter is required one, (Loss is not, when you set it to 0, your position is not closed for Loss) you must set it to unrealistic value.
If you want to hedge your bet position, leave HedgingEnabled checked (set to True). When hedge the stake is calculated, I hope that you understand that, other software vendors call this procedure “green up”. Well, in this case I really do not understand your English, as no one is saying about “red up” ;-)
Betfair Bot
Yes, one of your requirements for horse racing strategy is to execute only if allowed number of horses will run in the race.
This can be set in Entry Criteria: NumberOfSelections and for operator you can apply one of 5 relevant options, so this could be removed from the bot trigger code.
Here is my bot trigger code:
https://gist.github.com/StefanBelo/71b025e6a4c687fe98f99a258ddb6cb5
It is 67 lines of code but actual code starts from line 19. The main bot trigger code is executed by Execute function, so algorithm for this bot code is on 11 lines.
The bot trigger code contains one general functions getActiveSelections (lines 35-36) as for some markets like horse racing, greyhounds, golf and so on, selections could be withdraw, we must use this function to get only active selections, in our case horses.
One of requirements is to apply any further evaluation only on specific selections defined by order index in which betfair displays market selections. Peter named that “starting lanes”.
In bot trigger, bfexplorer inputs any data to bot trigger through object botTriggerParameters, so any data entered through parameter: TriggerParameters.
On the line 18 we retrieved such parameter named: AllowedSelectionIndexes. Keep in mind that you must enter exactly this name in the parameter list, it is case sensitive. When no parameter is entered, the bot trigger code implements default value, it is set to: "1,2,3,10,11,12"
So horses order indexes separated by comma. As the indexes are enter as text value, the helper method “toIndexes” transforms this text to list of integers.
The function “getMySelectionsData” (lines 38 – 48) checks whether bot trigger has valid indexes for evaluated race, and returns list of selections, and number of selections, otherwise returns nothing, to be exact in F# programming terms it returns Option.None value.
And that is all for our first bot trigger, as mentioned before the code is executed by Execute function, and code execution can be described:
If it is horse racing market and we can get my selections data, then it is displayed message: \nMy selections: name 1, name 2\nNumber of runners: 15”.
If it is not horse racing market it is displayed message: "You can run this bot on a horse racing market only!".
If there is any error in getting my selections data, then error message is displayed:
And bot trigger execution is ended.