Kurumsal FIX API (4.2 / 4.4 / 5.0 / 5.2)
Kurumsal FIX 4.2, 4.4, 5.0 ve 5.2 bağlantısı: Emir Girişi (:9878), Gerçek Zamanlı Drop Copy (797=Y / 9406=Y), Piyasa Verisi (:9879) ve QuickFIX XML şeması.
SKILL.mdHMAC-SHA256 imzalama, /fapi/v1 ve /fapi/v2 şemaları ile gizli anahtar gizleme güvenlik önlemlerine sahip kullanıma hazır Claude Code becerisi.
AGENTS.mdOpenAI Codex CLI için doğrudan eklenebilir depo AGENTS.md — kademe boyutu kuralları, hız sınırı bütçeleri ve bireysel saklama sınırları.
AGY.mdDoğrulanmış asenkron Python WebSocket + REST yürütme şablonlarına sahip Google Antigravity (agy) ve Gemini ajan belirtimi.
llms.txtTüm GaiaEx dokümantasyon sayfalarının, OpenAPI 3.0 şemasının ve Postman koleksiyonunun tek URL'li makine tarafından okunabilir dizini.
1. Mimari ve Çoklu Sürüm Genel Bakışı
GaiaEx Yerel C++26 Kurumsal FIX Ağ Geçidi; kalıcı TCP/TLS oturumları üzerinden deterministik, ultra düşük gecikmeli Emir Girişi, Gerçek Zamanlı Drop Copy, Pozisyon ve Emir Sorgulama ile L1/L2 Piyasa Verisi akışı sağlar.
QuickFIX / OnixS XML Şemasını İndirin: /fix-dictionary.xml — QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero ve kurumsal OMS platformları ile uyumludur. İleriye dönük uyumluluk için istemci motorunuzu ValidateUserDefinedFields=N ve ValidateFieldsOutOfOrder=N ile yapılandırın.
| Ağ Geçidi Oturum Türü | Bağlantı Noktası | Desteklenen Sürümler | Yetenekler | Erişim Politikası |
|---|---|---|---|---|
| Emir Yönetimi (OE) | 9878 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Emir girişi (35=D), İptal (35=F), Değiştirme (35=G), Toplu İptal (35=q), Emir Durumu (35=H), Pozisyonlar (35=AN), Hız Limitleri (35=XLQ), Enstrümanlar (35=x) | Okuma + İşlem API Anahtarı |
| Drop Copy (DC) | 9878 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Tüm FIX ve REST/HTTP emirlerinde 797=Y ve 9406=Y ile etiketlenmiş gerçek zamanlı konsolide ExecutionReport (35=8) akışı | Yalnızca Okuma Zorunlu (35=j emirleri reddeder) |
| Piyasa Verisi (MD) | 9879 | FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2 | Gerçek zamanlı L1/L2 Snapshot (35=W), IncrementalRefresh (35=X) ve MarketDataRequestReject (35=Y) | Yalnızca Okuma Zorunlu (35=j emirleri reddeder) |
Sürüm Müzakeresi ve Hat Kuralları
| FIX Sürümü | BeginString (8) | Oturum Açma Etiketi (35=A) | Uygulama Başlık Etiketi | İşlem ExecType (150) | ExecTransType (20) Kuralı |
|---|---|---|---|---|---|
| FIX 4.2 | 8=FIX.4.2 | Yok | Yok | 150=1 (Kısmi), 150=2 (Gerçekleşme) | Zorunlu (20=0 Yeni, 20=3 Durum) |
| FIX 4.4 | 8=FIX.4.4 | Yok | Yok | 39=1/2 ile 150=F (İşlem) | Yasak (35=3, 371=20, 373=2 aracılığıyla reddedilir) |
| FIX 5.0 | 8=FIXT.1.1 | 1137=7 | 1128=7 | 39=1/2 ile 150=F (İşlem) | Yasak (35=3, 371=20, 373=2 aracılığıyla reddedilir) |
| FIX 5.2 (5.0 SP2) | 8=FIXT.1.1 | 1137=9 | 1128=9 | 39=1/2 ile 150=F (İşlem) | Yasak (35=3, 371=20, 373=2 aracılığıyla reddedilir) |
2. Oturum Yönetimi ve HMAC-SHA256 ile Oturum Açma (35=A)
Her FIX oturumu, GaiaEx API Anahtarınız (Tag 553), API Gizli Anahtarınız (Tag 554) ve RawData (Tag 96) içindeki küçük harfli onaltılık HMAC-SHA256 imzası ile doğrulanmış bir Logon (35=A) çerçevesiyle başlar.
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()| Etiket | Alan Adı | Zorunlu | Açıklama |
|---|---|---|---|
98 | EncryptMethod | E | 0 = Yok / TLS iletim şifrelemesi |
108 | HeartBtInt | E | Saniye cinsinden sinyal (heartbeat) aralığı (önerilen: 30) |
141 | ResetSeqNumFlag | H | Y = Sıra numaralarını 1'e sıfırla; N = Gün içi sıra durumunu sürdür |
553 | Username | E | GaiaEx API Anahtarı |
554 | Password | E | GaiaEx API Gizli Anahtarı |
96 | RawData | E | 52|A|34|49|56 üzerinde 64 karakterli onaltılık HMAC-SHA256 imzası |
797 / 9406 | CopyMsgIndicator / DropCopyFlag | H | Yalnızca okunabilir bir Drop Copy oturumu kaydetmek için 797=Y, 9406=Y veya 50=DROPCOPY olarak ayarlayın |
1409 | SessionStatus | Çıktı | 35=A / 35=5 içinde döndürülür: 0=Aktif, 4=Oturum Kapatma Tamamlandı, 5=Hatalı Kimlik Doğrulama, 6=Sıra Çok Düşük, 101=100M Sıra Sınırı |
Boşluk Kurtarma (35=2 & 35=4) ve Bağlantı Kesildiğinde İptal Et (CoD)
- Gelen Mesaj Boşluk Tespiti: Gelen bir mesaj
MsgSeqNum (34) > ExpectedSeqNumtaşıyorsa, ağ geçidi derhalResendRequest (35=2, 7=ExpectedSeqNum, 16=0)yayınlar. EğerPossDupFlag (43=Y)olmadanMsgSeqNum (34) < ExpectedSeqNumtespit edilirse, ağ geçidiLogout (35=5, 1409=6)yayınlar ve soketi kapatır. - Giden Mesaj Yeniden Oynatma: İstemci
ResendRequest (35=2)gönderdiğinde, ağ geçidi tüm uygulama mesajlarını (Drop Copy35=8raporları dahil)43=Yve122=OrigSendingTimeile yeniden oynatır ve yönetimsel çerçeveleriSequenceReset-GapFill (35=4, 123=Y)içinde birleştirir. - Otomatik Bağlantı Kesildiğinde İptal Et (CoD): Bir Emir Yönetimi oturumunun bağlantısı kesildiğinde, o oturumda verilen tüm açık bekleyen emirler (
OrdStatus 39=0) otomatik olarak iptal edilir (150=4, 39=4, 103=3020) ve aktif durumdaki herhangi bir Drop Copy oturumuna gerçek zamanlı olarak yayınlanır.
3. Emir Girişi, Değişikliği, İptali ve Sorgulaması (35=D, G, F, q, H, AN, XLQ)
NewOrderSingle (35=D)
| Etiket | Alan Adı | Zorunlu | Desteklenen Değerler ve Notlar |
|---|---|---|---|
11 | ClOrdID | E | İstemci tarafından atanan benzersiz emir tanımlayıcısı (31 karaktere kadar) |
1 | Account | H | Bireysel saklama cüzdanı adresi (0x...) veya alt hesap tanımlayıcısı |
50 | SenderSubID | H | İşlemci veya strateji kimliği; 35=8 üzerindeki TargetSubID (57) içinde geri yansıtılır |
55 | Symbol | E | USDC Sürekli Vadeli (BTCUSDC, ETHUSDC, SOLUSDC), USDT Sürekli Vadeli (BTCUSDT, ETHUSDT), RWA Sürekli Vadeli (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA) |
54 | Side | E | 1 = Alış, 2 = Satış |
38 | OrderQty | E | Baz varlık cinsinden emir miktarı (4 ondalık basamaklı kesirli hassasiyeti destekler, örn. 0.0050) |
40 | OrdType | E | 1 = Piyasa, 2 = Limit, 4 = Stop Limit (99=StopPx gerektirir), p = Yalnızca Pasif (veya 18=6) |
44 | Price | K | Limit fiyatı (40=2, 40=4, 40=p için zorunludur) |
59 | TimeInForce | H | 1 = GTC (varsayılan), 3 = IOC, 4 = FOK, 5 = GTX |
544 | CashMargin | H | 1 = Nakit (varsayılan), 2 = Teminat Açılışı, 3 = Teminat Kapanışı |
Değiştirme (35=G), İptal (35=F), Toplu İptal (35=q), Durum (35=H), Pozisyonlar (35=AN) ve Limitler (35=XLQ)
| MsgType | Mesaj Adı | Anahtar İstek Etiketleri | Ağ Geçidi Yanıtı |
|---|---|---|---|
35=G | OrderCancelReplaceRequest | 11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price | 150=5, 39=5 (Değiştirildi) içeren 35=8 veya 35=9 (434=2) |
35=F | OrderCancelRequest | 11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side | İki adımlı 35=8: 150=6, 39=6 (İptal Beklemede) → 150=4, 39=4 (İptal Edildi) veya 35=9 (434=1) |
35=q | OrderMassCancelRequest | 11=ClOrdID, 530=7 (Tüm emirleri iptal et) | 35=r (1369=MassActionReportID, 531=7) + iptal edilen emir başına bir adet 35=8 (150=4, 39=4) |
35=H | OrderStatusRequest | 11=ClOrdID (veya 37=OrderID), 790=OrdStatusReqID | 150=I (Emir Durumu) içeren 35=8 veya 150=8, 103=5 (Bilinmeyen emir) |
35=AN | RequestForPositions | 710=PosReqID, 724=0 (Pozisyonlar), 1=Account, 55=Symbol | 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice içeren PositionReport (35=AP) |
35=XLQ | LimitQuery | 25003=ReqID | 25005=ORDERS (500/sn) ve 25005=CONNECTIONS (20/hesap) içeren LimitResponse (35=XLR) |
4. Gerçek Zamanlı Drop Copy ve Mutabakat (797=Y / 9406=Y)
Drop Copy; ana aracı kurumlara (prime brokers), risk motorlarına ve arka ofis mutabakat sistemlerine hem FIX Emir Girişi oturumları hem de REST/HTTP API emirleri genelindeki tüm ExecutionReport (35=8) olaylarının gerçek zamanlı, yalnızca okunabilir bir akışını sunar.
- Evrensel Abonelik Bayrakları:
9878numaralı bağlantı noktasına bağlanın ve797=Y(CopyMsgIndicator),9406=Y(DropCopyFlag) veya50=DROPCOPY(SenderSubID) ile birlikteLogon (35=A)gönderin. - Çift Etiketli Giden Damgalama: Her Drop Copy
35=8çerçevesi, eksiksiz komisyon/iade dökümünün (381=GrossTradeAmt,1057=AggressorIndicator,136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4,20000=TradeFeeRebateAmt) yanı sıra57=DROPCOPY,797=Yve9406=Ytaşır. - Katı Yalnızca Okunabilir Koruma: Drop Copy oturumunda
35=D,35=F,35=Gveya35=qgönderme girişimleri derhalBusinessMessageReject (35=j, 380=4)aracılığıyla reddedilir. - Sıra Boşluğu Kurtarma: Giden Drop Copy raporları, oturum sıra deposunda kalıcı olarak saklanır ve
PossDupFlag (43=Y)ile birlikteResendRequest (35=2)aracılığıyla yeniden oynatılabilir.
5. Piyasa Verisi (35=V, W, X, Y) ve Referans Verisi (35=x, y, h)
Özel Piyasa Verisi akışı için 9879 numaralı bağlantı noktasına bağlanın veya SecurityListRequest (35=x) aracılığıyla enstrüman özelliklerini sorgulayın.
- MarketDataRequest (
35=V):262=MDReqID,263=1(Anlık Görüntü + Güncellemeler) veya0(Anlık Görüntü),264=1(Emir Defteri Tepesi) veya20(Tam Derinlik) ve55=Symbolgönderin.MarketDataSnapshotFullRefresh (35=W)ve ardından gelenMarketDataIncrementalRefresh (35=X)döner. Bilinmeyen sembollerMarketDataRequestReject (35=Y, 281=0)döndürür. - SecurityListRequest (
35=x):320=SecurityReqIDve559=0(55içinde tek sembol) veya559=4(tüm enstrümanlar) gönderin. Fiyat adımı (969=MinPriceIncrement), min/maks emir miktarı (8000/8001) ve ondalık basamak hassasiyeti (8002/8003) içerenSecurityList (35=y)döner. - TradingSessionStatus (
35=h):340=2(7/24/365 Açık) veya340=1(Durduruldu) döndürür.
QuickFIX İstemci Yapılandırma Şablonu (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