Write your own preflop charts


General

The preflop chart system is based on XML files, which could be edited by a simple text editor like notepad. However, I suggest a more powerful editor like notepad++, ultraedit or a full-featured XML editor.
The files are located in the charts folder within your LongHUD folder.

I suggest to leave the original charts as they are and instead copy them to a new file name.
Important: LongHUD references the charts using the name within the XML file (second line, i.e.  name="ps.de FL FR chart") and NOT using the file name. Having two different XML files with the same name causes unpredictable behavior. Always change the name within the chart, when copying a chart file!

Each chart has a type of game.

How it works

The system is rule - based.
Each rule has matching - attributes and action attributes.

After a preflop - player action on a table occurred, LongHUD goes through the rules beginning from the first and looks for a rule, whose matching-attributes meets the current situation. When LongHUD finds a matching rule, the action attributes are shown as the HUD on your poker table.

Be carefully with the order of the rules. If an early rule applies, later - possibly matching - rules will be ignored.

Matching attributes:

Attribute name Description List
range Your holecards, i.e. AKs; AKo yes
situation
The current situation, i.e. 1limper yes
myPosition Hero position on the table, i.e. button yes
potopenerpos
The position of the first player, who called or raised yes
openraiser The position of the player, who open-raised (no limpers or raisers before) yes
firstraiserpos The position of the player, who made the first raise (possible limpers before) yes
reraiserpos The position of the player, who made a reraise yes
minStack Minimal size of hero's stack before the blinds were posted no
maxStack Maximal size of hero's stack before the blinds were posted no
minEffStack Minimal effective size of hero's stack before the blinds were posted no
maxEffStack Maximal effective size of hero's stack before the blinds were posted no
blindstructure Blindstructure ratio yes
anzplayers Count of players which where dealt cards preflop. (Since v0.9.39) yes

Attribues with "yes" in the List column allow multiple values limited by a semicolon.

Action attributes:

Attribute name Description
action Hero's possible actions: raise, call, fold, check, ...
comment View this free text in the HUD
oneRaiseBehind
Hero's action, if a player raises after hero has acted
twoRaisesBehind Hero's action, if two players raise and re - raise after hero has acted
threeRaisesBehind Hero action's, if three players raise/re-raise/re-re-raise after hero has acted



The files follow the following form:

<?xml version="1.0" encoding="ISO-8859-1"?>
<SHC gametype="gametype" name="name">
 <!-- comment -->
<Hand range="..." myPosition="..." situation="......  action="raise" oneRaiseBehind="raise" twoRaisesBehind="fold" />
<Hand range="...myPosition="...situation="......  action="calloneRaiseBehind="call
twoRaisesBehind="fold" />
<
Hand range="...myPosition="...situation="...... action="foldoneRaiseBehind="foldtwoRaisesBehind="fold" />
...
</SHC>


The details


Range

Specifies which of Hero's holecards should be matched with the rule.

Cards are named after the first English letter or it's corresponding digit:
Card Name Card Name
Ace A 7 7
King K 6 6
Queen Q 5 5
Jack J 4 4
Ten T 3 3
9 9 2 2
8 8

So a pair of Aces is specified as AA
Ace - Nine is specified as A9

Append the character o for offsuited Hands, and s for suited. Be careful: Offsuited is the default value, so only AK means offsuited Ace-Kings, and not suited Ace-Kings. Use AKo; AKs to specify both. Since I am probably going to change this in future, I recommend to always explicitly specify suited or offsuited.

QQ+ means all Pocketpairs Queens or better: AA; KK; QQ
99-JJ means all poket pairs between 99 and JJ: 99; TT; JJ
AJs+ means all suited Aces with a Jack or better: AJs; AQs; AKs
A6s-A9s means all suited Aces between A6s and A9s: A6; A7; A8; A9
54o-T9o means all offsuited connectors between 54o and T9o: 54o; 65o; 76; 87o; 98o; T9o
86s-T8s means all suited two-gappers: 86s; 97s; T8s
all means all possible Hands.
xys means all suited Hands. (Since v0.9.39)

Illegal:
T9o-54o: for ranges fromHand - toHand always specify the lower hand first (54o-T9o)
54o-T9s: suitness mix
54o-J9s: gap mix
AAs: suited pair
...

Situation

Specifies whether the preflop situation before you first action matches the rule.
Possible values:


myPosition

Hero's position on the table.

On a full ring Table (10 Player) LongHUD names player positions according to the following table:
Position Name Description Position of the Button
BU Button /  Dealer (late) 0
CO Cutoff  (late) 1
MP3 Middle Position 3 (middle) 2
MP2 Middle Position 2 (middle) 3
MP1 Middle Position 1 (middle) 4
UTG2 Under the Gun 2 (early) 5
UTG1 Under the Gun 1 (early) 6
UTG Under the Gun  (early) 7
BB Big Blind (blinds) (number of players minus two)
SB Small blind (blinds) (number of players minus one)

On tables with less players the first early positions drops out. Thus on a 6-max table there are no Under the Gun positions and only two middle positions instead of three.

Possible values for the position of a player:

potopenerpos

The position of the first player, who calls or raises.
For possible values see myPosition

