Я использую 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
благодаря.
Message(string)
. Если вы добавляете некоторую логику для определения типа сообщения (например, ExecutionReport), вы можете использовать более конкретные конструкторы, такие какExecutionReport(string)
. См. этот вопрос, как он выглядит это от кого-то, кто делает то же самое, что и вы. - person Grant Birchmeier   schedule 14.02.2013TradeCaptureReport(Message)
. Вы создаете сообщение с помощью конструктора строк, а затем передаете это сообщение конструктору TCR. - person Grant Birchmeier   schedule 14.02.2013public TradeCaptureReport(); public TradeCaptureReport(TradeReportID aTradeReportID, PreviouslyReported aPreviouslyReported, LastQty aLastQty, LastPx aLastPx, TradeDate aTradeDate, TransactTime aTransactTime);
- person priehl   schedule 14.02.2013