FIX プロトコル入門

FIX(Financial Information eXchange)は、銀行・ブローカー・取引所・社内システム間で構造化された取引メッセージを交換するための業界標準プロトコルです。テキストベースでタグ指向であり、低レイテンシの電子取引 — 特に FX ESP(実行可能ストリーミング価格)向けに設計されています。

FIX が存在する理由

FIX 以前は、カウンターパーティごとに独自の電文形式が乱立していました。FIX は次を標準化します。

  • 意味論 — クォート・注文・約定が何を表すか
  • フィールド番号55(Symbol)や 44(Price)などのタグ
  • セッション動作 — 接続の維持とギャップからの復旧

この共通語彙が、多者間連携や正直なベンチマークを可能にします。

メッセージの形

FIX メッセージは tag=value フィールドの列で、ASCII SOH(0x01)で区切られます。人が読むときは SOH を | で表示することが多いです。

8=FIX.4.4|9=…|35=D|49=SENDER|56=TARGET|34=12|52=20260629-10:00:00.000|11=OID1|55=EUR/USD|54=1|38=1000000|40=2|44=1.0850|10=…|

主要なヘッダタグ:

タグ 名前 役割
8 BeginString FIX 版(FIX.4.4
35 MsgType メッセージ種別(D = NewOrderSingle、S = Quote など)
49 SenderCompID 送信者
56 TargetCompID 受信者
34 MsgSeqNum 方向ごとのシーケンス番号
52 SendingTime タイムスタンプ

チェックサム(タグ 10)でメッセージを閉じます。

二つの層

FIX は通常、次の二層に分けて説明します。

  1. セッション層 — 接続と信頼性: Logon(A)、Logout(5)、Heartbeat(0)、Resend Request(2)、Sequence Reset(4)。シーケンス番号の整合が必須で、ギャップは復旧処理を起こします。
  2. アプリケーション層 — 業務メッセージ: Market Data(WX)、Quote(S)、NewOrderSingle(D)、ExecutionReport(8)など。

4H は Java で両層を実装し、仕様アーティファクトから駆動します(手書きの個別実装ではありません)。

トランスポート

本番 FIX セッションは通常 TCP 上で動作します(VPN や専用線を伴うことも多いです)。カウンターパーティ方針に応じて TLS でラップされることもあります。評価パッケージは localhost 上のプレーン TCP なので、まずメッセージの流れに集中できます。

FIX バージョン

レガシーの株式スタックでは FIX 4.2 が残っています。FX ESP と多くのモダンなセルサイドプロファイルは FIX 4.4 を対象にします。4H 評価パッケージの ExampleBank と Lucid は FIX 4.4 です。

最小のセッションライフサイクル

  1. TCP 接続(イニシエータ → アクセプタ)
  2. Logon — Comp ID、ハートビート間隔、必要なら認証を合意
  3. Heartbeat — アイドル時の生存確認
  4. アプリケーション通信 — クォート、注文、約定
  5. Logout — 正常終了(またはエラーで切断)

ExampleBank デモを実行すると、サーバーとクライアントのログでこのライフサイクルをリアルタイムに確認できます。

次のステップ