Как добавить Валюта и SettlType в InstrmtMDReqGrp в MarketDataRequest <V> - PullRequest
1 голос
/ 24 апреля 2019

Я внедряю программу FIX в качестве инициатора, которая подключается к рынку и отправляет и получает исправления. В одном шаге мне нужно отправить сообщение MarketDataRequest на рынок, но случилось то, что сообщение было отклонено рынком.

Я попытался добавить поля Currency.FIELD и SettlType.FIELD, но в последнем сообщении в последнем сообщении они не отображаются.

Мне нужно отправить сообщение как:

8 = FIXT.1.1 9 = 222 35 = V 34 = 1013 49 = **** 52 = 20190117-17: 23: 48,670 56 = **** 128 = FGW 262 = MD1 263 = 0 264 = 5 265 = 1 266 = Y 146 = 1 55 = GGAL 48 = GGAL-0002-C-CT-ARS 167 = GO 207 = XMEV 15 = ARS 63 = 2 267 = 9 269 = 0 269 = 1 269 = 2 269 = 4 269 ​​= 5 269 = 7 269 = 8 269 = B 269 = 3 10 = 215

Но я не могу поставить тег 15 и 63 перед тегом 267.

Мой код сейчас:

InstrmtMDReqGrp instrmtMDReqGrp = new InstrmtMDReqGrp();
NoRelatedSym noRelatedSym = new NoRelatedSym(1); //146          

instrmtMDReqGrp.set(noRelatedSym);

SettlType settlType = new SettlType(); // 63
settlType.setValue("2");

Currency currency = new Currency(); // 15
currency.setValue("ARS");       


instrmtMDReqGrp.setField(Currency.FIELD, currency);
instrmtMDReqGrp.setField(SettlType.FIELD, settlType);

В последнем сообщении эти поля не отображаются.

Я использую quickfixj с quickfixj-spring-boot-starter 2.2.1.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2019

Вы забыли позвонить addGroup в сообщении, например так:

fixMessage.addGroup(instrmtMDReqGrp);

Существует небольшая страница документации для повторяющихся групп в QuickFIX / J , которая демонстрирует это:

Создание сообщений с повторяющимися группами

Вот пример сообщения, которое распространяет рыночные данные. Когда В сообщении создается обязательное поле с номером повторения groups установлен в ноль. Это потому, что QuickFIX автоматически установит это поле для вас, когда вы добавляете группы. Таким образом, никогда не бывает несоответствие между количеством записей в поле и в сообщение.

package quickfix;

quickfix.fix42.MarketDataSnapshotFullRefresh message =
  new quickfix.fix42.MarketDataSnapshotFullRefresh(new Symbol("QF"));

quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries group =
  new quickfix.fix42.MarketDataSnapshotFullRefresh.NoMDEntries();

group.set(new MDEntryType('0'));
group.set(new MDEntryPx(12.32));
group.set(new MDEntrySize(100));
group.set(new OrderID("ORDERID"));
message.addGroup(group);

group.set(new MDEntryType('1'));
group.set(new MDEntryPx(12.32));
group.set(new MDEntrySize(100));
group.set(new OrderID("ORDERID"));
message.addGroup(group);
0 голосов
/ 30 апреля 2019

Какое сообщение об отклонении вы получите?Обычно он дает номер тега, который содержит ошибку, плюс некоторое описание ошибки.

Обычно структура сообщений об исправлениях определяется словарем данных, предоставленным Acceptor.Если этот словарь данных отличается от встроенного в библиотеку quickfixj, вам потребуется перекомпилировать базовую библиотеку quickfixj с этим словарем данных, чтобы сообщения анализировались правильно, а теги располагались в правильном порядке при создании новых сообщений.

...