Institusyonal na FIX API (4.2 / 4.4 / 5.0 / 5.2)
Institusyonal na koneksyon sa FIX 4.2, 4.4, 5.0, at 5.2: Order Entry (:9878), Real-Time Drop Copy (797=Y / 9406=Y), Market Data (:9879), at QuickFIX XML schema.
SKILL.mdDrop-in Claude Code skill na may HMAC-SHA256 signing, /fapi/v1 at /fapi/v2 schemas, at mga panuntunan sa pag-redact ng lihim.
AGENTS.mdDrop-in repository AGENTS.md para sa OpenAI Codex CLI — mga patakaran sa laki ng tick, mga limitasyon sa rate ng paggamit, at mga hangganan ng self-custody.
AGY.mdGoogle Antigravity (agy) at Gemini agent spec na may mga napatunayang async Python WebSocket + REST execution template.
llms.txtIsang-URL na machine-readable index ng lahat ng pahina ng dokumentasyon ng GaiaEx, OpenAPI 3.0 schema, at Postman collection.
1. Arkitektura at Pangkalahatang-ideya ng Multi-Version
Ang GaiaEx Native C++26 Institutional FIX Gateway ay nagbibigay ng tiyak, may napakababang latency na Order Entry, Real-Time Drop Copy, Position & Order Inquiry, at L1/L2 Market Data streaming sa pamamagitan ng mga persistent na TCP/TLS session.
I-download ang QuickFIX / OnixS XML Schema: /fix-dictionary.xml — tugma sa QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero, at mga institusyonal na OMS platform. I-configure ang iyong client engine gamit ang ValidateUserDefinedFields=N at ValidateFieldsOutOfOrder=N para sa forward compatibility.
| Uri ng Gateway Session | Port | Mga Sinusuportahang Bersyon | Mga Kakayahan | Patakaran sa Pag-access |
|---|---|---|---|---|
| Order Management (OE) | 9878 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Order entry (35=D), Cancel (35=F), Amend (35=G), Mass Cancel (35=q), Order Status (35=H), Positions (35=AN), Rate Limits (35=XLQ), Instruments (35=x) | Read + Trade API Key |
| Drop Copy (DC) | 9878 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Real-time consolidated ExecutionReport (35=8) stream na naka-tag gamit ang 797=Y at 9406=Y sa lahat ng FIX at REST/HTTP order | Read-Only Enforced (tinatanggihan ng 35=j ang mga order) |
| Market Data (MD) | 9879 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Real-time L1/L2 Snapshot (35=W), IncrementalRefresh (35=X), at MarketDataRequestReject (35=Y) | Read-Only Enforced (tinatanggihan ng 35=j ang mga order) |
Negosasyon ng Bersyon & Mga Panuntunan sa Wire
| Bersyon ng FIX | BeginString (8) | Logon Tag (35=A) | App Header Tag | Trade ExecType (150) | Panuntunan ng ExecTransType (20) |
|---|---|---|---|---|---|
| FIX 4.2 | 8=FIX.4.2 | Wala | Wala | 150=1 (Partial), 150=2 (Fill) | Kinakailangan (20=0 Bago, 20=3 Status) |
| FIX 4.4 | 8=FIX.4.4 | Wala | Wala | 150=F (Trade) kasama ang 39=1/2 | Ipinagbabawal (tinanggihan sa pamamagitan ng 35=3, 371=20, 373=2) |
| FIX 5.0 | 8=FIXT.1.1 | 1137=7 | 1128=7 | 150=F (Trade) kasama ang 39=1/2 | Ipinagbabawal (tinanggihan sa pamamagitan ng 35=3, 371=20, 373=2) |
| FIX 5.2 (5.0 SP2) | 8=FIXT.1.1 | 1137=9 | 1128=9 | 150=F (Trade) kasama ang 39=1/2 | Ipinagbabawal (tinanggihan sa pamamagitan ng 35=3, 371=20, 373=2) |
2. Pamamahala ng Session & Pag-logon gamit ang HMAC-SHA256 (35=A)
Bawat FIX session ay nagsisimula sa isang Logon (35=A) frame na napatotohanan sa pamamagitan ng iyong GaiaEx API Key (Tag 553), API Secret (Tag 554), at isang lowercase hex na HMAC-SHA256 lagda sa RawData (Tag 96).
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()| Tag | Pangalan ng Field | Kinakailangan | Paglalarawan |
|---|---|---|---|
98 | EncryptMethod | Y | 0 = Wala / TLS transport encryption |
108 | HeartBtInt | Y | Heartbeat interval sa mga segundo (inirerekomenda: 30) |
141 | ResetSeqNumFlag | N | Y = I-reset ang mga sequence number sa 1; N = Ipagpatuloy ang intraday sequence state |
553 | Username | Y | GaiaEx API Key |
554 | Password | Y | GaiaEx API Secret |
96 | RawData | Y | 64-char hex HMAC-SHA256 lagda sa ibabaw ng 52|A|34|49|56 |
797 / 9406 | CopyMsgIndicator / DropCopyFlag | N | Itakda ang 797=Y, 9406=Y, o 50=DROPCOPY upang magrehistro ng read-only na Drop Copy session |
1409 | SessionStatus | Out | Ibinabalik sa 35=A / 35=5: 0=Aktibo, 4=Kumpleto ang Logout, 5=Maling Auth, 6=Masyadong Mababa ang Seq, 101=100M Seq Cap |
Gap Recovery (35=2 & 35=4) & Cancel-on-Disconnect (CoD)
- Inbound Gap Detection: Kung ang dumarating na mensahe ay naglalaman ng
MsgSeqNum (34) > ExpectedSeqNum, agad na naglalabas ang gateway ngResendRequest (35=2, 7=ExpectedSeqNum, 16=0). KungMsgSeqNum (34) < ExpectedSeqNumnang walangPossDupFlag (43=Y), naglalabas ang gateway ngLogout (35=5, 1409=6)at isinasara ang socket. - Outbound Replay: Kapag ipinadala ng client ang
ResendRequest (35=2), muling pinapatugtog ng gateway ang lahat ng application message (kabilang ang mga Drop Copy35=8report) na may kasamang43=Yat122=OrigSendingTime, at pinagsasama ang mga administrative frame saSequenceReset-GapFill (35=4, 123=Y). - Awtomatikong Cancel-on-Disconnect (CoD): Kapag nadiskonekta ang isang Order Management session, lahat ng nakabinbing resting order (
OrdStatus 39=0) na inilagay sa session na iyon ay awtomatikong kinakansela (150=4, 39=4, 103=3020) at ibinobrodkast nang real time sa anumang aktibong Drop Copy session.
3. Order Entry, Pagbabago, Pagkansela & Pagtatanong (35=D, G, F, q, H, AN, XLQ)
NewOrderSingle (35=D)
| Tag | Pangalan ng Field | Kinakailangan | Mga Sinusuportahang Halaga & Mga Tala |
|---|---|---|---|
11 | ClOrdID | Y | Natatanging pagkakakilanlan ng order na itinalaga ng kliyente (hanggang 31 titik/numero) |
1 | Account | N | Address ng self-custody vault (0x...) o pagkakakilanlan ng sub-account |
50 | SenderSubID | N | ID ng trader o istratehiya; ipinapantay pabalik sa TargetSubID (57) sa 35=8 |
55 | Symbol | Y | USDC Perps (BTCUSDC, ETHUSDC, SOLUSDC), USDT Perps (BTCUSDT, ETHUSDT), RWA Perps (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA) |
54 | Side | Y | 1 = Buy, 2 = Sell |
38 | OrderQty | Y | Dami ng order sa base asset (sumusuporta sa 4-decimal fractional precision, hal. 0.0050) |
40 | OrdType | Y | 1 = Market, 2 = Limit, 4 = Stop Limit (nangangailangan ng 99=StopPx), p = Post-Only (o 18=6) |
44 | Price | C | Limit na presyo (kinakailangan para sa 40=2, 40=4, 40=p) |
59 | TimeInForce | N | 1 = GTC (default), 3 = IOC, 4 = FOK, 5 = GTX |
544 | CashMargin | N | 1 = Cash (default), 2 = Margin Open, 3 = Margin Close |
Amend (35=G), Cancel (35=F), Mass Cancel (35=q), Status (35=H), Positions (35=AN) & Limits (35=XLQ)
| MsgType | Pangalan ng Mensahe | Mga Pangunahing Request Tag | Tugon ng Gateway |
|---|---|---|---|
35=G | OrderCancelReplaceRequest | 11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price | 35=8 na may kasamang 150=5, 39=5 (Replaced) o 35=9 (434=2) |
35=F | OrderCancelRequest | 11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side | Dalawang-hakbang na 35=8: 150=6, 39=6 (Pending Cancel) → 150=4, 39=4 (Canceled), o 35=9 (434=1) |
35=q | OrderMassCancelRequest | 11=ClOrdID, 530=7 (Kanselahin ang lahat ng order) | 35=r (1369=MassActionReportID, 531=7) + isang 35=8 (150=4, 39=4) bawat kinanselang order |
35=H | OrderStatusRequest | 11=ClOrdID (o 37=OrderID), 790=OrdStatusReqID | 35=8 na may kasamang 150=I (Order Status) o 150=8, 103=5 (Hindi kilalang order) |
35=AN | RequestForPositions | 710=PosReqID, 724=0 (Positions), 1=Account, 55=Symbol | PositionReport (35=AP) na may kasamang 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice |
35=XLQ | LimitQuery | 25003=ReqID | LimitResponse (35=XLR) na may kasamang 25005=ORDERS (500/s) at 25005=CONNECTIONS (20/account) |
4. Real-Time Drop Copy & Pagkakasundo (797=Y / 9406=Y)
Ang Drop Copy ay nagbibigay sa mga prime broker, risk engine, at back-office reconciliation system ng isang real-time, read-only stream ng lahat ng kaganapan sa ExecutionReport (35=8) sa parehong FIX Order Entry session at REST/HTTP API order.
- Mga Universal Subscription Flag: Kumonekta sa port
9878at ipadala angLogon (35=A)nang may797=Y(CopyMsgIndicator),9406=Y(DropCopyFlag), o50=DROPCOPY(SenderSubID). - Dual-Tag Outbound Stamping: Bawat Drop Copy
35=8frame ay may kasamang57=DROPCOPY,797=Y, at9406=Y, kasama ang buong detalye ng bayarin/rebate (381=GrossTradeAmt,1057=AggressorIndicator,136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4,20000=TradeFeeRebateAmt). - Mahigpit na Read-Only na Proteksyon: Anumang pagtatangkang magsumite ng
35=D,35=F,35=G, o35=qsa isang Drop Copy session ay agad na tatanggihan sa pamamagitan ngBusinessMessageReject (35=j, 380=4). - Sequence Gap Recovery: Ang mga papalabas na ulat ng Drop Copy ay pinananatili sa session sequence store at maaaring muling patugtugin gamit ang
ResendRequest (35=2)kasama angPossDupFlag (43=Y).
5. Market Data (35=V, W, X, Y) & Reference Data (35=x, y, h)
Kumonekta sa port 9879 para sa nakatalagang Market Data streaming o magtanong ng mga detalye ng instrumento sa pamamagitan ng SecurityListRequest (35=x).
- MarketDataRequest (
35=V): Ipadala ang262=MDReqID,263=1(Snapshot + Updates) o0(Snapshot),264=1(Top of Book) o20(Full Depth), at55=Symbol. Nagbabalik ngMarketDataSnapshotFullRefresh (35=W)na sinusundan ngMarketDataIncrementalRefresh (35=X). Ang mga hindi kilalang simbolo ay nagbabalik ngMarketDataRequestReject (35=Y, 281=0). - SecurityListRequest (
35=x): Ipadala ang320=SecurityReqIDat559=0(solong simbolo sa55) o559=4(lahat ng instrumento). Nagbabalik ngSecurityList (35=y)na may tick size (969=MinPriceIncrement), min/max order quantity (8000/8001), at decimal precision (8002/8003). - TradingSessionStatus (
35=h): Nagbabalik ng340=2(Bukas nang 24x7x365) o340=1(Nakahinto).
Template ng Configuration para sa QuickFIX Client (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