Словарь данных в QuickFix в .net Wrapper

Я использую QuickFix .Net Dll для получения и обработки сообщений TradeCaptureReport. Мне было отправлено сообщение TradeCaptureReport, содержащее несколько настраиваемых полей.

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

var msg = new QuickFix44.TradeCaptureReport();
msg.setString(@"8=FIX.4.49=52435=AE...");
var noSides = new QuickFix44.TradeCaptureReport.NoSides();
msg.getGroup(1, noSides);

Может ли это быть вызвано наличием настраиваемых полей? которые случайно появляются прямо перед повторяющейся группой, которую я пытаюсь прочитать? Если да, то как лучше изменить словарь данных в файле FIX44.xml?

Кроме того, в Message.GetGroup(uint num, Group g)

что означает номер параметра? все найденные примеры http://www.quickfixengine.org/quickfix/doc/html/repeating_groups.html подразумевает, что это n-й экземпляр группы, которую вы ищете, но если кто-то может подтвердить, я был бы признателен.

Изменить Спасибо за комментарии/ответы.

Я запутался в группе... использование has group возвращает false

        var noSides = new QuickFix44.TradeCaptureReport.NoSides();
        var p = msg.hasGroup(noSides);

но мое сообщение явно имеет тег 552, и когда я

        var q = msg.getNoSides();

Он возвращает QuickFix.NoSides со значением 1.

Полное сообщение выглядит следующим образом. 8=FIX.4.49=52435=AE49=ICE34=4052=20130213-14:44:57.37756=922257=42571=69487=0856=0828=0150=F17=1300946539=2570=N55=21914748=8043 16FMH043! = FXXXXX916 = 2013033132 = 20130301917 = 26,031 = 12,09018 = 269022 = 175 = 2013021360 = 20130213-14: 44: 57,3759413 = 0552 = 154 = 237 = 1300955611 = 170339730453 = 7448 = someTrader447 = D452 = 11448 = SomePartyIdFirm447 = D452 = 13448 = 9222447 =D452=56448=8558447=D452=4448=SomePartyId1447=D452=51448=SomePartyId2447=D452=60448=U447=D452=5410=252

благодаря.


person priehl    schedule 13.02.2013    source источник
comment
Почему вы используете msg.setString, а не стандартное соглашение MessageCracker?   -  person Grant Birchmeier    schedule 14.02.2013
comment
Я просто пытаюсь воссоздать приход сообщения. Достигается ли это?   -  person priehl    schedule 14.02.2013
comment
Вместо этого используйте конструктор Message(string). Если вы добавляете некоторую логику для определения типа сообщения (например, ExecutionReport), вы можете использовать более конкретные конструкторы, такие как ExecutionReport(string). См. этот вопрос, как он выглядит это от кого-то, кто делает то же самое, что и вы.   -  person Grant Birchmeier    schedule 14.02.2013
comment
Странно, для QuickFix44.TradeCaptureReport нет конструктора, который принимает сообщение. Вы хотите сказать, что нет никакого способа воссоздать отчет о торговле, эквивалентный тому, который был отправлен мне, на основе строки, которая была сохранена в моих лог-файлах?   -  person priehl    schedule 14.02.2013
comment
Упс, я запутался. Более конкретный конструктор — TradeCaptureReport(Message). Вы создаете сообщение с помощью конструктора строк, а затем передаете это сообщение конструктору TCR.   -  person Grant Birchmeier    schedule 14.02.2013
comment
единственными конструкторами для TCR являются public TradeCaptureReport(); public TradeCaptureReport(TradeReportID aTradeReportID, PreviouslyReported aPreviouslyReported, LastQty aLastQty, LastPx aLastPx, TradeDate aTradeDate, TransactTime aTransactTime);   -  person priehl    schedule 14.02.2013
comment
давайте продолжим это обсуждение в чате   -  person Grant Birchmeier    schedule 14.02.2013


Ответы (1)


msg.getGroup(1, noSides)

Прежде чем сделать это, проверьте, есть ли какие-либо группы, или подтвердите количество групп, или если поле количества сторон установлено или имеет значение больше 0, где это уместно. Иначе как узнать, сколько групп нужно извлечь.

Could this be caused by the existence of the custom fields? 

Не обязательно

Message.GetGroup(uint num, Group g)

num – это номер группы в FIX-сообщении типа Group.

person DumbCoder    schedule 13.02.2013
comment
Я отредактировал ОП, чтобы упомянуть мои результаты из TradeCaptureReport.hasGroup() Спасибо! - person priehl; 14.02.2013