GaiaExGaiaEx
API

기관용 FIX API (4.2 / 4.4 / 5.0 / 5.2)

기관용 FIX 4.2, 4.4, 5.0 및 5.2 연결: 주문 전송(:9878), 실시간 드롭 카피(797=Y / 9406=Y), 시장 데이터(:9879) 및 QuickFIX XML 스키마.

AI 에이전트 연동 준비 완료Claude Code, OpenAI Codex 및 Antigravity(`agy`)에 공식 GaiaEx 스킬 탑재
CLAUDE CODESKILL.md
Claude SKILL.md

HMAC-SHA256 서명, /fapi/v1 및 /fapi/v2 스키마, 시크릿 마스킹 가드레일을 갖춘 즉시 사용 가능한 Claude Code 스킬입니다.

원본 ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

틱 크기 규칙, 레이트 리밋 예산, 자체 수탁 보호 경계가 포함된 OpenAI Codex CLI용 즉시 적용 저장소 AGENTS.md입니다.

원본 ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

검증된 비동기 Python WebSocket + REST 실행 템플릿이 포함된 Google Antigravity(agy) 및 Gemini 에이전트 규격입니다.

원본 ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

모든 GaiaEx 문서 페이지, OpenAPI 3.0 스키마 및 Postman 컬렉션을 단일 URL 머신 판독 가능 형식으로 제공하는 색인입니다.

원본 ↗

1. 아키텍처 및 다중 버전 개요

GaiaEx Native C++26 기관용 FIX 게이트웨이는 지속적인 TCP/TLS 세션을 통해 결정론적 초저지연 주문 접수(Order Entry), 실시간 드롭 카피(Drop Copy), 포지션 및 주문 조회, L1/L2 시세 데이터 스트리밍을 제공합니다.

QuickFIX / OnixS XML 스키마 다운로드: /fix-dictionary.xml — QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero 및 기관용 OMS 플랫폼과 호환됩니다. 상위 호환성을 위해 클라이언트 엔진을 ValidateUserDefinedFields=N 및 ValidateFieldsOutOfOrder=N(으)로 구성하십시오.

게이트웨이 세션 유형포트지원 버전기능접근 정책
주문 관리 (OE)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2주문 접수 (35=D), 취소 (35=F), 정정 (35=G), 대량 취소 (35=q), 주문 상태 (35=H), 포지션 (35=AN), 요청 속도 제한 (35=XLQ), 상품 정보 (35=x)읽기 + 거래 API Key
드롭 카피 (DC)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2모든 FIX 및 REST/HTTP 주문에 걸쳐 797=Y 및 9406=Y(으)로 태그 지정된 실시간 통합 ExecutionReport (35=8) 스트림읽기 전용 강제 (35=j 주문 거절)
시세 데이터 (MD)9879FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2실시간 L1/L2 Snapshot (35=W), IncrementalRefresh (35=X) 및 MarketDataRequestReject (35=Y)읽기 전용 강제 (35=j 주문 거절)

버전 협상 및 회선 규칙

FIX 버전BeginString (8)Logon 태그 (35=A)App Header 태그거래 ExecType (150)ExecTransType (20) 규칙
FIX 4.28=FIX.4.2없음없음150=1 (부분 체결), 150=2 (전량 체결)필수 (20=0 신규, 20=3 상태)
FIX 4.48=FIX.4.4없음없음39=1/2 포함 150=F (체결)금지됨 (35=3, 371=20, 373=2(으)로 거절됨)
FIX 5.08=FIXT.1.11137=71128=739=1/2 포함 150=F (체결)금지됨 (35=3, 371=20, 373=2(으)로 거절됨)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=939=1/2 포함 150=F (체결)금지됨 (35=3, 371=20, 373=2(으)로 거절됨)

2. 세션 관리 및 HMAC-SHA256 로그온 (35=A)

모든 FIX 세션은 GaiaEx API Key(Tag 553), API Secret(Tag 554), 그리고 RawData (Tag 96)의 소문자 16진수 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()
태그필드 이름필수설명
98EncryptMethodY0 = 없음 / TLS 전송 암호화
108HeartBtIntY하트비트 주기(초) (권장: 30)
141ResetSeqNumFlagNY = 시퀀스 번호를 1로 재설정, N = 당일 시퀀스 상태 유지
553UsernameYGaiaEx API Key
554PasswordYGaiaEx API Secret
96RawDataY52|A|34|49|56에 대한 64자 16진수 HMAC-SHA256 서명
797 / 9406CopyMsgIndicator / DropCopyFlagN읽기 전용 드롭 카피 세션을 등록하려면 797=Y, 9406=Y 또는 50=DROPCOPY(으)로 설정
1409SessionStatusOut35=A / 35=5에서 반환: 0=활성, 4=로그아웃 완료, 5=인증 실패, 6=시퀀스 번호 낮음, 101=1억 시퀀스 한도 초과

