GaiaExGaiaEx
API

FIX API dành cho tổ chức (4.2 / 4.4 / 5.0 / 5.2)

Kết nối FIX 4.2, 4.4, 5.0 và 5.2 cấp tổ chức: Nhập lệnh (:9878), Real-Time Drop Copy (797=Y / 9406=Y), Dữ liệu thị trường (:9879) và lược đồ XML QuickFIX.

SẴN SÀNG CHO AI AGENTTrang bị cho Claude Code, OpenAI Codex & Antigravity (`agy`) bộ công cụ Skill chính thức của GaiaEx
CLAUDE CODESKILL.md
Claude SKILL.md

Skill tích hợp sẵn cho Claude Code với xác thực chữ ký HMAC-SHA256, lược đồ /fapi/v1 & /fapi/v2 và cơ chế bảo vệ che giấu secret an toàn.

Dữ liệu thô ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

Tệp AGENTS.md tích hợp cho OpenAI Codex CLI — quy tắc bước giá tick-size, hạn mức tần suất rate-limit và ranh giới tự lưu ký.

Dữ liệu thô ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

Đặc tả agent cho Google Antigravity (agy) & Gemini với các mẫu thực thi REST + WebSocket không đồng bộ (async) bằng Python đã được xác thực.

Dữ liệu thô ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

Chỉ mục máy đọc được qua một URL duy nhất chứa toàn bộ trang tài liệu GaiaEx, lược đồ OpenAPI 3.0 và bộ sưu tập Postman.

Dữ liệu thô ↗

1. Kiến trúc & Tổng quan Đa phiên bản

Gateway FIX Tổ chức C++26 Native của GaiaEx cung cấp khả năng Đặt lệnh xác định (deterministic), độ trễ cực thấp, Drop Copy theo thời gian thực, Truy vấn Vị thế & Lệnh, cũng như luồng Dữ liệu Thị trường L1/L2 qua các phiên TCP/TLS liên tục.

Tải xuống QuickFIX / OnixS XML Schema: /fix-dictionary.xml — tương thích với QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero và các nền tảng OMS dành cho tổ chức. Cấu hình engine client của bạn với ValidateUserDefinedFields=N và ValidateFieldsOutOfOrder=N để đảm bảo khả năng tương thích xuôi.

Loại phiên GatewayCổngCác phiên bản được hỗ trợKhả năngChính sách truy cập
Quản lý Lệnh (OE)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Đặt lệnh (35=D), Hủy lệnh (35=F), Sửa lệnh (35=G), Hủy hàng loạt (35=q), Trạng thái lệnh (35=H), Vị thế (35=AN), Giới hạn tần suất (35=XLQ), Công cụ giao dịch (35=x)API Key Quyền Đọc + Giao dịch
Drop Copy (DC)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Luồng ExecutionReport (35=8) hợp nhất theo thời gian thực được gắn thẻ với 797=Y và 9406=Y trên tất cả các lệnh FIX và REST/HTTPBắt buộc Chỉ đọc (35=j từ chối các lệnh)
Dữ liệu Thị trường (MD)9879FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Snapshot (35=W), IncrementalRefresh (35=X), và MarketDataRequestReject (35=Y) L1/L2 theo thời gian thựcBắt buộc Chỉ đọc (35=j từ chối các lệnh)

Thương lượng Phiên bản & Quy tắc Truyền dẫn (Wire Rules)

Phiên bản FIXBeginString (8)Thẻ Logon (35=A)Thẻ App HeaderGiao dịch ExecType (150)Quy tắc ExecTransType (20)
FIX 4.28=FIX.4.2Không cóKhông có150=1 (Khớp một phần), 150=2 (Khớp toàn bộ)Bắt buộc (20=0 Mới, 20=3 Trạng thái)
FIX 4.48=FIX.4.4Không cóKhông có150=F (Giao dịch) cùng 39=1/2Bị cấm (bị từ chối qua 35=3, 371=20, 373=2)
FIX 5.08=FIXT.1.11137=71128=7150=F (Giao dịch) cùng 39=1/2Bị cấm (bị từ chối qua 35=3, 371=20, 373=2)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=9150=F (Giao dịch) cùng 39=1/2Bị cấm (bị từ chối qua 35=3, 371=20, 373=2)

2. Quản lý Phiên & Đăng nhập HMAC-SHA256 (35=A)

