NumInGroup_t xsi:type usage in FixATDL

Hi there, I was just looking to see if anyone in this community has ever used the NumInGroup_t xsi type in any of their ATDL files?

If yes, how was it setup in the ATDL file?

Does it need to be defined in the strategy’s layout section? and how was it defined?

From a FIXATDL perspective we have a strategy where we’ve been requested to add following 2 parameters:
:
NoLiqudityGroups (tag 7000) set as xsi:type= NumInGroup_t
LiquidityGroup.(tag 7001) which will either be defined as either xsi:type=MultipleCharValue_t or MultipleStringValue_t with 4 potential options: Internal / External / Primary / ALL

The desired effect would be for tag 7000 = the number of selected venues from the LiquidityGroup parameter.
So in the case where a user selects 2 of the options from LiquidityGroup parameter (Internal and External for example)

The desired FIX message should look something like this:
7000=2 | 7001= INTERNAL | EXTERNAL

Is this possible?

Thank you in advance for your feedback.

This is not the way NumInGroup_t is designed to work. NumInGroup_T is only to be combined with tags 555 or 68:

RepeatingGroup/@name string N FIX Field name of the repeating group. Must refer to a FIX
field of NumInGroup type. Valid values are: “TotNoOrders”
(when NewOrder-List messages are expected), “NoLegs”
(when NewOrder-Multileg messages are expected). This field
should be omitted when NewOrder-Single message are
expected.

You may wish to consider using a simple Int_t for the NoLiquidityGroup field and a MultipleStringValue_t for the LiquidityGroup and then check within your OMS that the number of liquity groups in tag 7001 matches the number in tag 7000.

	<Parameter name="NoLiquidityGroups" xsi:type="Int_t" fixTag="7000" maxValue="4" minValue="1" use="required"/>
	<Parameter name="LiquidityGroup" xsi:type="MultipleStringValue_t" fixTag="7001" use="required">
		<EnumPair enumID="e_LG1" wireValue="LG1"/>
		<EnumPair enumID="e_LG2" wireValue="LG2"/>
		<EnumPair enumID="e_LG3" wireValue="LG3"/>
		<EnumPair enumID="e_LG4" wireValue="LG4"/>	
	</Parameter>


<!-- Layout -->
<lay:StrategyLayout>
  <lay:StrategyPanel collapsible="false" orientation="VERTICAL">
			<lay:Control ID="c_NoLiquidityGroups" xsi:type="lay:SingleSpinner_t" label="#Liquidity Groups" parameterRef="NoLiquidityGroups" initValue="1" increment="1"/>
			<lay:Control ID="c_LiquidityGroup" xsi:type="lay:MultiSelectList_t" label="Liquidity Group" parameterRef="LiquidityGroup">
				<lay:ListItem enumID="e_LG1" uiRep="Liquidity Group 1"/>
				<lay:ListItem enumID="e_LG2" uiRep="Liquidity Group 2"/>
				<lay:ListItem enumID="e_LG3" uiRep="Liquidity Group 3"/>
				<lay:ListItem enumID="e_LG4" uiRep="Liquidity Group 4"/>		
			</lay:Control>
  </lay:StrategyPanel>
</lay:StrategyLayout>

FIX output:

99999=STRATEGY_X99998=v1.17000=27001=LG1 LG2

Without meaning to assume the logic behind this but is the NoLiquidityGroups even necessary? Can the user just select the groups on the ticket and then you count them on your side?

Hi Hugo, thanks for the feedback. I was able find a solution.