0

According to documentation, I have a group inside group. The group called "NoPositionsGroup" contains 2 groups:

  1. NoPosKeysGroup - contains tags 5026 and 5027
  2. NoPosItemsGroup - contains tags 5029 and 5030

The problem is when I recive a message from Fix server (see Incoming message below) My application response "Reject" message becouse don`t understand that tag 5026 contains inside child group.

I think that I mistaken in my dictionary description, but don`t understand where is the mistake. Please suggest me correct way to describe it. I think that the problem in description nested groups.

My message description inside dictionary is following:

<message name='PositionReport' msgcat='app' msgtype='AP'>
            <field name='PosMaintRptID' required='N'/>
            <field name='PosReqID' required='N'/>
            <field name='PosReqType' required='N'/>
            <field name='SubscriptionRequestType' required='N'/>
            <field name='TotalNumPosReports' required='N'/>
            <field name='UnsolicitedIndicator' required='N'/>
            <field name='PosReqResult' required='N'/>
            <field name='ClearingBusinessDate' required='N'/>
            <field name='SettlSessID' required='N'/>
            <field name='SettlSessSubID' required='N'/>
            <field name='NoPartyIDs' required='N'/>
            <component name='Parties' required='Y'/>
            <field name='NoPositions' required='N'/>
            <group name='NoPositionsGroup' required='N'>
                <field name='PosType' required='N'/>
                <field name='PosUpdateAction' required='N'/>
                <field name='NoPosKeys' required='N'/>
                <group name='NoPosKeysGroup'  required='N'>
                    <field name='PosKeyType' required='N'/>
                    <field name='PosKeyValue' required='N'/>
                </group>
                <field name='NoPosItems' required='N'/>
                <group name='NoPosItemsGroup' required='N'>
                    <field name='PosItemType' required='N'/>
                    <field name='PosItemValue' required='N'/>
                </group>
            </group>
            <field name='StreamPhaseIndicator' required='N'/>
            <field name='Account' required='N'/>
            <field name='AcctIDSource' required='N'/>
            <field name='AccountType' required='N'/>
            <component name='Instrument' required='N'/>
            <field name='Currency' required='N'/>
            <field name='SettlPrice' required='N'/>
            <field name='SettlPriceType' required='N'/>
            <field name='PriorSettlPrice' required='N'/>
            <component name='InstrmtLegGrp' required='N'/>
            <component name='PosUndInstrmtGrp' required='N'/>
            <component name='PositionQty' required='N'/>
            <component name='PositionAmountData' required='N'/>
            <field name='RegistStatus' required='N'/>
            <field name='DeliveryDate' required='N'/>
            <field name='Text' required='N'/>
            <field name='EncodedTextLen' required='N'/>
            <field name='EncodedText' required='N'/>
            <field name='MatchStatus' required='N'/>
            <field name='PriceType' required='N'/>
            <field name='SettlCurrency' required='N'/>
            <field name='MessageEventSource' required='N'/>
        </message>

Inside Fields section I descrided groups and tags:

<field number='20000' name='NoPositionsGroup' type='NUMINGROUP'/>
        <field number='5024' name='PosUpdateAction' type='CHAR'>
            <value enum='0' description="NEW"/>
            <value enum='1' description="CHANGE"/>
            <value enum='2' description="DELETE"/>
        </field>
        <field number='5025' name='NoPosKeys' type='INT'/>
        <field number='20001' name='NoPosKeysGroup' type='NUMINGROUP'/>
        <field number='5026' name='PosKeyType' type="STRING"/>
        <field number='5027' name='PosKeyValue' type='STRING'/>
        <field number='5028' name='NoPosItems' type='INT'/>
        <field number='20002' name='NoPosItemsGroup' type='NUMINGROUP'/>
        <field number='5029' name='PosItemType' type='STRING'/>
        <field number='5030' name='PosItemValue' type='FLOAT'/>
        <field number='5110' name='StreamPhaseIndicator' type='STRING'/>

Incoming message:

<Incoming> 8=FIXT.1.1
9=680
35=AP
49=TestSenderId
56=TestTargetId
34=6
52=20230321-12:20:56
710=My Unic request Id
721=RfPA4
724=0
325=N
715=20230321
453=2
448=SPBFUT000000
447=D
452=13
448=SPBFUT00036
447=D
452=38
702=1
703=FL
5024=0
5025=2
5026=CUR
5027=SUR
5026=FLT
5027=DEPOSIT_MONEY_FOREIGN_CURR_RUB
5028=12
5029=LIQUID_FACTOR
5030=0.000000
5029=PREV_OPEN_POS_LIM
5030=-120.000000
5029=CUR_OPEN_POS_LIM
5030=-120.000000
5029=CUR_NET_POS
5030=0.000000
5029=CUR_NET_POS_ORD
5030=0.000000
5029=CUR_NET_POS_OPEN_POS
5030=0.000000
5029=PLAN_NET_POS
5030=0.000000
5029=VAR_MARGIN
5030=0.000000
5029=ACCRUED_INT
5030=0.000000
5029=OPTION_PREMIUM
5030=0.000000
5029=TS_COMM
5030=0.000000
5029=KGO
5030=0.000000
10=203

Outсoming message:

<Outcoming>        8=FIXT.1.1
9=125
35=3
34=6
49=TestTargetId
52=20230321-12:20:56.362
56=TestSenderId
45=6
58=Tag appears more than once
371=5026
372=AP
373=13
10=023

<Outcoming>        8=FIXT.1.1
9=125
35=3
34=7
49=TestTargetId
52=20230321-12:45:28.511
56=TestSenderId
45=7
58=Tag appears more than once
371=5029
372=AP
373=13
10=030

2 Answers 2

1

I found my mistake.

The group in FIX dictionary must have the same number as group counter field. I.E. In my example tag 20000 - must be deleted as we already have default group called "NoPositions". Tag 20001 - must be deleted too, instead of it should use tag 5025. Tag 20002 - again must be deleted and should use tag 2058 instead of it.

The tags 5025 and 5028 must have type = "NUMINGROUP"

Sign up to request clarification or add additional context in comments.

1 Comment

Look also at my answer. You should NOT specify the group counter field alone but it should be part of the component.
1

Your data dictionary seems to be wrong in several places, also for example for the Parties component.

You have:

    <field name='NoPartyIDs' required='N'/>
    <component name='Parties' required='Y'/>

But it should actually be like this:

<component name='Parties' required='N' />
... and further below in the dictionary ...
<component name='Parties'>
   <group name='NoPartyIDs' required='N'>
    <field name='PartyID' required='N' />
    <field name='PartyIDSource' required='N' />
    <field name='PartyRole' required='N' />
    <component name='PtysSubGrp' required='N' />
   </group>
  </component>

I assume that is the problem with your other groups also.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.