機関投資家向け FIX API (4.2 / 4.4 / 5.0 / 5.2)
機関投資家向け FIX 4.2、4.4、5.0、5.2 接続: オーダーエントリー(:9878)、リアルタイム Drop Copy(797=Y / 9406=Y)、市場データ(:9879)、QuickFIX XML スキーマ。
SKILL.mdHMAC-SHA256 署名、/fapi/v1 & /fapi/v2 スキーマ、秘密情報マスキングのガードレールを備えた Claude Code 向けドロップインスキル。
AGENTS.mdOpenAI Codex CLI 向けのドロップインリポジトリ AGENTS.md — ティックサイズルール、レート制限バジェット、セルフカストディ境界を定義。
AGY.md検証済み非同期 Python WebSocket + REST 実行テンプレートを備えた Google Antigravity (agy) & Gemini エージェント仕様。
llms.txt全 GaiaEx ドキュメントページ、OpenAPI 3.0 スキーマ、Postman コレクションの機械可読な単一 URL インデックス。
1. アーキテクチャと複数バージョンの概要
GaiaEx ネイティブ C++26 機関投資家向け FIX ゲートウェイは、永続的な TCP/TLS セッションを介して、決定論的かつ超低レイテンシの注文発注(Order Entry)、リアルタイムドロップコピー、ポジションおよび注文照会、L1/L2 マーケットデータストリーミングを提供します。
QuickFIX / OnixS XML スキーマのダウンロード: /fix-dictionary.xml — QuickFIX (C++/Python/Go)、QuickFIX/J、OnixS、OneZero、および機関投資家向け OMS プラットフォームと互換性があります。前方互換性を確保するため、クライアントエンジンに ValidateUserDefinedFields=N および ValidateFieldsOutOfOrder=N を設定してください。
| ゲートウェイセッション種別 | ポート | 対応バージョン | 機能 | アクセスポリシー |
|---|---|---|---|---|
| 注文管理 (OE) | 9878 | FIX.4.2、FIX.4.4、FIX.5.0、FIX.5.2 | 注文発注 (35=D)、キャンセル (35=F)、訂正 (35=G)、一括キャンセル (35=q)、注文ステータス (35=H)、ポジション (35=AN)、レート制限 (35=XLQ)、銘柄 (35=x) | Read + Trade API キー |
| ドロップコピー (DC) | 9878 | FIX.4.2、FIX.4.4、FIX.5.0、FIX.5.2 | すべての FIX および REST/HTTP 注文を対象とし、797=Y および 9406=Y がタグ付けされたリアルタイム統合 ExecutionReport (35=8) ストリーム | 読み取り専用の強制 (35=j により注文を拒否) |
| マーケットデータ (MD) | 9879 | FIX.4.2、FIX.4.4、FIX.5.0、FIX.5.2 | リアルタイム L1/L2 Snapshot (35=W)、IncrementalRefresh (35=X)、および MarketDataRequestReject (35=Y) | 読み取り専用の強制 (35=j により注文を拒否) |
バージョンネゴシエーションと通信プロトコルルール
| FIX バージョン | BeginString (8) | ログオンタグ (35=A) | App ヘッダータグ | 約定 ExecType (150) | ExecTransType (20) ルール |
|---|---|---|---|---|---|
| FIX 4.2 | 8=FIX.4.2 | なし | なし | 150=1 (一部約定)、150=2 (全約定) | 必須 (20=0 新規、20=3 ステータス) |
| FIX 4.4 | 8=FIX.4.4 | なし | なし | 150=F (約定) w/ 39=1/2 | 禁止 (35=3, 371=20, 373=2 により拒否) |
| FIX 5.0 | 8=FIXT.1.1 | 1137=7 | 1128=7 | 150=F (約定) w/ 39=1/2 | 禁止 (35=3, 371=20, 373=2 により拒否) |
| FIX 5.2 (5.0 SP2) | 8=FIXT.1.1 | 1137=9 | 1128=9 | 150=F (約定) w/ 39=1/2 | 禁止 (35=3, 371=20, 373=2 により拒否) |
2. セッション管理と HMAC-SHA256 ログオン (35=A)
すべての FIX セッションは、GaiaEx API キー (Tag 553)、API シークレット (Tag 554)、および RawData (Tag 96) 内の小文字の 16 進数 HMAC-SHA256 署名によって認証された Logon (35=A) フレームから始まります。
import hmac, hashlib
def sign_fix_logon(api_secret: str, sending_time: str, seq_num: int, sender_comp_id: str, target_comp_id: str) -> str:
# Canonical prehash string: SendingTime(52) | MsgType(35) | MsgSeqNum(34) | SenderCompID(49) | TargetCompID(56)
payload = f"{sending_time}|A|{seq_num}|{sender_comp_id}|{target_comp_id}"
return hmac.new(api_secret.encode("utf-8"), payload.encode("utf-8"), hashlib.sha256).hexdigest()| タグ | フィールド名 | 必須 | 説明 |
|---|---|---|---|
98 | EncryptMethod | Y | 0 = なし / TLS トランスポート暗号化 |
108 | HeartBtInt | Y | ハートビート間隔(秒単位、推奨: 30) |
141 | ResetSeqNumFlag | N | Y = シーケンス番号を 1 にリセット、N = 日中のシーケンス状態を再開 |
553 | Username | Y | GaiaEx API キー |
554 | Password | Y | GaiaEx API シークレット |
96 | RawData | Y | 52|A|34|49|56 に対する 64 文字の 16 進数 HMAC-SHA256 署名 |
797 / 9406 | CopyMsgIndicator / DropCopyFlag | N | 読み取り専用ドロップコピーセッションを登録するには 797=Y、9406=Y、または 50=DROPCOPY を設定 |
1409 | SessionStatus | 出力 | 35=A / 35=5 で返却: 0=アクティブ、4=ログアウト完了、5=認証失敗、6=シーケンスが低すぎる、101=1 億シーケンス上限 |
ギャップリカバリ (35=2 & 35=4) と切断時キャンセル (CoD)
- インバウンドギャップ検出: 受信メッセージに
MsgSeqNum (34) > ExpectedSeqNumが含まれている場合、ゲートウェイは直ちにResendRequest (35=2, 7=ExpectedSeqNum, 16=0)を送信します。PossDupFlag (43=Y)なしでMsgSeqNum (34) < ExpectedSeqNumが発生した場合、ゲートウェイはLogout (35=5, 1409=6)を送信してソケットを切断します。 - アウトバウンド再生: クライアントが
ResendRequest (35=2)を送信すると、ゲートウェイはすべてのアナウンスメッセージ(ドロップコピーの35=8レポートを含む)を43=Yおよび122=OrigSendingTimeと共に再生し、管理フレームをSequenceReset-GapFill (35=4, 123=Y)に統合します。 - 自動切断時キャンセル (CoD): 注文管理セッションが切断されると、そのセッションで発注されたすべてのオープン中の未約定注文 (
OrdStatus 39=0) は自動的にキャンセルされ (150=4, 39=4, 103=3020)、アクティブなドロップコピーセッションにリアルタイムでブロードキャストされます。
3. 注文発注、訂正、キャンセルおよび照会 (35=D, G, F, q, H, AN, XLQ)
NewOrderSingle (35=D)
| タグ | フィールド名 | 必須 | 対応値と注意事項 |
|---|---|---|---|
11 | ClOrdID | Y | クライアントが割り当てた一意の注文識別子(最大 31 文字) |
1 | Account | N | セルフカストディ Vault アドレス (0x...) またはサブアカウント識別子 |
50 | SenderSubID | N | トレーダーまたは戦略 ID。35=8 の TargetSubID (57) でそのままエコー返却 |
55 | Symbol | Y | USDC パーペチュアル (BTCUSDC、ETHUSDC、SOLUSDC)、USDT パーペチュアル (BTCUSDT、ETHUSDT)、RWA パーペチュアル (xyz:GOLD / GOLDUSDC、xyz:NVDA、xyz:TSLA) |
54 | Side | Y | 1 = 買い、2 = 売り |
38 | OrderQty | Y | 原資産単位の注文数量(小数点以下 4 桁の端数精度に対応、例: 0.0050) |
40 | OrdType | Y | 1 = 成行、2 = 指値、4 = ストップ指値 (99=StopPx が必要)、p = ポストオンリー (または 18=6) |
44 | Price | C | 指値価格 (40=2、40=4、40=p で必須) |
59 | TimeInForce | N | 1 = GTC (デフォルト)、3 = IOC、4 = FOK、5 = GTX |
544 | CashMargin | N | 1 = 現物 (デフォルト)、2 = 信用新規、3 = 信用返済 |
訂正 (35=G)、キャンセル (35=F)、一括キャンセル (35=q)、ステータス (35=H)、ポジション (35=AN) および制限 (35=XLQ)
| MsgType | メッセージ名 | 主要リクエストタグ | ゲートウェイのレスポンス |
|---|---|---|---|
35=G | OrderCancelReplaceRequest | 11=ClOrdID、41=OrigClOrdID、55=Symbol、54=Side、38=OrderQty、44=Price | 150=5, 39=5 (訂正完了) または 35=9 (434=2) を含む 35=8 |
35=F | OrderCancelRequest | 11=ClOrdID、41=OrigClOrdID、55=Symbol、54=Side | 2 段階の 35=8: 150=6, 39=6 (キャンセル保留中) → 150=4, 39=4 (キャンセル完了)、または 35=9 (434=1) |
35=q | OrderMassCancelRequest | 11=ClOrdID、530=7 (全注文キャンセル) | 35=r (1369=MassActionReportID, 531=7) + キャンセルされた注文ごとに 1 つの 35=8 (150=4, 39=4) |
35=H | OrderStatusRequest | 11=ClOrdID (または 37=OrderID)、790=OrdStatusReqID | 150=I (注文ステータス) または 150=8, 103=5 (不明な注文) を含む 35=8 |
35=AN | RequestForPositions | 710=PosReqID、724=0 (ポジション)、1=Account、55=Symbol | 721=PosMaintRptID、728=0、704=LongQty、705=ShortQty、730=SettlePrice を含む PositionReport (35=AP) |
35=XLQ | LimitQuery | 25003=ReqID | 25005=ORDERS (500/秒) および 25005=CONNECTIONS (20/アカウント) を含む LimitResponse (35=XLR) |
4. リアルタイムドロップコピーとリコンサイル (797=Y / 9406=Y)
ドロップコピーは、プライムブローカー、リスク管理エンジン、およびバックオフィスのリコンサイルシステムに対して、FIX 注文発注セッションおよび REST/HTTP API 注文の双方にわたるすべての ExecutionReport (35=8) イベントのリアルタイム読み取り専用ストリームを提供します。
- ユニバーサル購読フラグ: ポート
9878に接続し、797=Y(CopyMsgIndicator)、9406=Y(DropCopyFlag)、または50=DROPCOPY(SenderSubID) を指定してLogon (35=A)を送信します。 - デュアルタグアウトバウンドスタンプ: すべてのドロップコピー
35=8フレームには、完全な手数料/リベートの内訳 (381=GrossTradeAmt、1057=AggressorIndicator、136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4、20000=TradeFeeRebateAmt) に加えて、57=DROPCOPY、797=Y、および9406=Yが付与されます。 - 厳格な読み取り専用保護: ドロップコピーセッションで
35=D、35=F、35=G、または35=qを送信しようとする試みは、直ちにBusinessMessageReject (35=j, 380=4)によって拒否されます。 - シーケンスギャップリカバリ: 送信ドロップコピーレポートはセッションシーケンスストアに保持され、
PossDupFlag (43=Y)を指定したResendRequest (35=2)により再生できます。
5. マーケットデータ (35=V, W, X, Y) とリファレンスデータ (35=x, y, h)
専用のマーケットデータストリーミングを行うにはポート 9879 に接続するか、SecurityListRequest (35=x) を介して銘柄仕様を照会します。
- MarketDataRequest (
35=V):262=MDReqID、263=1(スナップショット + 更新) または0(スナップショット)、264=1(最良気配) または20(全板情報)、および55=Symbolを送信します。MarketDataSnapshotFullRefresh (35=W)に続いてMarketDataIncrementalRefresh (35=X)が返却されます。不明なシンボルにはMarketDataRequestReject (35=Y, 281=0)が返却されます。 - SecurityListRequest (
35=x):320=SecurityReqIDと、559=0(55に単一銘柄) または559=4(全銘柄) を送信します。ティックサイズ (969=MinPriceIncrement)、最小/最大注文数量 (8000/8001)、および小数点精度 (8002/8003) を含むSecurityList (35=y)が返却されます。 - TradingSessionStatus (
35=h):340=2(24時間365日オープン) または340=1(中断) を返します。
QuickFIX クライアント設定テンプレート (gaiaex_fix.cfg)
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=5
FileStorePath=./store
FileLogPath=./log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=Y
DataDictionary=./fix-dictionary.xml
ValidateUserDefinedFields=N
ValidateFieldsOutOfOrder=N
HeartBtInt=30
[SESSION]
BeginString=FIX.4.4
SenderCompID=INST_CLIENT_OE
TargetCompID=GAIAEX_PROD
SocketConnectHost=10.10.0.51
SocketConnectPort=9878
ResetOnLogon=N
[SESSION]
BeginString=FIX.4.4
SenderCompID=INST_CLIENT_DC
TargetCompID=GAIAEX_PROD
SenderSubID=DROPCOPY
SocketConnectHost=10.10.0.51
SocketConnectPort=9878
ResetOnLogon=N