갭 복구 (35=2 & 35=4) 및 연결 해제 시 취소 (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)을(를) 전송하면 게이트웨이는 43=Y 및 122=OrigSendingTime과(와) 함께 모든 애플리케이션 메시지(드롭 카피 35=8 리포트 포함)를 재생하며, 관리 프레임은 SequenceReset-GapFill (35=4, 123=Y)(으)로 병합합니다.
  • 자동 연결 해제 시 취소 (CoD): 주문 관리 세션의 연결이 끊어지면 해당 세션에서 제출된 모든 미체결 잔여 주문(OrdStatus 39=0)이 자동으로 취소(150=4, 39=4, 103=3020)되며 활성화된 모든 드롭 카피 세션에 실시간으로 브로드캐스트됩니다.

3. 주문 접수, 정정, 취소 및 조회 (35=D, G, F, q, H, AN, XLQ)

NewOrderSingle (35=D)

태그필드 이름필수지원 값 및 참고 사항
11ClOrdIDY클라이언트가 부여한 고유 주문 식별자 (최대 31자)
1AccountN자체 보관 볼트 주소 (0x...) 또는 서브계정 식별자
50SenderSubIDN트레이더 또는 전략 ID, 35=8의 TargetSubID (57)에 다시 에코되어 반환됨
55SymbolYUSDC 무기한 계약 (BTCUSDC, ETHUSDC, SOLUSDC), USDT 무기한 계약 (BTCUSDT, ETHUSDT), RWA 무기한 계약 (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA)
54SideY1 = 매수, 2 = 매도
38OrderQtyY기초자산 기준 주문 수량 (소수점 4자리 정밀도 지원, 예: 0.0050)
40OrdTypeY1 = 시장가, 2 = 지정가, 4 = 스탑 리밋 (99=StopPx 필수), p = 메이커 전용(Post-Only) (또는 18=6)
44PriceC지정가 가격 (40=2, 40=4, 40=p에 필수)
59TimeInForceN1 = GTC (기본값), 3 = IOC, 4 = FOK, 5 = GTX
544CashMarginN1 = 현물 (기본값), 2 = 마진 오픈, 3 = 마진 청산

정정 (35=G), 취소 (35=F), 대량 취소 (35=q), 상태 (35=H), 포지션 (35=AN) 및 한도 (35=XLQ)

MsgType메시지 이름주요 요청 태그게이트웨이 응답
35=GOrderCancelReplaceRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price150=5, 39=5(정정됨)가 포함된 35=8 또는 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side2단계 35=8: 150=6, 39=6 (취소 대기 중) → 150=4, 39=4 (취소 완료), 또는 35=9 (434=1)
35=qOrderMassCancelRequest11=ClOrdID, 530=7 (모든 주문 취소)35=r (1369=MassActionReportID, 531=7) + 취소된 주문당 1건의 35=8 (150=4, 39=4)
35=HOrderStatusRequest11=ClOrdID (또는 37=OrderID), 790=OrdStatusReqID150=I(주문 상태)가 포함된 35=8 또는 150=8, 103=5 (알 수 없는 주문)
35=ANRequestForPositions710=PosReqID, 724=0 (포지션), 1=Account, 55=Symbol721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice이(가) 포함된 PositionReport (35=AP)
35=XLQLimitQuery25003=ReqID25005=ORDERS(500/초) 및 25005=CONNECTIONS(계정당 20)이 포함된 LimitResponse (35=XLR)

4. 실시간 드롭 카피 및 대사 (797=Y / 9406=Y)

드롭 카피는 프라임 브로커, 리스크 엔진 및 백오피스 대사 시스템에 FIX 주문 접수 세션과 REST/HTTP API 주문 전체에 걸친 모든 ExecutionReport (35=8) 이벤트의 실시간 읽기 전용 스트림을 제공합니다.

  • 범용 구독 플래그: 9878 포트에 연결하고 797=Y(CopyMsgIndicator), 9406=Y(DropCopyFlag) 또는 50=DROPCOPY(SenderSubID)과 함께 Logon (35=A)을(를) 전송하십시오.
  • 이중 태그 아웃바운드 스탬핑: 모든 드롭 카피 35=8 프레임에는 57=DROPCOPY, 797=Y, 9406=Y와(과) 함께 수수료/리베이트 내역 세부사항(381=GrossTradeAmt, 1057=AggressorIndicator, 136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4, 20000=TradeFeeRebateAmt)이 포함됩니다.
  • 엄격한 읽기 전용 보호: 드롭 카피 세션에서 35=D, 35=F, 35=G 또는 35=q을(를) 제출하려는 시도는 즉시 BusinessMessageReject (35=j, 380=4)(으)로 거절됩니다.
  • 시퀀스 갭 복구: 아웃바운드 드롭 카피 리포트는 세션 시퀀스 저장소에 영구 보관되며 PossDupFlag (43=Y)과(와) 함께 ResendRequest (35=2)을(를) 통해 재생할 수 있습니다.

5. 시세 데이터 (35=V, W, X, Y) 및 참조 데이터 (35=x, y, h)

전용 시세 데이터 스트리밍을 위해 9879 포트에 연결하거나 SecurityListRequest (35=x)을(를) 통해 상품 사양을 조회하십시오.

  • MarketDataRequest (35=V): 262=MDReqID, 263=1 (스냅샷 + 업데이트) 또는 0 (스냅샷), 264=1 (최우선 호가/Top of Book) 또는 20 (전체 호가 깊이/Full Depth), 그리고 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