我正在使用 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)
参数 num 是什么意思?找到的所有示例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();
它返回值为 1 的 QuickFix.NoSides。
整条留言如下。8=FIX.4.49=52435=AE49=ICE34=4052=20130213-14:44:57.37756=922257=42571=69487=0856=0828=0150=F17=1300946539=2570=N55=21914748=BRN FMH10146101 = FXXXXX916 = 20130301917 = 2013033132 = 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
谢谢。