GaiaExGaiaEx
API

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

Connectivité institutionnelle FIX 4.2, 4.4, 5.0 et 5.2 : saisie d'ordres (:9878), Drop Copy en temps réel (797=Y / 9406=Y), données de marché (:9879) et schéma XML QuickFIX.

PRÊT POUR LES AGENTS IAÉquipez Claude Code, OpenAI Codex et Antigravity (`agy`) des compétences officielles de GaiaEx
CLAUDE CODESKILL.md
Claude SKILL.md

Skill Claude Code prête à l'emploi avec signature HMAC-SHA256, schémas /fapi/v1 et /fapi/v2, et mécanismes de masquage des secrets.

Brut ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

Fichier AGENTS.md prêt à intégrer pour la CLI OpenAI Codex — règles de taille de tick, quotas de limitation de débit et limites de garde personnelle.

Brut ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

Spécification d'agent pour Google Antigravity (agy) & Gemini avec modèles d'exécution asynchrones vérifiés en Python pour WebSocket + REST.

Brut ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

Index unique lisible par machine de toutes les pages de documentation GaiaEx, schéma OpenAPI 3.0 et collection Postman.

Brut ↗

1. Architecture et aperçu multi-version

La passerelle FIX institutionnelle native en C++26 de GaiaEx offre une saisie d'ordres déterministe à ultra-faible latence, du Drop Copy en temps réel, l'interrogation des positions & ordres, ainsi que la diffusion des données de marché L1/L2 via des sessions TCP/TLS persistantes.

Télécharger le schéma XML QuickFIX / OnixS : /fix-dictionary.xml — compatible avec QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero et les plateformes OMS institutionnelles. Configurez votre moteur client avec ValidateUserDefinedFields=N et ValidateFieldsOutOfOrder=N pour assurer la compatibilité future.

Type de session de passerellePortVersions prises en chargeFonctionnalitésPolitique d'accès
Order Management (OE)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Saisie d'ordres (35=D), Annulation (35=F), Modification (35=G), Annulation massive (35=q), Statut d'ordre (35=H), Positions (35=AN), Limites de débit (35=XLQ), Instruments (35=x)Clé API Lecture + Trading
Drop Copy (DC)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Flux ExecutionReport (35=8) consolidé en temps réel balisé avec 797=Y et 9406=Y pour tous les ordres FIX et REST/HTTPLecture seule appliquée (35=j rejette les ordres)
Market Data (MD)9879FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Snapshot (35=W), IncrementalRefresh (35=X) et MarketDataRequestReject (35=Y) L1/L2 en temps réelLecture seule appliquée (35=j rejette les ordres)

Négociation de version & règles de protocole réseau

Version FIXBeginString (8)Tag de Logon (35=A)Tag d'en-tête d'applicationTrade ExecType (150)Règle ExecTransType (20)
FIX 4.28=FIX.4.2AucunAucun150=1 (Partiel), 150=2 (Exécution totale)Obligatoire (20=0 New, 20=3 Status)
FIX 4.48=FIX.4.4AucunAucun150=F (Trade) avec 39=1/2Interdit (rejeté via 35=3, 371=20, 373=2)
FIX 5.08=FIXT.1.11137=71128=7150=F (Trade) avec 39=1/2Interdit (rejeté via 35=3, 371=20, 373=2)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=9150=F (Trade) avec 39=1/2Interdit (rejeté via 35=3, 371=20, 373=2)

2. Gestion de session & Logon HMAC-SHA256 (35=A)

Chaque session FIX commence par une trame Logon (35=A) authentifiée via votre clé API GaiaEx (Tag 553), votre secret d'API (Tag 554), et une signature HMAC-SHA256 hexadécimale en minuscules dans 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()
TagNom du champReqDescription
98EncryptMethodO0 = Aucun / chiffrement de transport TLS
108HeartBtIntOIntervalle de heartbeat en secondes (recommandé : 30)
141ResetSeqNumFlagNY = Réinitialiser les numéros de séquence à 1 ; N = Reprendre l'état des séquences intrajournalières
553UsernameOClé API GaiaEx
554PasswordOSecret d'API GaiaEx
96RawDataOSignature HMAC-SHA256 hexadécimale de 64 caractères sur 52|A|34|49|56
797 / 9406CopyMsgIndicator / DropCopyFlagNDéfinir 797=Y, 9406=Y ou 50=DROPCOPY pour enregistrer une session Drop Copy en lecture seule
1409SessionStatusSortieRenvoyé dans 35=A / 35=5 : 0=Actif, 4=Déconnexion effectuée, 5=Authentification invalide, 6=Séquence trop basse, 101=Plafond de séquence à 100M

Récupération d'écarts (35=2 & 35=4) & Annulation sur déconnexion (CoD)

  • Détection d'écart entrant : Si un message entrant comporte MsgSeqNum (34) > ExpectedSeqNum, la passerelle émet immédiatement ResendRequest (35=2, 7=ExpectedSeqNum, 16=0). Si MsgSeqNum (34) < ExpectedSeqNum sans PossDupFlag (43=Y), la passerelle émet Logout (35=5, 1409=6) et ferme le socket.
  • Rejeu sortant : Lorsque le client envoie ResendRequest (35=2), la passerelle rejoue tous les messages applicatifs (y compris les rapports Drop Copy 35=8) avec 43=Y et 122=OrigSendingTime, et regroupe les trames administratives dans SequenceReset-GapFill (35=4, 123=Y).
  • Annulation automatique sur déconnexion (CoD) : Lorsqu'une session Order Management se déconnecte, tous les ordres ouverts en attente (OrdStatus 39=0) passés sur cette session sont automatiquement annulés (150=4, 39=4, 103=3020) et diffusés en temps réel à toute session Drop Copy active.

