0

我正在使用 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

谢谢。

4

1 回答 1

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 个组。

于 2013-02-13T22:22:38.423 回答