GaiaExGaiaEx
API

Instytucjonalne FIX API (4.2 / 4.4 / 5.0 / 5.2)

Łączność instytucjonalna FIX 4.2, 4.4, 5.0 i 5.2: wprowadzanie zleceń — Order Entry (:9878), Drop Copy w czasie rzeczywistym (797=Y / 9406=Y), dane rynkowe — Market Data (:9879) oraz schemat QuickFIX XML.

GOTOWOŚĆ NA AGENTÓW AIWyposaż Claude Code, OpenAI Codex i Antigravity (`agy`) w oficjalne umiejętności GaiaEx
CLAUDE CODESKILL.md
Claude SKILL.md

Gotowa do wdrożenia umiejętność dla Claude Code z podpisywaniem HMAC-SHA256, schematami /fapi/v1 i /fapi/v2 oraz mechanizmami ochrony przed ujawnieniem sekretów.

Tekst źródłowy ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

Gotowy plik AGENTS.md dla repozytorium pod OpenAI Codex CLI — reguły wielkości kroku notowania (tick-size), limity zapytań (rate limits) i granice self-custody.

Tekst źródłowy ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

Specyfikacja agenta Google Antigravity (agy) i Gemini ze zweryfikowanymi szablonami asynchronicznej egzekucji Python WebSocket + REST.

Tekst źródłowy ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

Jednolity, czytelny maszynowo indeks pod jednym adresem URL zawierający wszystkie strony dokumentacji GaiaEx, schemat OpenAPI 3.0 oraz kolekcję Postman.

Tekst źródłowy ↗

1. Architektura i przegląd wielu wersji

Natywna instytucjonalna brama FIX C++26 platformy GaiaEx zapewnia deterministyczne, ultraniskie opóźnienia przy składaniu zleceń (Order Entry), transmisji Drop Copy w czasie rzeczywistym, zapytaniach o pozycje i zlecenia oraz strumieniowaniu danych rynkowych L1/L2 za pośrednictwem trwałych sesji TCP/TLS.

Pobierz schemat XML QuickFIX / OnixS: /fix-dictionary.xml — kompatybilny z QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero oraz instytucjonalnymi platformami OMS. Skonfiguruj silnik klienta z ValidateUserDefinedFields=N i ValidateFieldsOutOfOrder=N w celu zapewnienia kompatybilności w przód.

Typ sesji bramyPortObsługiwane wersjeMożliwościZasady dostępu
Order Management (OE)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Składanie zleceń (35=D), anulowanie (35=F), modyfikacja (35=G), masowe anulowanie (35=q), status zlecenia (35=H), pozycje (35=AN), limity zapytań (35=XLQ), instrumenty (35=x)Klucz API Read + Trade
Drop Copy (DC)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Skonsolidowany strumień ExecutionReport (35=8) w czasie rzeczywistym, oznaczony tagami 797=Y i 9406=Y dla wszystkich zleceń FIX oraz REST/HTTPWymuszony tryb tylko do odczytu (35=j odrzuca zlecenia)
Market Data (MD)9879FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Strumienie w czasie rzeczywistym L1/L2 Snapshot (35=W), IncrementalRefresh (35=X) oraz MarketDataRequestReject (35=Y)Wymuszony tryb tylko do odczytu (35=j odrzuca zlecenia)

Negocjacja wersji i reguły transmisji (Wire Rules)

Wersja FIXBeginString (8)Tag logowania (35=A)Tag nagłówka aplikacjiExecType (150) transakcjiReguła ExecTransType (20)
FIX 4.28=FIX.4.2BrakBrak150=1 (Częściowe), 150=2 (Realizacja)Wymagane (20=0 Nowe, 20=3 Status)
FIX 4.48=FIX.4.4BrakBrak150=F (Transakcja) z 39=1/2Zabronione (odrzucane przez 35=3, 371=20, 373=2)
FIX 5.08=FIXT.1.11137=71128=7150=F (Transakcja) z 39=1/2Zabronione (odrzucane przez 35=3, 371=20, 373=2)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=9150=F (Transakcja) z 39=1/2Zabronione (odrzucane przez 35=3, 371=20, 373=2)

