13/12/2022
1. How to make sure a trigger is only executed if all relevant football markets are present in My Markets?
If your strategy relies on several markets of the same football event, for example, if you lay in Match Odds and back in Correct Score, you don't want your trigger to bet only in one of these markets if the other does not exist in My Markets. For example, Market Locator might not have added it because of low liquidity, or you accidentally deleted it from the list of markets.
In that case, it is best to check that both markets are present by adding the following conditions to your trigger:
Selection's Trigger Expression football1_runner_number is equal to 3
and Selection's Trigger Expression football2_runner_number is equal to 19
You will replace the indexes in the prefix "football" with the ones that correspond to your particular markets.
The conditions essentially check the number of selections in each market. If either of the markets is not there, the respective condition will be false.
By the way, here are a few useful links for cross-market football triggers:
- Football cross-market Green-Up: back in one market and lay in the other
- Dutching on “0 – 0”, “0 – 1” and “0 – 1” in Half Time Score, then backing on Over 2.5 if the first three bets lost
- Connecting several markets of a football match
2. How to send emails from MarketFeeder Pro to your Gmail account
There is a new article explaining how to use MarketFeeder Pro Email Options to send yourself email notifications whenever a trigger is executed, new bets are settled, or new actions are executed within the program.
Read more here:
How to send emails from MarketFeeder Pro to your Gmail account
3. How to sort selections in a trigger condition in descending order
There is a trigger condition that acts as a sorting action for all currently matching selections:
Selection's sorting order is defined by [trigger expression]
Using this condition you can arrange the selections that have met the conditions above the sorting condition in either ascending or descending order. For example, these conditions pick favourites from 2nd to 5th and then sort them by matched volume percentage from the lowest to the highest value:
Selection's Rank is between 2 and 5
and Selection's sorting order is defined by volume
If you now try to read the value of, say, match_1_back_price
, it will give you the back price of the selection with the lowest volume percentage among the 2nd, 3rd, 4th and 5th favourites.
To sort in descending order, i.e. from highest to lowest, you can use one of these methods:
and Selection's sorting order is defined by 10000000 - volume
or
and Selection's sorting order is defined by 1/(volume+0.00009)
Here we add + 0.00009 to prevent division by zero.
4. Basketball historical markets are now available in BFCharts
You can check out last traded price/volume graphs for historical basketball markets in BFCharts if you have a PRO subscription:
5. Why it is best to avoid short user variable names
Sometimes, when I look at trigger files customers send me for a review, I notice that the names of constants and variables are very short, like ba
or pr
:
I always recommend renaming such variables to a longer, unique string of characters. The reason behind this is that MarketFeeder Pro has a vast range of built-in trigger variables that you can use in trigger expressions. If you create a variable whose entire name is part of an in-built variable, you will confuse the variable interpreter, and the expression will not be evaluated correctly. In the example above, the names of all three constants are parts of one or more MF Pro variables:
ba |
back_price |
pr |
back_price, lay_price |
lu |
volume |
Since user variables (the ones you create) take precedence in the parsing order, they will be replaced with their respective values before the program even tries to evaluate its in-built variables. So an expression like this:
IF(volume > 1000, back_price + lay_price, last_traded)
will first be converted into:
IF(vo3.2me > 1000, 4ck_5ice + lay_5ice, last_traded)
This, of course, will not be interpreted correctly by the program.
To avoid this, best to come up with alternative, longer names that are not part of any other constant or variable: