انتقل إلى المحتوى

نموذج الاتصال

مقدمة

تستخدم FIX API الاتصال القائم على الجلسات. يتم تعريف الجلسة على أنها اتصال بين طرفين: المبادر (العميل)، الطرف الذي يبدأ الاتصال، والقابل (الخادم)، الطرف الذي يتلقى طلب الاتصال من المبادر.

يتحقق الخادم من صحة طلبات العميل باستخدام رسالة تسجيل الدخول.

بروتوكول جلسة FIX

تحافظ كل جلسة على رسائل ثنائية الاتجاه بين العميل وخادم cTrader. يمكن أن تتضمن الجلسة اتصالات فعلية متعددة ويتم الحفاظ عليها باستخدام أرقام التسلسل.

تتلقى كل رسالة جديدة ضمن جلسة واحدة رقم تسلسل فريد يبدأ من 1 (واحد). يعتمد كلا الطرفين على أرقام التسلسل للحفاظ على الاتصال المنظم. يتم إعادة إرسال الرسائل المفقودة باتفاق ثنائي بين الطرفين.

تدفق الجلسة النموذجي:

  1. يبدأ العميل الجلسة برسالة تسجيل الدخول.
  2. يتبادل العميل رسائل التطبيق مع الخادم.
  3. تنتهي الجلسة برسالة تسجيل الخروج.

فئات رسائل بروتوكول cTrader FIX

كما هو محدد في بروتوكول FIX، يستخدم خادم cTrader FIX مستويين مختلفين من البيانات: النظام والتطبيق.

يرجى ملاحظة أن هذه هي الحد الأدنى من مجموعة الرسائل المطلوبة لدعم سير العمل الضروري وهي عرضة للتغيير بمرور الوقت مع تطور كل من احتياجات العمل ومعيار FIX.

رسائل النظام (الإدارة)

  • نبض القلب (العميل ↔ cTrader) - يستخدم للتحقق من رابط الاتصال بين الطرفين.
  • طلب الاختبار (العميل ↔ cTrader) - يستخدم لاختبار صحة رابط الاتصال.
  • تسجيل الدخول (العميل → cTrader) - رسالة مصادقة العميل.
  • تسجيل الخروج (العميل → cTrader) - الإنهاء العادي للجلسة.
  • طلب إعادة الإرسال (العميل ↔ cTrader) - طلب لإعادة إرسال رسائل تطبيق معينة.
  • الرفض (العميل ↔ cTrader) - فشل التحقق من صحة مستوى الجلسة.
  • إعادة تعيين التسلسل (العميل ↔ cTrader) - في حالة وجود مشاكل في الاتصال، يتم استرداد الرسائل المفقودة أو يتم إعادة تعيين التسلسل لتجاهل الرسائل المفقودة.

رسائل التطبيق

  • طلب بيانات السوق (العميل → cTrader) - طلب عام لبيانات السوق.
  • تحديث تدريجي لبيانات السوق (العميل ← cTrader) - ردود على رسالة طلب بيانات السوق.
  • أمر جديد فردي (العميل → cTrader) - يستخدم لتقديم الأوامر إلكترونيًا إلى وسيط للتنفيذ.
  • تقرير التنفيذ (العميل ← cTrader) - يستخدم لإرسال معلومات حالة الأمر إلى عميل FIX، مثل التأكيدات والتعبئة والتغييرات غير المطلوبة.
  • رفض رسالة العمل (العميل ← cTrader) - يستخدم لرفض طلب عميل FIX لأسباب غير متعلقة بالجلسة.

هيكل رسالة FIX

يشرح هذا القسم كيفية تكوين رسالة FIX API، ويصف تنسيق رسالة FIX ويساعد المستخدمين على فهم مفهوم زوج العلامة والقيمة.

يجب أن تحتوي كل رسالة على 3 أجزاء:

  • الرأس - يسبق كل رسالة إدارية أو تطبيقية رأس قياسي. يحدد الرأس نوع الرسالة وإصدار FIX وطول الرسالة والوجهة ورقم التسلسل والأصل والوقت.
  • الجسم - يتم تحديد المحتوى في جسم الرسالة بواسطة نوع الرسالة المحدد في الرأس.
  • التذييل - تنتهي كل رسالة، إدارية أو تطبيقية، بتذييل قياسي. يستخدم التذييل لفصل الرسائل ويحتوي على التمثيل ذو الثلاثة أرقام لقيمة CheckSum <10>.