Mỗi phiên FIX bắt đầu bằng một khung Logon (35=A) được xác thực qua API Key GaiaEx (Tag 553), API Secret (Tag 554), và một chữ ký HMAC-SHA256 dạng hex viết thường trong 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()
ThẻTên trườngBắt buộcMô tả
98EncryptMethodY0 = Không có / Mã hóa tầng vận chuyển TLS
108HeartBtIntYKhoảng thời gian Heartbeat tính bằng giây (khuyến nghị: 30)
141ResetSeqNumFlagNY = Đặt lại số thứ tự về 1; N = Tiếp tục trạng thái số thứ tự trong ngày
553UsernameYAPI Key GaiaEx
554PasswordYAPI Secret GaiaEx
96RawDataYChữ ký HMAC-SHA256 64 ký tự hex trên 52|A|34|49|56
797 / 9406CopyMsgIndicator / DropCopyFlagNĐặt 797=Y, 9406=Y, hoặc 50=DROPCOPY để đăng ký một phiên Drop Copy chỉ đọc
1409SessionStatusOutĐược trả về trong 35=A / 35=5: 0=Hoạt động, 4=Đăng xuất hoàn tất, 5=Xác thực không hợp lệ, 6=Số thứ tự quá thấp, 101=Giới hạn số thứ tự 100M

Phục hồi Khoảng trống Dữ liệu (35=2 & 35=4) & Tự động Hủy khi Mất kết nối (Cancel-on-Disconnect - CoD)

  • Phát hiện Khoảng trống Chiều đến (Inbound Gap Detection): Nếu một tin nhắn gửi đến mang MsgSeqNum (34) > ExpectedSeqNum, gateway sẽ ngay lập tức phát ra ResendRequest (35=2, 7=ExpectedSeqNum, 16=0). Nếu MsgSeqNum (34) < ExpectedSeqNum không có PossDupFlag (43=Y), gateway sẽ phát ra Logout (35=5, 1409=6) và đóng socket.
  • Phát lại Chiều đi (Outbound Replay): Khi client gửi ResendRequest (35=2), gateway sẽ phát lại tất cả các tin nhắn ứng dụng (bao gồm các báo cáo Drop Copy 35=8) với 43=Y và 122=OrigSendingTime, đồng thời gộp các khung quản trị thành SequenceReset-GapFill (35=4, 123=Y).
  • Tự động Hủy khi Mất kết nối (CoD): Khi một phiên Quản lý Lệnh bị mất kết nối, tất cả các lệnh mở đang chờ (OrdStatus 39=0) được đặt trên phiên đó sẽ tự động bị hủy (150=4, 39=4, 103=3020) và được thông báo theo thời gian thực tới bất kỳ phiên Drop Copy nào đang hoạt động.

3. Đặt lệnh, Sửa lệnh, Hủy lệnh & Truy vấn Lệnh (35=D, G, F, q, H, AN, XLQ)

NewOrderSingle (35=D)

ThẻTên trườngBắt buộcGiá trị hỗ trợ & Ghi chú
11ClOrdIDYĐịnh danh lệnh duy nhất do client chỉ định (tối đa 31 ký tự)
1AccountNĐịa chỉ vault tự lưu ký (self-custody) (0x...) hoặc định danh tài khoản phụ
50SenderSubIDNID của nhà giao dịch hoặc chiến lược; được trả lại nguyên vẹn trong TargetSubID (57) trên 35=8
55SymbolYHợp đồng vĩnh cửu USDC (BTCUSDC, ETHUSDC, SOLUSDC), Hợp đồng vĩnh cửu USDT (BTCUSDT, ETHUSDT), Hợp đồng vĩnh cửu RWA (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA)
54SideY1 = Mua, 2 = Bán
38OrderQtyYSố lượng lệnh theo tài sản cơ sở (hỗ trợ độ chính xác phân số 4 chữ số thập phân, ví dụ: 0.0050)
40OrdTypeY1 = Lệnh thị trường (Market), 2 = Lệnh giới hạn (Limit), 4 = Lệnh giới hạn dừng (Stop Limit, yêu cầu 99=StopPx), p = Post-Only (hoặc 18=6)
44PriceCGiá giới hạn (bắt buộc đối với 40=2, 40=4, 40=p)
59TimeInForceN1 = GTC (mặc định), 3 = IOC, 4 = FOK, 5 = GTX
544CashMarginN1 = Cash (mặc định), 2 = Mở Margin, 3 = Đóng Margin

Sửa lệnh (35=G), Hủy lệnh (35=F), Hủy hàng loạt (35=q), Trạng thái (35=H), Vị thế (35=AN) & Giới hạn (35=XLQ)

