Как создать несколько участников в сообщениях FIX?

Мне нужно создать TradeCaptureReport сообщений FIX. Как это сделать, было понятно, пока я не попытался создать Parties:

...
<RptSide Ccy="USD" ... >
    <Pty Src="D" ID="1111" R="11">
        <Sub ID="AA" Typ="4010"/>
        <Sub ID="AA" Typ="4013"/>
    </Pty>
    <Pty Src="D" ID="1360" R="1"/>
</RptSide>

RptSide/Pty          - 453
RptSide/Pty/@ID      - 448
RptSide/Pty/@Src     - 447
RptSide/Pty/@R       - 452

RptSide/Pty/Sub      - 802
RptSide/Pty/Sub/@ID  - 523
RptSide/Pty/Sub/@Typ - 803

final TradeCaptureReport tradeCaptureReport = new TradeCaptureReport();
...
final Instrument instrument = new Instrument();
tradeCaptureReport.set(instrument);
...
 // (552) RptSide/*
TradeCaptureReport.NoSides rptSide = new TradeCaptureReport.NoSides();
tradeCaptureReport.addGroup(rptSide);

// (15) RptSide/@Ccy (Currency)
rptSide.set(new Currency("USD"));
...

// (453) RptSide/Pty/*:
Parties parties = new Parties();
rptSide.setGroups(parties);


// (802) RptSide/Pty/Sub/* (NoPartySubIDs)
NoPartySubIDs sub = new NoPartySubIDs();

// (523) RptSide/Pty/Sub/@ID (PartySubID)
PartySubID subID1 = new PartySubID("AA");
PartySubID subID2 = new PartySubID("AA");

// (803) RptSide/Pty/Sub/@Typ (PartySubIDType)
PartySubIDType subIdTyp1 = new PartySubIDType(4010);
PartySubIDType subIdTyp2 = new PartySubIDType(4013);

Может ли кто-нибудь дать пример кода Java, как создать и связать их с RptSide (803)?


person Sergey    schedule 01.02.2016    source источник
comment
Прочтите страницу документа о повторяющихся группах. Если вы уже читали его, прочтите еще раз, потому что ваш код совсем не похож на пример. Если вы все еще застряли, ответьте в комментарии, и я вернусь, чтобы помочь.   -  person Grant Birchmeier    schedule 01.02.2016
comment
Достаточно ли информации в повторяющихся группах для решения задачи, описанной в этом посте? (Я много раз читал этот документ). По крайней мере, я не нашел там информацию о компонентах, которые вы описали в ссылка   -  person Sergey    schedule 01.02.2016


Ответы (1)


Чтобы создать Стороны:

...
<RptSide Ccy="USD" ... >
    <Pty Src="D" ID="1111" R="11">
        <Sub ID="AA" Typ="4010"/>
        <Sub ID="AA" Typ="4013"/>
    </Pty>
    <Pty Src="D" ID="1360" R="1"/>
</RptSide>

это можно закодировать на Java:

final TradeCaptureReport tradeCaptureReport = new TradeCaptureReport();
...
final Instrument instrument = new Instrument();
tradeCaptureReport.set(instrument);
...
 // (552) RptSide/*
TradeCaptureReport.NoSides rptSide = new TradeCaptureReport.NoSides();

// (15) RptSide/@Ccy (Currency)
rptSide.set(new Currency("USD"));
...

// (453) RptSide/Pty/*:
// 1-st Pty:
Parties.NoPartyIDs ptyGrp = new Parties.NoPartyIDs();

ptyGrp.set(new PartyID("1111"));
ptyGrp.set(new PartyIDSource('D'));
ptyGrp.set(new PartyRole(11));

Parties.NoPartyIDs.NoPartySubIDs subGrp = new Parties.NoPartyIDs.NoPartySubIDs();

subGrp.set(new PartySubID("AA"));
subGrp.set(new PartySubIDType(4010));

ptyGrp.addGroup(subGrp);                          // add <Sub ID="AA" Typ="4010"/>

subGrp = new Parties.NoPartyIDs.NoPartySubIDs();

subGrp.set(new PartySubID("AA"));
subGrp.set(new PartySubIDType(4013));

ptyGrp.addGroup(subGrp);                          //add <Sub ID="AA" Typ="4013"/>

rptSide.addGroup(ptyGrp);                         // add <Pty Src="D" ID="1111" R="11">... with 2 Sub-s (above)

// 2-nd Pty:
ptyGrp = new Parties.NoPartyIDs();

ptyGrp.set(new PartyID("1360"));
ptyGrp.set(new PartyIDSource('D'));
ptyGrp.set(new PartyRole(1));

rptSide.addGroup(ptyGrp);                        // add <Pty Src="D" ID="1360" R="1"/>

tradeCaptureReport.addGroup(rptSide);            // add <RptSide Ccy="USD" ... > with nested Pty-s

Я не уверен, что это соответствует правилам, но, по крайней мере, это создает ожидаемое сообщение об исправлении. Таким образом, предложение: «Если вы уже читали это [doc], прочтите его еще раз» было полезным (большое спасибо Гранту Бирчмайеру).

person Sergey    schedule 02.02.2016