GaiaExGaiaEx
API

FIX API ระดับสถาบัน (4.2 / 4.4 / 5.0 / 5.2)

การเชื่อมต่อ FIX 4.2, 4.4, 5.0 และ 5.2 ระดับสถาบัน: การส่งคำสั่งซื้อขาย (:9878), Drop Copy แบบเรียลไทม์ (797=Y / 9406=Y), ข้อมูลตลาด (:9879) และสกีมา QuickFIX XML

พร้อมสำหรับ AI AGENTติดตั้งทักษะทางการของ GaiaEx ให้กับ Claude Code, OpenAI Codex & Antigravity (`agy`)
CLAUDE CODESKILL.md
Claude SKILL.md

สกิลแบบ Drop-in สำหรับ Claude Code พร้อมการลงลายเซ็น HMAC-SHA256, สกีมา /fapi/v1 & /fapi/v2 และระบบป้องกันการเปิดเผยข้อมูลลับ

ไฟล์ดิบ ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

ไฟล์ AGENTS.md แบบ Drop-in สำหรับ OpenAI Codex CLI — กฎ tick-size, ขีดจำกัด rate-limit และขอบเขตการดูแลทรัพย์สินด้วยตนเอง

ไฟล์ดิบ ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

สเปกเอเจนต์ Google Antigravity (agy) & Gemini พร้อมเทมเพลตการรันคำสั่ง async Python WebSocket + REST ที่ผ่านการตรวจสอบแล้ว

ไฟล์ดิบ ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

ดัชนีที่เครื่องอ่านได้ผ่าน URL เดียวของเอกสาร GaiaEx ทุกหน้า, สกีมา OpenAPI 3.0 และ Postman collection

ไฟล์ดิบ ↗

1. สถาปัตยกรรมและภาพรวมของเวอร์ชันต่างๆ

GaiaEx Native C++26 Institutional FIX Gateway มอบการส่งคำสั่งซื้อขาย (Order Entry), Real-Time Drop Copy, การสอบถามสถานะคำสั่งซื้อขายและสถานะพอร์ต (Position & Order Inquiry) ตลอดจนการสตรีมข้อมูลตลาด L1/L2 ที่มีความหน่วงต่ำเป็นพิเศษ (ultra-low-latency) และมีความแน่นอน (deterministic) สูง ผ่านเซสชัน TCP/TLS แบบ persistent

ดาวน์โหลด XML Schema สำหรับ QuickFIX / OnixS: /fix-dictionary.xml — ใช้งานร่วมกับ QuickFIX (C++/Python/Go), QuickFIX/J, OnixS, OneZero และแพลตฟอร์ม OMS ระดับสถาบันได้ กำหนดค่า client engine ของคุณด้วย ValidateUserDefinedFields=N และ ValidateFieldsOutOfOrder=N เพื่อความเข้ากันได้ในอนาคต

