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

За съобщение quickfixj като отчет за улавяне на търговия, понякога може да има вложена повтаряща се група. Разгледайте съобщението за отчета за улавяне на търговията на NYSE на страница 10 от техния документ: https://www.nyse.com/publicdocs/nyse/markets/nyse/NYSE_TRF_Messaging_Spec.pdf

Кажете, ако трябва да получите partyID(448), partyIDSource(447) и partyRole(452), как да го направите с помощта на Java и QuickFixJ java api


person Kaleb Blue    schedule 20.07.2015    source източник
comment
Прочетохте ли документите? quickfixj.org/quickfixj/usermanual/1.5.3/usage/   -  person Grant Birchmeier    schedule 20.07.2015
comment
След като прочетете документите, ако все още имате нужда от помощ, задайте нов въпрос, който е по-добре информиран.   -  person Grant Birchmeier    schedule 20.07.2015
comment
Прочетох документа. Той ви казва как да получите повтаряща се група, а не как да получите вложена повтаряща се група   -  person Kaleb Blue    schedule 20.07.2015
comment
Същото е, пич. Опитахте ли дори?   -  person Grant Birchmeier    schedule 20.07.2015
comment
Разбира се, че опитах. Няма да губя време на хората. Но който и метод да опитах, или ми даде някакво собствено изключение quickfixj или fieldnotfound изключение   -  person Kaleb Blue    schedule 20.07.2015


Отговори (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