GaiaExGaiaEx
API

واجهة برمجة التطبيقات المؤسسية FIX (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.

جاهز لوكلاء الذكاء الاصطناعيزوّد Claude Code و OpenAI Codex و Antigravity (`agy`) بمهارات GaiaEx الرسمية
CLAUDE CODESKILL.md
Claude SKILL.md

مهارة مدمجة لـ Claude Code مع توقيع HMAC-SHA256، ومخططات /fapi/v1 و /fapi/v2، وحواجز أمان لحجب المفاتيح السرية.

نص أولي ↗
OPENAI CODEXAGENTS.md
Codex AGENTS.md

ملف AGENTS.md المدمج لمستودع OpenAI Codex CLI — قواعد حجم التكة، وميزانيات حدود المعدل، وحدود الوصاية الذاتية.

نص أولي ↗
ANTIGRAVITYAGY.md
Antigravity AGY.md

مواصفات وكيل Google Antigravity (agy) و Gemini مع قوالب تنفيذ معتمدة غير متزامنة لـ Python عبر WebSocket + REST.

نص أولي ↗
UNIVERSAL LLMllms.txt
/llms.txt Index

فهرس قابل للقراءة آلياً عبر عنوان URL واحد لجميع صفحات وثائق GaiaEx، ومخطط OpenAPI 3.0، ومجموعة Postman.

نص أولي ↗

1. نظرة عامة على البنية الهندسية وتعدد الإصدارات

توفر بوابة المؤسسات FIX الأصلية المكتوبة بلغة C++26 في GaiaEx إمكانية إدخال الأوامر بزمن انتقال فائق الانخفاض وحتمي، وتغذية Drop Copy في الوقت الفعلي، والاستعلام عن المراكز والأوامر، بالإضافة إلى بث بيانات السوق L1/L2 عبر جلسات TCP/TLS الدائمة.

تنزيل مخطط 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 للقراءة + التداول
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تطبيق سياسة القراءة فقط إلزاميًا (يرفض 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 الأوامر)

التفاوض على الإصدار وقواعد الإرسال عبر الشبكة

إصدار FIXBeginString (8)علامة تسجيل الدخول (35=A)علامة ترويسة التطبيقExecType (150) للتداولقاعدة ExecTransType (20)
FIX 4.28=FIX.4.2لا يوجدلا يوجد150=1 (جزئي)، 150=2 (تنفيذ كامل)إلزامي (20=0 جديد، 20=3 حالة)
FIX 4.48=FIX.4.4لا يوجدلا يوجد150=F (تداول) مع 39=1/2محظور (يتم رفضه عبر 35=3, 371=20, 373=2)
FIX 5.08=FIXT.1.11137=71128=7150=F (تداول) مع 39=1/2محظور (يتم رفضه عبر 35=3, 371=20, 373=2)
FIX 5.2 (5.0 SP2)8=FIXT.1.11137=91128=9150=F (تداول) مع 39=1/2محظور (يتم رفضه عبر 35=3, 371=20, 373=2)

2. إدارة الجلسة وتسجيل الدخول عبر HMAC-SHA256 (35=A)

تبدأ كل جلسة FIX بإطار Logon (35=A) تتم مصادقته عبر مفتاح GaiaEx API الخاص بك (Tag 553)، وسر API (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الفاصل الزمني لنبضات القلب بالثواني (الموصى به: 30)
141ResetSeqNumFlagNY = إعادة تعيين أرقام التسلسل إلى 1؛ N = استئناف حالة التسلسل خلال اليوم
553UsernameYمفتاح GaiaEx API
554PasswordYسر GaiaEx API
96RawDataYتوقيع HMAC-SHA256 سداسي عشري من 64 حرفًا على 52|A|34|49|56
797 / 9406CopyMsgIndicator / DropCopyFlagNقم بتعيين 797=Y، أو 9406=Y، أو 50=DROPCOPY لتسجيل جلسة Drop Copy للقراءة فقط
1409SessionStatusخروجيتم إرجاعه في 35=A / 35=5: 0=نشط، 4=اكتمل تسجيل الخروج، 5=مصادقة غير صحيحة، 6=التسلسل منخفض جدًا، 101=الحد الأقصى للتسلسل 100 مليون

استرداد الفجوات (35=2 و35=4) والإلغاء عند انقطاع الاتصال (CoD)

  • اكتشاف الفجوات الواردة: إذا كانت الرسالة الواردة تحمل MsgSeqNum (34) > ExpectedSeqNum، تصدر البوابة فورًا ResendRequest (35=2, 7=ExpectedSeqNum, 16=0). إذا كانت MsgSeqNum (34) < ExpectedSeqNum بدون PossDupFlag (43=Y)، تصدر البوابة Logout (35=5, 1409=6) وتغلق المقبس.
  • إعادة إرسال الرسائل الصادرة: عندما يرسل العميل ResendRequest (35=2)، تعيد البوابة إرسال جميع رسائل التطبيق (بما في ذلك تقارير Drop Copy 35=8) مع 43=Y و122=OrigSendingTime، وتدمج الأطر الإدارية في SequenceReset-GapFill (35=4, 123=Y).
  • الإلغاء التلقائي عند انقطاع الاتصال (CoD): عند انقطاع اتصال جلسة إدارة الأوامر، يتم تلقائيًا إلغاء جميع الأوامر المفتوحة القائمة (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عنوان خزينة الحفظ الذاتي (0x...) أو معرّف الحساب الفرعي
50SenderSubIDNمعرّف المتداول أو الاستراتيجية؛ يُعاد إرساله في TargetSubID (57) ضمن 35=8
55SymbolYعقود USDC الدائمة (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 = نشر فقط (أو 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=Price35=8 مع 150=5, 39=5 (تم الاستبدال) أو 35=9 (434=2)
35=FOrderCancelRequest11=ClOrdID، 41=OrigClOrdID، 55=Symbol، 54=Sideاستجابة 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) + تقرير 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)، ومحركات المخاطر، وأنظمة التسوية للمكاتب الخلفية بثًا لحظيًا للقراءة فقط لجميع أحداث ExecutionReport (35=8) عبر كل من جلسات إدخال أوامر FIX وأوامر واجهة برمجة التطبيقات REST/HTTP.

  • علامات الاشتراك العامة: اتصل بالمنفذ 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) متضمنًا حجم التكة (969=MinPriceIncrement)، والحد الأدنى/الأقصى لكمية الأمر (8000/8001)، والدقة العشرية (8002/8003).
  • TradingSessionStatus (35=h): يعيد 340=2 (مفتوح على مدار الساعة 24×7×365) أو 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