MsgTypeTên tin nhắnCác thẻ yêu cầu chínhPhản hồi từ Gateway
35=GOrderCancelReplaceRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price35=8 với 150=5, 39=5 (Đã thay thế) hoặc 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=SideQuy trình hai bước 35=8: 150=6, 39=6 (Chờ hủy) → 150=4, 39=4 (Đã hủy), hoặc 35=9 (434=1)
35=qOrderMassCancelRequest11=ClOrdID, 530=7 (Hủy tất cả các lệnh)35=r (1369=MassActionReportID, 531=7) + một 35=8 (150=4, 39=4) cho mỗi lệnh đã hủy
35=HOrderStatusRequest11=ClOrdID (hoặc 37=OrderID), 790=OrdStatusReqID35=8 với 150=I (Trạng thái lệnh) hoặc 150=8, 103=5 (Không tìm thấy lệnh)
35=ANRequestForPositions710=PosReqID, 724=0 (Vị thế), 1=Account, 55=SymbolPositionReport (35=AP) với 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice
35=XLQLimitQuery25003=ReqIDLimitResponse (35=XLR) với 25005=ORDERS (500/giây) và 25005=CONNECTIONS (20/tài khoản)

4. Drop Copy Theo Thời Gian Thực & Đối Soát (797=Y / 9406=Y)

Drop Copy cung cấp cho các prime broker, risk engine và hệ thống đối soát back-office một luồng dữ liệu chỉ đọc theo thời gian thực về tất cả các sự kiện ExecutionReport (35=8) trên cả các phiên FIX Order Entry và các lệnh qua REST/HTTP API.

  • Cờ Đăng ký Chung (Universal Subscription Flags): Kết nối tới cổng 9878 và gửi Logon (35=A) với 797=Y (CopyMsgIndicator), 9406=Y (DropCopyFlag), hoặc 50=DROPCOPY (SenderSubID).
  • Đóng dấu Thẻ Kép Chiều đi (Dual-Tag Outbound Stamping): Mỗi khung Drop Copy 35=8 đều mang 57=DROPCOPY, 797=Y, và 9406=Y, cùng bảng phân tích chi tiết đầy đủ về phí/khoản hoàn phí (381=GrossTradeAmt, 1057=AggressorIndicator, 136=1|137=MiscFeeAmt|138=MiscFeeCurr|139=4, 20000=TradeFeeRebateAmt).
  • Bảo vệ Nghiêm ngặt Cơ chế Chỉ đọc: Bất kỳ nỗ lực nào nhằm gửi 35=D, 35=F, 35=G, hoặc 35=q trên một phiên Drop Copy đều bị từ chối ngay lập tức qua BusinessMessageReject (35=j, 380=4).
  • Phục hồi Khoảng trống Số thứ tự (Sequence Gap Recovery): Các báo cáo Drop Copy chiều đi được lưu trữ liên tục trong kho lưu trữ số thứ tự phiên và có thể được phát lại thông qua ResendRequest (35=2) với PossDupFlag (43=Y).

5. Dữ liệu Thị trường (35=V, W, X, Y) & Dữ liệu Tham chiếu (35=x, y, h)

Kết nối tới cổng 9879 để nhận luồng Dữ liệu Thị trường chuyên dụng hoặc truy vấn thông số công cụ giao dịch qua SecurityListRequest (35=x).

  • MarketDataRequest (35=V): Gửi 262=MDReqID, 263=1 (Snapshot + Cập nhật) hoặc 0 (Snapshot), 264=1 (Đầu sổ lệnh) hoặc 20 (Độ sâu toàn phần), và 55=Symbol. Trả về MarketDataSnapshotFullRefresh (35=W) theo sau bởi MarketDataIncrementalRefresh (35=X). Các mã giao dịch không xác định sẽ trả về MarketDataRequestReject (35=Y, 281=0).
  • SecurityListRequest (35=x): Gửi 320=SecurityReqID và 559=0 (một mã giao dịch duy nhất trong 55) hoặc 559=4 (tất cả các công cụ giao dịch). Trả về SecurityList (35=y) với bước giá tick (969=MinPriceIncrement), số lượng lệnh tối thiểu/tối đa (8000/8001), và độ chính xác chữ số thập phân (8002/8003).
  • TradingSessionStatus (35=h): Trả về 340=2 (Mở 24x7x365) hoặc 340=1 (Tạm dừng).

Mẫu Cấu hình QuickFIX Client (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