0

TradeCaptureReport メッセージの受信と処理に QuickFix .Net Dll を使用しています。いくつかのカスタム フィールドを含む 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 FMH006! =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 に答える