2. Zarządzanie sesją i logowanie HMAC-SHA256 (35=A)

Każda sesja FIX rozpoczyna się od ramki Logon (35=A) uwierzytelnianej za pomocą Twojego klucza API GaiaEx (Tag 553), sekretu API (Tag 554) oraz podpisu HMAC-SHA256 zapisanego małymi literami w formacie szesnastkowym w 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()
TagNazwa polaWym.Opis
98EncryptMethodT0 = Brak / szyfrowanie warstwy transportowej TLS
108HeartBtIntTInterwał heartbeat w sekundach (zalecane: 30)
141ResetSeqNumFlagNY = Reset numerów sekwencyjnych do 1; N = Wznowienie stanu sekwencji w ciągu dnia
553UsernameTKlucz API GaiaEx
554PasswordTSekret API GaiaEx
96RawDataT64-znakowy szesnastkowy podpis HMAC-SHA256 z 52|A|34|49|56
797 / 9406CopyMsgIndicator / DropCopyFlagNUstaw 797=Y, 9406=Y lub 50=DROPCOPY, aby zarejestrować sesję Drop Copy w trybie tylko do odczytu
1409SessionStatusWyjścieZwracane w 35=A / 35=5: 0=Aktywna, 4=Wylogowanie zakończone, 5=Błędne uwierzytelnienie, 6=Zbyt niski numer sekwencji, 101=Limit 100 mln numerów sekwencji

Odzyskiwanie luk w sekwencji (35=2 i 35=4) oraz Cancel-on-Disconnect (CoD)

  • Wykrywanie luki przychodzącej: Jeśli komunikat przychodzący zawiera MsgSeqNum (34) > ExpectedSeqNum, brama natychmiast wysyła ResendRequest (35=2, 7=ExpectedSeqNum, 16=0). Jeśli MsgSeqNum (34) < ExpectedSeqNum bez PossDupFlag (43=Y), brama wysyła Logout (35=5, 1409=6) i zamyka gniazdo.
  • Powtórzenie wychodzące (Replay): Gdy klient wysyła ResendRequest (35=2), brama powtarza wszystkie komunikaty aplikacyjne (w tym raporty Drop Copy 35=8) z 43=Y i 122=OrigSendingTime, a także scala ramki administracyjne w SequenceReset-GapFill (35=4, 123=Y).
  • Automatyczne anulowanie przy rozłączeniu (CoD): Po rozłączeniu sesji Order Management wszystkie otwarte, oczekujące zlecenia (OrdStatus 39=0) złożone w ramach tej sesji są automatycznie anulowane (150=4, 39=4, 103=3020) i transmitowane w czasie rzeczywistym do każdej aktywnej sesji Drop Copy.

3. Składanie, modyfikacja, anulowanie i zapytania o zlecenia (35=D, G, F, q, H, AN, XLQ)

NewOrderSingle (35=D)

TagNazwa polaWym.Obsługiwane wartości i uwagi
11ClOrdIDTUnikalny identyfikator zlecenia nadany przez klienta (do 31 znaków)
1AccountNAdres skarbca self-custody (0x...) lub identyfikator podkonta
50SenderSubIDNIdentyfikator tradera lub strategii; odsyłany w TargetSubID (57) w 35=8
55SymbolTUSDC Perps (BTCUSDC, ETHUSDC, SOLUSDC), USDT Perps (BTCUSDT, ETHUSDT), RWA Perps (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA)
54SideT1 = Kupno, 2 = Sprzedaż
38OrderQtyTWielkość zlecenia w aktywie bazowym (obsługuje precyzję ułamkową do 4 miejsc po przecinku, np. 0.0050)
40OrdTypeT1 = Market, 2 = Limit, 4 = Stop Limit (wymaga 99=StopPx), p = Post-Only (lub 18=6)
44PriceWCena limit (wymagana dla 40=2, 40=4, 40=p)
59TimeInForceN1 = GTC (domyślnie), 3 = IOC, 4 = FOK, 5 = GTX
544CashMarginN1 = Gotówka (domyślnie), 2 = Otwarcie pozycji z depozytem, 3 = Zamknięcie pozycji z depozytem

