12

私はFIXの世界に不慣れです。Java で FIX メッセージを処理するアプリケーションを作成しており、そのために QuickFIX/J を使用しています。ホームページ ( http://quickfixengine.org/ )から DataDictionary をダウンロードしました。バージョン4.4を使用しています。

XML ファイルには、グループとコンポーネントが存在します。ただし、コンポーネントには再びグループを含めることができます。

それらの正確な違いは何ですか?

4

3 に答える 3

22

コンポーネントは実際には... ものではありません。これらは、FIX DataDictionary (DD) のマクロのようなものです。多くのメッセージは同じフィールド セットを必要とするため、すべてのメッセージで同じフィールドを指定する代わりに、DD は他のメッセージに含めることができるコンポーネントを定義します。

一方、グループは非常に現実的なものです。これは、メッセージに 0 回以上表示されるフィールドの繰り返しシーケンスです。

QuickFIX (QF) のプログラミング インターフェイスは、コンポーネントを概念としてほとんど無視しています。コンポーネントは QF の概念ではないため、メッセージからコンポーネントを抽出することはできません。他のフィールドと同じようにフィールドを抽出するだけです。

仮定の例:次の 2 つのメッセージ定義はまったく同じです。

  1. コンポーネント付き

    <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>
    
  2. コンポーネントなし

    <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()いずれにせよ、それが定義されている場合は、 (または何でも)呼び出すだけです。

于 2015-04-21T14:12:11.413 に答える
3

コンポーネントのFIXWikiから:

コンポーネント ブロックは、グループ化された関連データ フィールドのセットであり、それらが使用されるメッセージ内のコンポーネント ブロック名によって参照されます。「グループ」と呼ばれることもあります。

コンポーネント ブロックは実際に定義してから、さまざまなメッセージ タイプで再利用できます。場合によっては、繰り返しグループが 1 つの特定のメッセージ用であり、コンポーネント ブロックとして定義されていないことがあります。

コンポーネント ブロックをフィールドの再利用可能な定義として表示します。このようなコンポーネント ブロックには、フィールドの繰り返しグループが含まれる場合と含まれない場合があります。

たとえば、多くの異なるメッセージ タイプで使用されるパーティ コンポーネント ブロックを取り上げます (そのページの「使用先」を参照してください)。一度定義すれば、メッセージの多くの定義で簡単に使用できます。

于 2015-04-21T13:43:52.530 に答える