この質問に関連して、カウンターパーティ プロバイダー エンジンは、FIX タグのグループの順序をチェックし、予期された順序以外のものを拒否するように設定されています。
- 予想されるタグ グループの順序が重要なのはなぜですか? 特定の順序でタグを検証する方が速いと思います。
- 予想されるタグ グループの順序はどのように設定されますか? これはランダムなハッシュ セットであることは理解していますが、意味がありません。データ ディクショナリ内のタグの順序に依存していませんか?
- クラスを書き直してグループ順序を設定する以外に、使用するクイックフィックス設定はありますか?
QuickFix バージョンで正確に言うと2.2.0
、次のメッセージを送信します
8=FIX.4.4 9=173 35=R 34=2 49=CLIENT 52=20200909-18:11:10.426 56=SIMULATOR 131=EEB85F9C 146=1 55=EUR/USD 460=4 167=FOR 38=1000.0 64=SP 15=EUR 1=FOR 553=test 1300=XOFF 10=086
そしてリジェクトを受け取る
8=FIX.4.4 9=145 35=3 34=2 49=SIMULATOR 52=20200909-18:11:10.427 56=CLIENT 45=2 58=The group 146 must set the delimiter field 460 371=55 372=R 373=15 10=224
したがって、送信されたメッセージでは、タグ460
はタグの後に来ており、55
これらのタグを逆に取得することはできません。コードでは、繰り返しグループを設定しましたg
QuickFix.FIX44.QuoteRequest.NoRelatedSymGroup g = new QuickFix.FIX44.QuoteRequest.NoRelatedSymGroup();
探している順序でグループにデータを追加します。次のようにします。
Product product = new Product(4);
g.Product = product;
Symbol symbol = new Symbol("EUR/USD");
g.SetField(symbol);
などなど… と を見ていますg.getFieldOrder
がg.SetFields
、他に方法はありますか?
私が知る限り、1.6.2
拒否メッセージのような他のクイックフィックスバージョンでも同じ理由です。Out of order repeating group members