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
ありがとう。