Modyfikacja (35=G), Anulowanie (35=F), Masowe anulowanie (35=q), Status (35=H), Pozycje (35=AN) i Limity (35=XLQ)

MsgTypeNazwa komunikatuKluczowe tagi żądaniaOdpowiedź bramy
35=GOrderCancelReplaceRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price35=8 z 150=5, 39=5 (Zastąpiono) lub 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=SideDwuetapowe 35=8: 150=6, 39=6 (Oczekiwanie na anulowanie) → 150=4, 39=4 (Anulowano) lub 35=9 (434=1)
35=qOrderMassCancelRequest11=ClOrdID, 530=7 (Anuluj wszystkie zlecenia)35=r (1369=MassActionReportID, 531=7) + jeden 35=8 (150=4, 39=4) na każde anulowane zlecenie
35=HOrderStatusRequest11=ClOrdID (lub 37=OrderID), 790=OrdStatusReqID35=8 z 150=I (Status zlecenia) lub 150=8, 103=5 (Nieznane zlecenie)
35=ANRequestForPositions710=PosReqID, 724=0 (Pozycje), 1=Account, 55=SymbolPositionReport (35=AP) z 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice
35=XLQLimitQuery25003=ReqIDLimitResponse (35=XLR) z 25005=ORDERS (500/s) oraz 25005=CONNECTIONS (20/konto)

4. Drop Copy w czasie rzeczywistym i uzgadnianie (797=Y / 9406=Y)

Drop Copy zapewnia głównym brokerom (prime brokers), silnikom ryzyka i systemom uzgadniania back-office dostęp do strumienia w czasie rzeczywistym (tylko do odczytu) ze wszystkimi zdarzeniami ExecutionReport (35=8) zarówno z sesji FIX Order Entry, jak i zleceń API REST/HTTP.

  • Uniwersalne flagi subskrypcji: Połącz się z portem 9878 i wyślij Logon (35=A) z 797=Y (CopyMsgIndicator), 9406=Y (DropCopyFlag) lub 50=DROPCOPY (SenderSubID).
  • Podwójne znakowanie tagami wychodzącymi: Każda ramka Drop Copy 35=8 zawiera 57=DROPCOPY, 797=Y oraz 9406=Y, a także pełne zestawienie opłat/rabatów (381=GrossTradeAmt, 1057=AggressorIndicator, 136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4, 20000=TradeFeeRebateAmt).
  • Ścisła ochrona trybu tylko do odczytu: Każda próba przesłania 35=D, 35=F, 35=G lub 35=q w ramach sesji Drop Copy jest natychmiast odrzucana przez BusinessMessageReject (35=j, 380=4).
  • Odzyskiwanie luk w sekwencji: Wychodzące raporty Drop Copy są utrwalane w magazynie sekwencji sesji i mogą być powtórzone za pośrednictwem ResendRequest (35=2) z PossDupFlag (43=Y).

5. Dane rynkowe (35=V, W, X, Y) i dane referencyjne (35=x, y, h)

Połącz się z portem 9879, aby korzystać z dedykowanego strumieniowania danych rynkowych lub odpytywać o specyfikacje instrumentów za pośrednictwem SecurityListRequest (35=x).

  • MarketDataRequest (35=V): Wyślij 262=MDReqID, 263=1 (Migawka + Aktualizacje) lub 0 (Migawka), 264=1 (Szczyt księgi) lub 20 (Pełna głębokość) oraz 55=Symbol. Zwraca MarketDataSnapshotFullRefresh (35=W), a następnie MarketDataIncrementalRefresh (35=X). Nieznane symbole zwracają MarketDataRequestReject (35=Y, 281=0).
  • SecurityListRequest (35=x): Wyślij 320=SecurityReqID oraz 559=0 (pojedynczy symbol w 55) lub 559=4 (wszystkie instrumenty). Zwraca SecurityList (35=y) z wielkością kroku notowania (969=MinPriceIncrement), min./maks. wielkością zlecenia (8000/8001) oraz precyzją dziesiętną (8002/8003).
  • TradingSessionStatus (35=h): Zwraca 340=2 (Otwarte 24x7x365) lub 340=1 (Wstrzymane).

Szablon konfiguracji klienta 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