3. Saisie, modification, annulation et interrogation d'ordres (35=D, G, F, q, H, AN, XLQ)

NewOrderSingle (35=D)

TagNom du champReqValeurs prises en charge & Remarques
11ClOrdIDOIdentifiant d'ordre unique attribué par le client (jusqu'à 31 caractères)
1AccountNAdresse du coffre-fort auto-hébergé (0x...) ou identifiant de sous-compte
50SenderSubIDNID du trader ou de la stratégie ; renvoyé en écho dans TargetSubID (57) sur 35=8
55SymbolOPerps USDC (BTCUSDC, ETHUSDC, SOLUSDC), Perps USDT (BTCUSDT, ETHUSDT), Perps RWA (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA)
54SideO1 = Achat, 2 = Vente
38OrderQtyOQuantité de l'ordre en actif de base (prend en charge une précision fractionnaire à 4 décimales, par ex. 0.0050)
40OrdTypeO1 = Market, 2 = Limit, 4 = Stop Limit (requiert 99=StopPx), p = Post-Only (ou 18=6)
44PriceCPrix limite (requis pour 40=2, 40=4, 40=p)
59TimeInForceN1 = GTC (par défaut), 3 = IOC, 4 = FOK, 5 = GTX
544CashMarginN1 = Cash (par défaut), 2 = Margin Open, 3 = Margin Close

Modification (35=G), Annulation (35=F), Annulation massive (35=q), Statut (35=H), Positions (35=AN) & Limites (35=XLQ)

MsgTypeNom du messageTags de requête principauxRéponse de la passerelle
35=GOrderCancelReplaceRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price35=8 avec 150=5, 39=5 (Remplacé) ou 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side35=8 en deux étapes : 150=6, 39=6 (Annulation en attente) → 150=4, 39=4 (Annulé), ou 35=9 (434=1)
35=qOrderMassCancelRequest11=ClOrdID, 530=7 (Annuler tous les ordres)35=r (1369=MassActionReportID, 531=7) + un 35=8 (150=4, 39=4) par ordre annulé
35=HOrderStatusRequest11=ClOrdID (ou 37=OrderID), 790=OrdStatusReqID35=8 avec 150=I (Statut de l'ordre) ou 150=8, 103=5 (Ordre inconnu)
35=ANRequestForPositions710=PosReqID, 724=0 (Positions), 1=Account, 55=SymbolPositionReport (35=AP) avec 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice
35=XLQLimitQuery25003=ReqIDLimitResponse (35=XLR) avec 25005=ORDERS (500/s) et 25005=CONNECTIONS (20/compte)

4. Drop Copy en temps réel & Réconciliation (797=Y / 9406=Y)

Le Drop Copy fournit aux prime brokers, aux moteurs de risque et aux systèmes de réconciliation de back-office un flux en temps réel et en lecture seule de tous les événements ExecutionReport (35=8) sur l'ensemble des sessions FIX Order Entry et des ordres par API REST/HTTP.

  • Indicateurs d'abonnement universels : Connectez-vous au port 9878 et envoyez Logon (35=A) avec 797=Y (CopyMsgIndicator), 9406=Y (DropCopyFlag), ou 50=DROPCOPY (SenderSubID).
  • Double étiquetage en sortie : Chaque trame Drop Copy 35=8 comporte 57=DROPCOPY, 797=Y, et 9406=Y, ainsi que le détail complet des frais/remises (381=GrossTradeAmt, 1057=AggressorIndicator, 136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4, 20000=TradeFeeRebateAmt).
  • Protection stricte en lecture seule : Toute tentative de soumission de 35=D, 35=F, 35=G, ou 35=q sur une session Drop Copy est immédiatement rejetée via BusinessMessageReject (35=j, 380=4).
  • Récupération d'écarts de séquence : Les rapports sortants de Drop Copy sont conservés dans le magasin de séquences de la session et peuvent être rejoués via ResendRequest (35=2) avec PossDupFlag (43=Y).

5. Données de marché (35=V, W, X, Y) & Données de référence (35=x, y, h)

Connectez-vous au port 9879 pour la diffusion dédiée des données de marché ou interrogez les spécifications des instruments via SecurityListRequest (35=x).

  • MarketDataRequest (35=V) : Envoyez 262=MDReqID, 263=1 (Instantané + Mises à jour) ou 0 (Instantané), 264=1 (Haut du carnet) ou 20 (Profondeur complète), et 55=Symbol. Renvoie MarketDataSnapshotFullRefresh (35=W) suivi de MarketDataIncrementalRefresh (35=X). Les symboles inconnus renvoient MarketDataRequestReject (35=Y, 281=0).
  • SecurityListRequest (35=x) : Envoyez 320=SecurityReqID et 559=0 (symbole unique dans 55) ou 559=4 (tous les instruments). Renvoie SecurityList (35=y) avec la taille du tick (969=MinPriceIncrement), la quantité d'ordre minimale/maximale (8000/8001), et la précision décimale (8002/8003).
  • TradingSessionStatus (35=h) : Renvoie 340=2 (Ouvert 24h/24, 7j/7, 365j/an) ou 340=1 (Interrompu).

Modèle de configuration client 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