Институционалдық 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 Native C++26 институционалдық FIX шлюзі тұрақты TCP/TLS сессиялары арқылы детерминирленген, өте төмен кідірісті Order Entry, нақты уақыттағы Drop Copy, Position & Order Inquiry және L1/L2 нарық деректерінің (Market Data) стримингін қамтамасыз етеді.
QuickFIX / OnixS XML сұлбасын жүктеп алу: /fix-dictionary.xml — QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero және институционалдық OMS платформаларымен үйлесімді. Алға қарай үйлесімділік үшін клиенттік қозғалтқышыңызды ValidateUserDefinedFields=N және ValidateFieldsOutOfOrder=N арқылы конфигурациялаңыз.
| Шлюз сессиясының түрі | Порт | Қолдау көрсетілетін нұсқалар | Мүмкіндіктер | Қолжетімділік саясаты |
|---|---|---|---|---|
| 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 | Барлық FIX және REST/HTTP тапсырыстары бойынша 797=Y және 9406=Y тегтерімен белгіленген нақты уақыттағы шоғырландырылған ExecutionReport (35=8) ағыны | Read-Only Enforced (35=j тапсырыстарды қабылдамайды) |
| Market Data (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) | Read-Only Enforced (35=j тапсырыстарды қабылдамайды) |
Нұсқаларды келісу және желілік ережелер
| FIX нұсқасы | BeginString (8) | Logon тегі (35=A) | App Header тегі | Сауда 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 (Trade) 39=1/2 бірге | Тыйым салынған (35=3, 371=20, 373=2 арқылы қабылданбайды) |
| FIX 5.0 | 8=FIXT.1.1 | 1137=7 | 1128=7 | 150=F (Trade) 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 (Trade) 39=1/2 бірге | Тыйым салынған (35=3, 371=20, 373=2 арқылы қабылданбайды) |
2. Сессияны басқару және HMAC-SHA256 Logon (35=A)
Әрбір FIX сессиясы GaiaEx API кілті (Tag 553), API құпиясы (Tag 554) және RawData (Tag 96) ішіндегі кіші әріпті он алтылық 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 | Секундтағы Heartbeat аралығы (ұсынылады: 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 таңбалы он алтылық HMAC-SHA256 қолтаңбасы |
797 / 9406 | CopyMsgIndicator / DropCopyFlag | N | Тек оқуға арналған Drop Copy сессиясын тіркеу үшін 797=Y, 9406=Y немесе 50=DROPCOPY орнатыңыз |
1409 | SessionStatus | Out | 35=A / 35=5 ішінде қайтарылады: 0=Белсенді, 4=Шығу аяқталды, 5=Қате аутентификация, 6=Реттік нөмір тым төмен, 101=100M реттік лимиті |
Үзілістерді қалпына келтіру (35=2 & 35=4) және Cancel-on-Disconnect (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)жіберген кезде, шлюз барлық қолданбалы хабарламаларды (соның ішінде Drop Copy35=8есептерін)43=Yжәне122=OrigSendingTimeарқылы қайта ойнатады және әкімшілік кадрлардыSequenceReset-GapFill (35=4, 123=Y)ішіне біріктіреді. - Ажыратылғанда автоматты түрде тоқтату (CoD): Order Management сессиясы ажыратылған кезде, сол сессияда орналастырылған барлық ашық күтудегі тапсырыстар (
OrdStatus 39=0) автоматты түрде тоқтатылады (150=4, 39=4, 103=3020) және кез келген белсенді Drop Copy сессиясына нақты уақытта таратылады.
3. Тапсырыс беру, өзгерту, тоқтату және сұрау (35=D, G, F, q, H, AN, XLQ)
NewOrderSingle (35=D)
| Тег | Өріс атауы | Мінд. | Қолдау көрсетілетін мәндер және ескертпелер |
|---|---|---|---|
11 | ClOrdID | Y | Клиент тағайындаған бірегей тапсырыс идентификаторы (31 таңбаға дейін) |
1 | Account | N | Өздігінен сақталатын қойма мекенжайы (0x...) немесе қосалқы шот идентификаторы |
50 | SenderSubID | N | Трейдер немесе стратегия идентификаторы; 35=8 ішіндегі TargetSubID (57) арқылы қайтарылады |
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 = Сатып алу, 2 = Сату |
38 | OrderQty | Y | Базалық активтегі тапсырыс көлемі (4 таңбалы бөлшек дәлдікті қолдайды, мысалы, 0.0050) |
40 | OrdType | Y | 1 = Нарықтық, 2 = Лимиттік, 4 = Stop Limit (99=StopPx талап етеді), p = Post-Only (немесе 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 = Cash (әдепкі), 2 = Margin Open, 3 = Margin Close |
Өзгерту (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 | Екі қадамды 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) + әр тоқтатылған тапсырыс үшін бір 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. Нақты уақыттағы Drop Copy және салыстыру (797=Y / 9406=Y)
Drop Copy прайм-брокерлерді, тәуекел жүйелерін және бэк-офистік салыстыру жүйелерін FIX Order Entry сессиялары мен REST/HTTP API тапсырыстары бойынша барлық ExecutionReport (35=8) оқиғаларының нақты уақыттағы, тек оқуға арналған ағынымен қамтамасыз етеді.
- Әмбебап жазылу жалаушалары:
9878портына қосылып,797=Y(CopyMsgIndicator),9406=Y(DropCopyFlag) немесе50=DROPCOPY(SenderSubID) барLogon (35=A)жіберіңіз. - Екі тегті шығыс таңбалау: Әрбір Drop Copy
35=8кадрында57=DROPCOPY,797=Yжәне9406=Y, сондай-ақ толық комиссия/жеңілдік мәліметтері (381=GrossTradeAmt,1057=AggressorIndicator,136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4,20000=TradeFeeRebateAmt) болады. - Тек оқуға қатаң қорғау: Drop Copy сессиясында
35=D,35=F,35=Gнемесе35=qжіберудің кез келген әрекетіBusinessMessageReject (35=j, 380=4)арқылы дереу қабылданбайды. - Реттік үзілістерді қалпына келтіру: Шығыс Drop Copy есептері сессия ретінің сақтау орнында сақталады және оларды
PossDupFlag (43=Y)барResendRequest (35=2)арқылы қайта ойнатуға болады.
5. Нарық деректері (35=V, W, X, Y) және анықтамалық деректер (35=x, y, h)
Арнайы Market Data ағыны үшін 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(24x7x365 ашық) немесе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