私はFIXの世界に不慣れです。Java で FIX メッセージを処理するアプリケーションを作成しており、そのために QuickFIX/J を使用しています。ホームページ ( http://quickfixengine.org/ )から DataDictionary をダウンロードしました。バージョン4.4を使用しています。
XML ファイルには、グループとコンポーネントが存在します。ただし、コンポーネントには再びグループを含めることができます。
それらの正確な違いは何ですか?
私はFIXの世界に不慣れです。Java で FIX メッセージを処理するアプリケーションを作成しており、そのために QuickFIX/J を使用しています。ホームページ ( http://quickfixengine.org/ )から DataDictionary をダウンロードしました。バージョン4.4を使用しています。
XML ファイルには、グループとコンポーネントが存在します。ただし、コンポーネントには再びグループを含めることができます。
それらの正確な違いは何ですか?
コンポーネントは実際には... ものではありません。これらは、FIX DataDictionary (DD) のマクロのようなものです。多くのメッセージは同じフィールド セットを必要とするため、すべてのメッセージで同じフィールドを指定する代わりに、DD は他のメッセージに含めることができるコンポーネントを定義します。
一方、グループは非常に現実的なものです。これは、メッセージに 0 回以上表示されるフィールドの繰り返しシーケンスです。
QuickFIX (QF) のプログラミング インターフェイスは、コンポーネントを概念としてほとんど無視しています。コンポーネントは QF の概念ではないため、メッセージからコンポーネントを抽出することはできません。他のフィールドと同じようにフィールドを抽出するだけです。
仮定の例:次の 2 つのメッセージ定義はまったく同じです。
コンポーネント付き
<message name="Automobile" msgtype="X" msgcat="app">
<field name="Wheel" required="Y"/>
<field name="Bumper" required="Y"/>
<component name="Dashboard" required="Y"/>
</message>
<component name="Dashboard">
<field name="Radio" required="Y"/>
<field name="AirConditioner" required="Y"/>
<field name="Heater" required="Y"/>
</component>
コンポーネントなし
<message name="Automobile" msgtype="X" msgcat="app">
<field name="Wheel" required="Y"/>
<field name="Bumper" required="Y"/>
<field name="Radio" required="Y"/>
<field name="AirConditioner" required="Y"/>
<field name="Heater" required="Y"/>
</message>
見る?コンポーネントはほとんど単なるマクロです。
msg.GetHeater()
いずれにせよ、それが定義されている場合は、 (または何でも)呼び出すだけです。
コンポーネントのFIXWikiから:
コンポーネント ブロックは、グループ化された関連データ フィールドのセットであり、それらが使用されるメッセージ内のコンポーネント ブロック名によって参照されます。「グループ」と呼ばれることもあります。
コンポーネント ブロックは実際に定義してから、さまざまなメッセージ タイプで再利用できます。場合によっては、繰り返しグループが 1 つの特定のメッセージ用であり、コンポーネント ブロックとして定義されていないことがあります。
コンポーネント ブロックをフィールドの再利用可能な定義として表示します。このようなコンポーネント ブロックには、フィールドの繰り返しグループが含まれる場合と含まれない場合があります。
たとえば、多くの異なるメッセージ タイプで使用されるパーティ コンポーネント ブロックを取り上げます (そのページの「使用先」を参照してください)。一度定義すれば、メッセージの多くの定義で簡単に使用できます。