ประเภทเซสชัน Gatewayพอร์ตเวอร์ชันที่รองรับขีดความสามารถนโยบายการเข้าถึง
Order Management (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 ที่มีสิทธิ์ Read + Trade
Drop Copy (DC)9878FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2สตรีม ExecutionReport (35=8) รวมแบบเรียลไทม์ที่ติดแท็ก 797=Y และ 9406=Y ครอบคลุมทุกคำสั่งซื้อขายผ่าน FIX และ REST/HTTPบังคับใช้สิทธิ์อ่านอย่างเดียว (Read-Only Enforced) (35=j ปฏิเสธคำสั่งซื้อขาย)
Market Data (MD)9879FIX.4.2, FIX.4.4, FIX.5.0, FIX.5.2Snapshot (35=W), IncrementalRefresh (35=X), และ MarketDataRequestReject (35=Y) ระดับ L1/L2 แบบเรียลไทม์บังคับใช้สิทธิ์อ่านอย่างเดียว (Read-Only Enforced) (35=j ปฏิเสธคำสั่งซื้อขาย)

การเจรจาเวอร์ชันและกฎระดับสายสัญญาณ (Wire Rules)

เวอร์ชัน FIXBeginString (8)แท็ก Logon (35=A)แท็ก App HeaderTrade ExecType (150)กฎ ExecTransType (20)
FIX 4.28=FIX.4.2ไม่มีไม่มี150=1 (Partial), 150=2 (Fill)จำเป็นต้องระบุ (Mandatory) (20=0 ใหม่, 20=3 สถานะ)
FIX 4.48=FIX.4.4ไม่มีไม่มี150=F (Trade) พร้อม 39=1/2ไม่อนุญาต (Forbidden) (ปฏิเสธผ่าน 35=3, 371=20, 373=2)
FIX 5.08=FIXT.1.11137=71128=7150=F (Trade) พร้อม 39=1/2ไม่อนุญาต (Forbidden) (ปฏิเสธผ่าน 35=3, 371=20, 373=2)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=9150=F (Trade) พร้อม 39=1/2ไม่อนุญาต (Forbidden) (ปฏิเสธผ่าน 35=3, 371=20, 373=2)

2. การจัดการเซสชันและการเข้าสู่ระบบด้วย HMAC-SHA256 (35=A)

ทุกเซสชัน FIX จะเริ่มต้นด้วยเฟรม Logon (35=A) ที่ยืนยันตัวตนผ่าน GaiaEx API Key (Tag 553), API Secret (Tag 554) ของคุณ และลายเซ็น HMAC-SHA256 ในรูปแบบเลขฐานสิบหกตัวพิมพ์เล็กใน 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()
แท็กชื่อฟิลด์จำเป็นคำอธิบาย
98EncryptMethodY0 = ไม่มีการเข้ารหัส / การเข้ารหัสระดับการส่งข้อมูล TLS
108HeartBtIntYช่วงเวลา Heartbeat เป็นวินาที (แนะนำ: 30)
141ResetSeqNumFlagNY = รีเซ็ตลำดับหมายเลข (sequence numbers) กลับเป็น 1; N = สานต่อสถานะลำดับหมายเลขระหว่างวัน
553UsernameYGaiaEx API Key
554PasswordYGaiaEx API Secret
96RawDataYลายเซ็น HMAC-SHA256 ความยาว 64 ตัวอักษรฐานสิบหก ครอบคลุม 52|A|34|49|56
797 / 9406CopyMsgIndicator / DropCopyFlagNกำหนดเป็น 797=Y, 9406=Y, หรือ 50=DROPCOPY เพื่อลงทะเบียนเซสชัน Drop Copy แบบอ่านอย่างเดียว
1409SessionStatusOutส่งกลับมาใน 35=A / 35=5: 0=ใช้งานอยู่ (Active), 4=ออกจากระบบสมบูรณ์, 5=การยืนยันตัวตนไม่ถูกต้อง, 6=ลำดับต่ำเกินไป, 101=จำกัดลำดับสูงสุดที่ 100M

การกู้คืนข้อความที่ตกหล่น (35=2 & 35=4) และ Cancel-on-Disconnect (CoD)

  • การตรวจจับข้อความขาเข้าที่ตกหล่น (Inbound Gap Detection): หากข้อความขาเข้ามีค่า MsgSeqNum (34) > ExpectedSeqNum gateway จะส่ง ResendRequest (35=2, 7=ExpectedSeqNum, 16=0) ทันที หากพบ MsgSeqNum (34) < ExpectedSeqNum โดยไม่มี PossDupFlag (43=Y) gateway จะส่ง Logout (35=5, 1409=6) และปิดซ็อกเก็ต
  • การส่งข้อความขาออกซ้ำ (Outbound Replay): เมื่อไคลเอนต์ส่ง ResendRequest (35=2) gateway จะเล่นซ้ำข้อความระดับแอปพลิเคชันทั้งหมด (รวมถึงรายงาน 35=8 ของ Drop Copy) พร้อมด้วย 43=Y และ 122=OrigSendingTime และรวมเฟรมการดูแลระบบไว้ใน SequenceReset-GapFill (35=4, 123=Y)
  • การยกเลิกคำสั่งซื้อขายอัตโนมัติเมื่อตัดการเชื่อมต่อ (Cancel-on-Disconnect - CoD): เมื่อเซสชัน Order Management หลุดการเชื่อมต่อ คำสั่งซื้อขายที่ยังค้างอยู่ทั้งหมด (OrdStatus 39=0) ซึ่งส่งมาจากเซสชันนั้นจะถูกยกเลิกโดยอัตโนมัติ (150=4, 39=4, 103=3020) และจะถ่ายทอดสัญญาณแบบเรียลไทม์ไปยังเซสชัน Drop Copy ที่เปิดใช้งานอยู่ทันที

3. การส่ง แก้ไข ยกเลิก และสอบถามสถานะคำสั่งซื้อขาย (35=D, G, F, q, H, AN, XLQ)

NewOrderSingle (35=D)

แท็กชื่อฟิลด์จำเป็นค่าที่รองรับและหมายเหตุ
11ClOrdIDYตัวระบุคำสั่งซื้อขายเฉพาะที่ไคลเอนต์เป็นผู้กำหนด (สูงสุด 31 ตัวอักษร)
1AccountNที่อยู่วอลเล็ตดูแลตนเอง (Self-custody vault address) (0x...) หรือตัวระบุบัญชีย่อย
50SenderSubIDNID ของเทรดเดอร์หรือกลยุทธ์; สะท้อนกลับมาใน TargetSubID (57) บน 35=8
55SymbolYUSDC Perps (BTCUSDC, ETHUSDC, SOLUSDC), USDT Perps (BTCUSDT, ETHUSDT), RWA Perps (xyz:GOLD / GOLDUSDC, xyz:NVDA, xyz:TSLA)
54SideY1 = ซื้อ (Buy), 2 = ขาย (Sell)
38OrderQtyYปริมาณคำสั่งซื้อขายในสกุลสินทรัพย์หลัก (base asset) (รองรับทศนิยมสูงสุด 4 ตำแหน่ง เช่น 0.0050)
40OrdTypeY1 = Market, 2 = Limit, 4 = Stop Limit (จำเป็นต้องมี 99=StopPx), p = Post-Only (หรือ 18=6)
44PriceCราคา Limit (จำเป็นต้องระบุสำหรับ 40=2, 40=4, 40=p)
59TimeInForceN1 = GTC (ค่าเริ่มต้น), 3 = IOC, 4 = FOK, 5 = GTX
544CashMarginN1 = Cash (ค่าเริ่มต้น), 2 = Margin Open, 3 = Margin Close

แก้ไข (35=G), ยกเลิก (35=F), ยกเลิกทั้งหมด (35=q), สถานะ (35=H), สถานะพอร์ต (35=AN) และขีดจำกัด (35=XLQ)

MsgTypeชื่อข้อความแท็กคำขอหลักการตอบกลับของ Gateway
35=GOrderCancelReplaceRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side, 38=OrderQty, 44=Price35=8 พร้อม 150=5, 39=5 (แทนที่แล้ว) หรือ 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID, 41=OrigClOrdID, 55=Symbol, 54=Side35=8 แบบ 2 ขั้นตอน: 150=6, 39=6 (รอยกเลิก) → 150=4, 39=4 (ยกเลิกแล้ว), หรือ 35=9 (434=1)
35=qOrderMassCancelRequest11=ClOrdID, 530=7 (ยกเลิกคำสั่งซื้อขายทั้งหมด)35=r (1369=MassActionReportID, 531=7) + หนึ่ง 35=8 (150=4, 39=4) ต่อหนึ่งคำสั่งซื้อขายที่ถูกยกเลิก
35=HOrderStatusRequest11=ClOrdID (หรือ 37=OrderID), 790=OrdStatusReqID35=8 พร้อม 150=I (สถานะคำสั่งซื้อขาย) หรือ 150=8, 103=5 (ไม่พบคำสั่งซื้อขาย)
35=ANRequestForPositions710=PosReqID, 724=0 (สถานะพอร์ต), 1=Account, 55=SymbolPositionReport (35=AP) พร้อม 721=PosMaintRptID, 728=0, 704=LongQty, 705=ShortQty, 730=SettlePrice
35=XLQLimitQuery25003=ReqIDLimitResponse (35=XLR) พร้อม 25005=ORDERS (500/วินาที) และ 25005=CONNECTIONS (20/บัญชี)

4. Drop Copy และการกระทบยอดแบบเรียลไทม์ (797=Y / 9406=Y)

Drop Copy ให้บริการแก่โบรกเกอร์หลัก (prime brokers), ระบบประเมินความเสี่ยง และระบบกระทบยอดงานสนับสนุนส่วนหลัง (back-office reconciliation) ด้วยสตรีมแบบอ่านอย่างเดียวแบบเรียลไทม์ของทุกเหตุการณ์ ExecutionReport (35=8) ทั้งจากเซสชัน FIX Order Entry และคำสั่งซื้อขายผ่าน REST/HTTP API

  • แฟล็กการบอกรับข้อมูลสากล (Universal Subscription Flags): เชื่อมต่อไปยังพอร์ต 9878 และส่ง Logon (35=A) พร้อมกับ 797=Y (CopyMsgIndicator), 9406=Y (DropCopyFlag), หรือ 50=DROPCOPY (SenderSubID)
  • การประทับแท็กคู่ขาออก: ทุกเฟรม 35=8 ของ Drop Copy จะมี 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 บนเซสชัน Drop Copy จะถูกปฏิเสธทันทีผ่าน BusinessMessageReject (35=j, 380=4)
  • การกู้คืนลำดับข้อความที่ตกหล่น: รายงาน Drop Copy ขาออกจะถูกเก็บรักษาไว้อย่างถาวรในที่จัดเก็บลำดับของเซสชัน และสามารถเรียกเปิดซ้ำได้ผ่าน ResendRequest (35=2) พร้อมด้วย PossDupFlag (43=Y)

5. ข้อมูลตลาด (35=V, W, X, Y) และข้อมูลอ้างอิง (35=x, y, h)

เชื่อมต่อไปยังพอร์ต 9879 สำหรับการสตรีมข้อมูลตลาดโดยเฉพาะ หรือสอบถามข้อมูลจำเพาะของตราสารผ่าน SecurityListRequest (35=x)

  • MarketDataRequest (35=V): ส่ง 262=MDReqID, 263=1 (ภาพรวม + อัปเดต) หรือ 0 (ภาพรวม), 264=1 (ระดับบนสุดของสมุดคำสั่งซื้อขาย) หรือ 20 (ความลึกเต็มรูปแบบ), และ 55=Symbol จะส่งคืน MarketDataSnapshotFullRefresh (35=W) ตามด้วย MarketDataIncrementalRefresh (35=X) หากไม่พบสัญลักษณ์จะส่งคืน MarketDataRequestReject (35=Y, 281=0)
  • SecurityListRequest (35=x): ส่ง 320=SecurityReqID และ 559=0 (สัญลักษณ์เดี่ยวใน 55) หรือ 559=4 (ตราสารทั้งหมด) จะส่งคืน SecurityList (35=y) พร้อมขนาดช่วงราคา (tick size) (969=MinPriceIncrement), ปริมาณคำสั่งซื้อขายต่ำสุด/สูงสุด (8000/8001) และความละเอียดทศนิยม (8002/8003)
  • TradingSessionStatus (35=h): ส่งคืน 340=2 (เปิดตลอด 24 ชั่วโมง 7 วัน 365 วัน) หรือ 340=1 (หยุดการซื้อขายชั่วคราว)

เทมเพลตการกำหนดค่า 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