Как получить повторяющиеся группы в сообщении quickfixj

Для сообщения быстрого исправления, такого как отчет о торговых сделках, оно иногда может иметь вложенную повторяющуюся группу. Взгляните на сообщение с отчетом об учете сделок NYSE на странице 10 их документа: https://www.nyse.com/publicdocs/nyse/markets/nyse/NYSE_TRF_Messaging_Spec.pdf

Скажите, если нужно получить partyID(448), partyIDSource(447) и partyRole(452), как это сделать с помощью Java и API QuickFixJ java


person Kaleb Blue    schedule 20.07.2015    source источник


Ответы (1)


Получение вложенной группы 2-го уровня мало чем отличается от получения группы 1-го уровня.

Я не читал ваш документ NYSE, но предполагаю, что группа Parties находится внутри группы NoSides, как и в обычной спецификации FIX44.

Этот код, вероятно, будет работать. (Я не компилировал его.) Я не проверял количество групп, но я думаю, что вы знаете эту часть.

PartyID partyId = new PartyID();

// group
quickfix.fix44.TradeCaptureReport.NoSides sidesGroup = 
  new quickfix.fix44.TradeCaptureReport.NoSides();

// subgroup
quickfix.fix44.TradeCaptureReport.NoSides.NoPartyIDs partyIdsGroup =
  new quickfix.fix44.TradeCaptureReport.NoSides.NoPartyIDs();

// get first sidesGroup
message.getGroup(1, sidesGroup);

// get first partyIdsGroup out of first sidesGroup
sidesGroup.getGroup(1, partyIdsGroup);
// do something with it...

// get second partyIdsGroup out of first sidesGroup
sidesGroup.getGroup(2, partyIdsGroup);
// do something with it...

// -----
// get second sidesGroup
message.getGroup(2, sidesGroup);

// get first partyIdsGroup out of second sidesGroup
sidesGroup.getGroup(1, partyIdsGroup);

// and so on...
person Grant Birchmeier    schedule 20.07.2015
comment
есть ли способ программно установить группы без выполнения 1,2 и т.д.. - person Crt; 24.05.2017
comment
Используйте цикл и увеличивайте переменную int. (Этот ответ настолько очевиден, что я задаюсь вопросом, правильно ли я понимаю ваш вопрос.) - person Grant Birchmeier; 24.05.2017
comment
Допустим, я получаю сообщение FIX, я хотел бы настроить некоторый код для получения всех групп и поля внутри группы без изменения исходного кода. Затем я получаю другое сообщение FIX с другим количеством групп, но все же хочу, чтобы тот же источник работал. Я бы хотел, чтобы исходный код обрабатывал эти сценарии. - person Crt; 24.05.2017
comment
Прочитайте поле счетчика группы. Например, в приведенном выше ответе вы можете извлечь целочисленное поле NoSides. Это значение равно тому, сколько Side элементов вам нужно будет перебрать. - person Grant Birchmeier; 24.05.2017