openraiser

The position of the player, who open-raises. "open" means, that there must not be any limpers or raisers before this position.
For possible values see myPosition
If you specify openraiser, situation should contain at least one of the 1raiser* attributes, otherwise this rule will never apply to a hand.

firstraiserpos

The position of the player, who did the first raise.
For possible values see myPosition
If you specify firstraiserpos, situation should contain at least one of the 1raiser* attributes, otherwise this rule will never apply to a hand.

reraiserpos

The position of the player, who re-raised after a raiser.
For possible values see myPosition
If you specify reraiserpos, situation should contain the 2raiser attributes, otherwise this rule will never apply to a hand.

minStack

The minimum size of hero's stack before the blinds are posted.
Possible values are 0.01 to 10000000 followed by a modifier,
Examples:
24BB
3MM

maxStack

The maximum size of hero's stack before the blinds are posted.
For possible values see minStack

minEffStack

The minimum effective size of hero's stack.
Example: Hero has 40 Big blinds, but the biggest stack of all players who hav'nt folded yet, is 5 Big Blinds. So the Hero's effective Stack size is 5 Big Blinds.
For possible values see minStack

maxEffStack

The maximum effective size of heroes stack.
Example: Hero has 40 Big blinds, but the biggest stack of all players who hav'nt folded yet, is 5 Big Blinds. So the Hero's effective Stack size is 5 Big
For possible values see minStack

blindstructure

Describes the ratio small blind to big blind. This could be useful for small blind complete and small-bind steal rules.
Possible Values:
1-2
1-3
2-3
all

action

Hero's first action, if the rules applies.
Possible Values:

Value Short Value Description
Fold F Fold
Check X Check or Fold
Call C Call, no matter how many players have already raised or called.
Call1 C1 Call, as long as at least one player hasn't folded.
Call2 C2 Call, as long as at least two player haven't folded.
Call3 C3 Call, as long as at least three player haven't folded.
Call4 C4 Call, as long as at least four player haven't folded.
Call5 C5 Call, as long as at least five player haven't folded.
Raise R Raise, no matter how many players have already raised or called.
Raise0 R0 Raise, as long as nobody has raised or called (first in), otherwise call.
Raise0- R0- Raise, as long as nobody has raised or called (first in), otherwise fold.
Raise1 R1 Raise, as long as nobody has raised or called (first in), or if all but one player have folded(isolation raise), otherwise call.
Raise1- R1- Raise, as long as nobody has raised or called (first in), or if all but one player have folded(isolation raise), otherwise fold.
Raise2 R2 Raise, as long as nobody has raised or called (first in), or if all but two players have folded(isolation raise), otherwise call.
Raise2- R2- Raise, as long as nobody has raised or called (first in), or if all but two players have folded(isolation raise), otherwise fold.
Raise3 R3 Raise, as long as nobody has raised or called (first in), or if all but three players have folded(isolation raise), otherwise call.
Raise3- R3- Raise, as long as nobody has raised or called (first in), or if all but three players have folded(isolation raise), otherwise fold.
Raise4 R4 Raise, as long as nobody has raised or called (first in), or if all but four players have folded(isolation raise), otherwise call.
Raise4- R4- Raise, as long as nobody has raised or called (first in), or if all but four players have folded(isolation raise), otherwise fold.
R0-C2 R0-C2 Raise, as long as nobody has raised or called (first in), call if at least two players have called or raised, otherwise fold.
R0-C3 R0-C3 Raise, as long as nobody has raised or called (first in), call if at least three players have called or raised, otherwise fold.
R0-C4 R0-C4 Raise, as long as nobody has raised or called (first in), call if at least four players have called or raised, otherwise fold.
R1-C3 R1-C3 Raise, as long as nobody has raised or called (first in), or if all but one player have folded(isolation raise). Call, if at least three players have already raised or called, otherwise fold.

comment

Could be any text you like (without ")
I.e. "Fold against most players, but steal against weak tight blinds."

oneRaiseBehind

Hero's action, if a player raises after hero has acted.

Attribute name Description
raise Raise
call Call
fold
Fold
check Check or Fold

twoRaisesBehind

Hero action, if two players raise and re - raise after hero has acted
For possible values see oneRaiseBehind

threeRaisesBehind

Hero action, if three players raise/re-raise/re-re-raise after hero has acted
For possible values see oneRaiseBehind
 

anzplayers

New since v0.9.39
This options allows you to create different charts for differen table sizes in one chart.
Possible values are any number between 2 and 10, lists are possible.
To define a rule for 7,8,9 or 10 players, you may use anzplayers="7;8;9;10"  

Debugging Charts

LongHUD is able to write information for each hand of each chart to it's log file.
To enable this log, change the value of logCharts2File in LongHUD.xml to 2 (which will case a 1-2 ratio for logging)
With the value of logChartsStack you can control stack-dependent rules. The value is interpreted as big blinds, default is 50.
I suggest to have a look into this file, if you want to create your own charts.
Example for a 10BB stack  with 1-3 blind structure:
<settings>
      ...
       <logCharts2File value="3" />
       <logChartsStack value="10" />
</settings>



If you have problems, feel free to contact me.