تنسيق رسالة FIX

رسالة FIX هي مجموعة من الحقول. كل حقل هو زوج من العلامة والقيمة بتنسيق {tag}={value}. على سبيل المثال، 54=2، مما يعني أن نوع الأمر هو بيع.

العلامة

  • تستخدم FIX علامات محددة مسبقًا.
  • تمثل كل علامة حقلًا محددًا.
  • يتم تعيين رقم محدد مسبقًا لكل علامة.
  • توفر مواصفات cTrader FIX قائمة بالحقول وأرقام العلامات المقابلة.

القيمة

  • تمثل القيم قيمة العلامة المخصصة لها.
  • يمكن أن تكون القيم فقط من أحد أنواع البيانات التالية: عدد صحيح، نقطة عائمة، حرف، وقت، تاريخ، بيانات أو سلسلة.

تبدأ جميع الرسائل داخل cTrader FIX API بـ 8=FIX.x.y، حيث x.y هو إصدار بروتوكول FIX. في نهاية كل رسالة يجب أن يكون هناك حقل 10=xyz، حيث xyz يمثل مجموع جميع القيم الثنائية في الرسالة المسماة المجموع الاختباري.

يساعد المجموع الاختباري في تحديد أي مشاكل في الإرسال، وخاصة فقدان الحزم من خلال السماح للمستلم بمعرفة ما إذا كان أي جزء من الرسالة مفقودًا.

إذا تم استخدام العلامة Symbol(55) في رسالة FIX إلى cTrader/cServer، يجب عليك تحديد معرف رمز FIX. يمكن أن تختلف تلك القيمة عبر الوسطاء. يمكنك العثور على حقل معرف رمز FIX من تطبيق cTrader الخاص بذلك الوسيط في نافذة معلومات الرمز.

مثال على الرسالة

8=FIX.4.4|9=126|35=A|34=1|49=theBroker.12345|57=TRADE|50=any_string|52=20170117-08:03:04|56=CSERVER|98=0|108=30|553=12345|554=passw0rd!|10=131|
رقم العلامة اسم العلامة القيمة الوصف
8 BeginString 4.4 إصدار FIX
9 BodyLength 102 طول نص الرسالة هو 102 حرف
35 MsgType A نوع الرسالة هو تسجيل الدخول
34 MsgSeqNum 1 رقم تسلسل الرسالة هو 1
49 SenderCompI D broker.1047 معرف طرف التداول، حيث "broker" هو معرف الوسيط الفريد المقدم من cTrader و "1047" هو المعرف الرقمي لحساب التداول.
57 TargetSubID TRADE مؤهل جلسة إضافي. القيم الممكنة هي: "QUOTE"،"TRADE".
50 SenderSubID QUOTE قيمة معينة تستخدم لتحديد منشئ رسالة معين
52 SendingTime 20131129- 15:40:10.276 وقت إرسال الرسالة هو 29 نوفمبر 2013 (YYYYMMDD) في الساعة 15:40:10 و 276 مللي ثانية
56 TargetCompID CSERVER هدف الرسالة هو CSERVER. إنها القيمة الصالحة الوحيدة ضمن واجهة برمجة تطبيقات FIX الخاصة بـ cTrader.
98 EncryptMethod 0 حاليًا، القيمة الصالحة الوحيدة هي "0" (صفر)= NONE_OTHER (التشفير غير مستخدم)
108 HeartBtInt 30 الفاصل الزمني لنبضات القلب بالثواني. يتم تعيين القيمة في ملف "config.properties" (من جانب العميل) كـ 'SERVER.POLLING.INTERVAL'. 30 ثانية هي قيمة الفاصل الزمني الافتراضية. إذا تم تعيين HeartBtInt إلى 0، فلا تكون هناك حاجة لرسالة نبضات القلب.
553 Username 1047 معرف المستخدم الرقمي
554 Password MyPassword1 كلمة مرور المستخدم
10 CheckSum 000 طريقة حساب المجموع الاختباري هي كما يلي: جمع كل بايت من الرسالة حتى ولكن لا يشمل حقل المجموع الاختباري نفسه، ثم تحويله إلى رقم بصيغة modulo 256 مسبوق بـ "0" للحصول على رقم من ثلاثة أرقام.