我正在使用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 return 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 FMH0013!22 = 8461 = 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
感谢。
答案 0 :(得分:1)
msg.getGroup(1, noSides)
在执行此操作之前,请检查是否存在任何组或确认组的数量,或者是否设置了侧数字段或具有大于0的值(如果相关)。另外你怎么知道要提取多少组。
Could this be caused by the existence of the custom fields?
不一定
Message.GetGroup(uint num, Group g)
num 是Group类型的FIX消息中的第num个组。