FAST プロトコル解析 2 FIX 高速チュートリアル翻訳 [PMap、コピー演算子]

FIX の高速チュートリアル

FIX の高速チュートリアル

(翻訳注: この記事は https://jettekfix.com/education/fix-fast-tutorial/ の翻訳と解説です。本文の直訳に加え、私なりの解釈も加えています)各ポイントの説明と検証。翻訳の下に多くの翻訳注釈があることがわかり、一部の翻訳注釈には例も含まれています。この記事を読む前に、前の記事を読むことをお勧めします。」< a i=1>入出力逆分析による FAST プロトコル分析 1」。記事が長くなるため、実際の内容に応じて章を切り詰めます)

1. はじめに

FAST (FIX Adapted for Streaming) は、市場データに標準化の大きな利点をもたらし、電子金融情報の交換に最適化されたパフォーマンスを提供するために、FIX プロトコル組織によって開発されました。データ圧縮アルゴリズムを中心に構築されているため、送信側と受信側の間の帯域幅要件と遅延が大幅に削減されます。 FAST は、メッセージ レートのピーク時のパフォーマンスを向上させるのに特に効果的です。 FAST は市場データから発展しましたが、適用可能であり、すべての FIX メッセージで使用できるため、FIX データの送信フォーマットに柔軟性を提供できます。

FAST は帯域幅を削減するためにいくつかの技術を使用します。この FAST チュートリアルでは、このページでこれらのテクニックを簡単に説明し、後のセクションで詳しく説明します。

1、简介

FAST (FIX Adapted for Streaming) は、市場データ (証券または先物市場における取引データまたは市場データであると理解しています) に大きな標準化の利点をもたらし、より優れた金融電子情報交換のパフォーマンスを提供するために、FIX プロトコル組織によって開発されました。 FAST は、送信側/受信側間の帯域幅要件と遅延を大幅に削減するデータ圧縮アルゴリズムを中心に構築されています。 FAST は、ピーク メッセージ レートを高めるのに特に効果的です (限られた時間内により多くのデータを送信できることは理解しています)。 FAST は市場データから分離されていますが (FAST 圧縮データは直接読み込めないが、FIX は読み込めるという意味だと理解しています)、すべての FIX メッセージに適用でき、柔軟な方法で FIX データをフォーマットして送信できます。

(注釈: FAST は FIX に基づいて構築されていると理解しています。その理由は、FIX が送信する冗長な情報が多すぎるため、FAST が特定の圧縮を実行するためです。FIX メッセージを FAST に圧縮したり、FAST を FIX に解凍したりできます。)

FAST は帯域幅を削減するためにいくつかの技術を使用します。この FAST チュートリアルでは、このページでこれらのテクニックを簡単に紹介し、後のセクションで詳しく説明します。

1.1.高速テンプレート

FAST テンプレートはメッセージのフィールド レイアウトを定義するため、メッセージ自体は個々のフィールド名やタグを記述しません。代わりに、フィールドの ID は、テンプレートで記述されているメッセージ内の位置から推測されます。このテンプレートは送信者と受信者の両方 (つまり、エンコーダーとデコーダーの両方) によって共有され、通常は XML ファイルに保持されます。

図 1.1 – 「Hello World メッセージの転送」

1.1 FAST模版

FAST テンプレートはメッセージのフィールド レイアウトを定義します (テンプレート ファイルには、各メッセージに含まれるフィールドの数、各フィールドの数値タイプ、および各フィールドの順序が記述されます)。そのため、送信されるメッセージ自体には名前やラベルが記述されません。各分野の代わりに、フィールドの ID は、テンプレートで記述されているように、メッセージ内の位置から推測されます。このテンプレートは送信者と受信者 (つまり、エンコーダーとデコーダー) によって共有され、通常は XML ファイルに保存されます。

(注釈: データの送信者と受信者は、「テンプレート」を使用してメッセージを圧縮および解凍します。テンプレートは各フィールドの順序と意味を定義し、送信者/受信者はそれに応じてデータを圧縮および復元できます。)

図 1.1 - 「Hello World メッセージの変換」

1.2. FAST プレゼンス マップ (PMap)

プレゼンス マップ (または PMap) は、メッセージ内に特定のフィールドが存在するかどうかを示すために使用される可変長ビット フィールドです。

これにより、エンコーダは次のような特定の場合にメッセージからフィールドを除外できます。

  • フィールド値が前のメッセージと同じである (取引日、決済日などのフィールドに共通)、または
  • 最後のメッセージより 1 つ大きくなります (シーケンス番号の一般的なケース)。

テンプレートは、メッセージにフィールドが存在しない場合に使用するルールを定義します。

1.2 FAST 存在图(PMap)

プレゼンス マップ (PMap) は、メッセージ内に特定のフィールドが存在するかどうかを示すために使用される可変長ビット フィールドです。

これにより、エンコーダーは特定の状況でメッセージから特定のフィールドを省略できます。次に例を示します。

1) フィールドの値は前のメッセージと同じです (取引日、決済日などのフィールドで共通)

2) フィールド値が前のメッセージより 1 大きい (シーケンス番号などのフィールドで一般的)

テンプレートは、特定のフィールドがメッセージに存在しない場合に使用されるルールを定義します。

[翻訳注:

簡単に言うと、PMap はフィールドに値が入力されているかどうかを識別します。値が入力されていない場合は、テンプレート内のフィールドの定義に基づいて値が自動的に割り当てられます。例を次に示します。もう一度繰り返すのは面倒なので、コードの意味を理解する必要がある学生は先に前回の記事を読んでください。

1)FAST回顾

前回の記事でまとめたルールを振り返ると、FASTで圧縮したデータをバイナリで表示すると、FASTデータは3つの領域に分けられることが分かります。 3番目の領域はテンプレートIDであり、3番目の領域は数値部分です。

2)copy操作符

コピー演算子の意味は、FAST データに特定のフィールドへの割り当てがない場合、前の FAST データの値使用されます。 2 つのフィールドを持つ新しい単純なテンプレートを作成します。両方ともコピー演算子を使用します。

2つのデータのエンコードとデコードを実現するようにコードを変更します。

出力は次のとおりです。

元のエンコーディングを解析します。

FAST エンコーディングの 2 番目の段落では、テンプレート ID フィールドが省略され、PMap の 2 番目の位置が 0 に設定され、テンプレート ID フィールドに値がないことを示していることに注意してください (したがって、テンプレート ID フィールドにはデフォルトではコピー演算子)、以前の値を使用します。

次に、2 番目の段落の代入操作を減らし、コードを次のように変更します。

再度実行すると、出力は次のようになります。

2 番目の段落の解析結果が最初の段落の割り当てに従っていることがわかります。元のエンコーディングを解析します。

PMap のテンプレート ID フィールドと 2 番目の数値フィールドが両方とも 0 に設定されていることがわかります。

3)总结

要約すると、PMap とテンプレート コンテンツを組み合わせると、特定のフィールド (繰り返し、自動インクリメントなど) を省略して、データの総量を削減し、圧縮を実現できます。

おすすめ

転載: blog.csdn.net/weixin_40402375/article/details/130509203