.net Wrapper中QuickFix中的数据字典

时间:2013-02-13 21:25:54

标签: .net quickfix

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

感谢。

1 个答案:

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