الحصول على بيانات الرمز¶
يعد الحصول على بيانات الرمز وتفسيرها (على سبيل المثال، أسعار الفتح والإغلاق لجميع الشموع لفترة محددة) أمراً أساسياً في أي تطبيق يحتوي على أي من الوظائف التالية:
- الرسوم البيانية - لإنشاء رسوم بيانية شريطية أو خطية، تحتاج إلى معرفة بيانات الشموع والأسعار التاريخية والحية.
- إحصائيات السوق - إذا كنت تريد عرض إحصائيات السوق (مثل تغيرات الأسعار اليومية للرموز الفردية)، يجب عليك الحصول على الأسعار التاريخية والحية.
- إعادة التشغيل - في تطبيقك، قد تسمح للمتداولين بالعودة إلى فترة سابقة والتداول على البيانات التاريخية. للقيام بذلك، ستحتاج إلى الحصول على ومعالجة بيانات الشموع والنقرات السابقة.
في هذا البرنامج التعليمي، سنوضح كيف يمكنك الحصول على ومعالجة بيانات الشموع والنقرات التاريخية والحية، وعروض الأسعار العميقة الحية.
لاحظ أن البرنامج التعليمي يوفر فقط مقتطف كود للحصول على بيانات الشموع التاريخية. نظراً لأن المنطق الأساسي يظل كما هو بغض النظر عن الإجراء الذي تقوم به، يمكنك تكييف هذا المقتطف للحصول على أنواع أخرى من البيانات.
العمل مع JSON
عند العمل مع JSON، لا يزال بإمكانك إعادة استخدام الكود من هذا البرنامج التعليمي؛ ومع ذلك، ستحتاج إلى تعديله قليلاً اعتماداً على نهجك في التسلسل وفك التسلسل.
الحصول على بيانات الشموع التاريخية ¶
للحصول على بيانات الشموع التاريخية، قم بتنفيذ الإجراءات التالية:
- قم بتهيئة كائن يمثل رسالة
ProtoOAGetTrendbarsReq. - املأ خصائص الكائن بـ
ctidTraderAccountIdالمطلوب، وsymbolId، وProtoOATrendbarPeriod، وcountالخاص بعدد trendbars المراد إرجاعها وtoTimestampوfromTimestampللطوابع الزمنية Unix.
قيود الطابع الزمني
لاحظ أن هناك بعض القيود على المسافة القصوى الممكنة بين toTimestamp وfromTimestamp. تعتمد هذه القيود على ProtoOATrendPeriod المحدد. لمعرفة المزيد، انقر هنا.
- أرسل الرسالة التي تم إنشاؤها حديثاً واستلم رداً من نوع
ProtoOAGetTrendbarsRes. قم بالوصول إلى حقلtrendbarللحصول على قائمة أشرطة الاتجاه. - قم بتحويل البيانات من التنسيق النسبي إلى سعر الرمز الفعلي. للقيام بذلك، احصل أولاً على السعر المنخفض لـ trendbar واقسمه على 100000. ثم قم بتقريب النتيجة إلى أرقام الرمز (على سبيل المثال، رقمين بعد الفاصل). للحصول على الأسعار المرتفعة والافتتاح والإغلاق لـ trendbar، أضف دلتا trendbar لكل من هذه الأسعار إلى السعر المنخفض لـ trendbar. بعد ذلك، اقسم كل رقم على 100000 وقرب النتيجة إلى أرقام الرمز.
يمكنك إكمال هذه الإجراءات بإعادة استخدام الكود أدناه.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
الحصول على بيانات التيك التاريخية ¶
لاستلام بيانات التيك التاريخية، قم بتنفيذ الإجراءات التالية:
- قم بتهيئة كائن يمثل رسالة
ProtoOAGetTickDataReq. - املأ خصائص الكائن بـ
ctidTraderAccountIdالمطلوب، وsymbolId، ونوعtypeالسعر بالإضافة إلىfromTimestampوtoTimestamp.
قيود الطابع الزمني
من المستحيل طلب بيانات التيك التاريخية لفترة أكبر من أسبوع واحد. وبالتالي، يجب ألا يكون الفرق بين toTimestamp وfromTimestamp المحددين أكبر من 604800000.
- أرسل الرسالة التي تم إنشاؤها حديثاً واستلم رداً من نوع
ProtoOAGetTickDataRes. قم بالوصول إلى حقلtickDataللحصول على قائمة عناصر من نوعProtoOATickData. - قم بتحويل البيانات من التنسيق النسبي إلى سعر الرمز الفعلي. للقيام بذلك، اقسم كل تيك على 100000 وقرب النتيجة إلى أرقام الرمز.
طلب عدد كبير من التيكات
هناك حد لعدد التيكات التي يمكن إرجاعها في رسالة ProtoOAGetTickDataRes. إذا تم تجاوز هذا الحد (على سبيل المثال، كان هناك عدد كبير من التيكات خلال الفترة المحددة)، فستتضمن رسالة ProtoOAGetTickDataRes فقط أول X تيك، حيث X هو رقم أقل من حد التيك. يعتمد الحد الدقيق على تكوين الواجهة الخلفية لـ cTrader.
للتحقق مما إذا كان هناك المزيد من التيكات أكثر مما تم إرجاعه في الرسالة المستلمة، استخدم علامة hasMore.
الحصول على بيانات الأشرطة المباشرة ¶
لاستلام الأشرطة المباشرة، قم بتنفيذ الإجراءات التالية:
- قم بتهيئة متغير يمثل رسالة
ProtoOAGetTrendbarsReq. - املأ خصائص الكائن بـ
ctidTraderAccountIdالمطلوب، وsymbolId، وProtoOATrendbarPeriod، وcountالخاص بعدد trendbars المراد إرجاعها، وtoTimestampوfromTimestampللطوابع الزمنية Unix.
قيود الطابع الزمني
هناك بعض القيود على المسافة القصوى الممكنة بين toTimestamp وfromTimestamp. تعتمد هذه القيود على ProtoOATrendPeriod المحدد. لمعرفة المزيد، انقر هنا.
-
أرسل الرسالة التي تم إنشاؤها حديثاً واستلم رداً من نوع
ProtoOAGetTrendbarsRes. قم بالوصول إلى حقلtrendbarللحصول على قائمة أشرطة الاتجاه. -
قم بتحويل البيانات من التنسيق النسبي إلى سعر الرمز الفعلي. للقيام بذلك، احصل أولاً على السعر المنخفض لـ trendbar واقسمه على 100000. ثم قم بتقريب النتيجة إلى أرقام الرمز (على سبيل المثال، رقمين بعد الفاصل). للحصول على الأسعار المرتفعة والافتتاح والإغلاق لـ trendbar، أضف دلتا trendbar لكل من هذه الأسعار إلى السعر المنخفض لـ trendbar. بعد ذلك، اقسم كل رقم على 100000 وقرب النتيجة إلى أرقام الرمز.
-
قم بتهيئة كائن يمثل رسالة
ProtoOASubscribeLiveTrendbarReq. -
املأ خصائص الكائن بـ
ctidTraderAccountIdالمطلوب، وProtoOATrendbarPeriodوsymbolId. -
قم بنفس الشيء لكائن يمثل رسالة
ProtoOASubscribeSpotsReq. -
أرسل رسالة
ProtoOASubscribeSpotsReqورسالةProtoOASubscribeLiveTrendbarReqبهذا الترتيب واستلم ردوداً منProtoOASubscribeSpotsResونوعProtoOASubscribeLiveTrenbarsRes. في هذه المرحلة، أنت مشترك في بيانات الأشرطة المباشرة ويجب أن تتلقى رسائل من نوعProtoOASpotEvent.
الاشتراك في trendbars المباشرة
يتطلب الاشتراك بنجاح في trendbars المباشرة أولاً الاشتراك في أحداث السبوت.
- عندما تتلقى رسالة
ProtoOASpotEventجديدة، استخدم حقلtrendbarللحصول على بيانات آخر شريط مغلق. - قم بتحويل البيانات من التنسيق النسبي إلى أسعار الرمز الفعلية. للقيام بذلك، احصل أولاً على السعر المنخفض لـ trendbar واقسمه على 100000. ثم قم بتقريب النتيجة إلى أرقام الرمز (على سبيل المثال، رقمين بعد الفاصل). للحصول على الأسعار المرتفعة والافتتاح والإغلاق لـ trendbar، أضف دلتا trendbar لكل من هذه الأسعار إلى السعر المنخفض لـ trendbar. بعد ذلك، اقسم كل رقم على 100000 وقرب النتيجة إلى أرقام الرمز.
لإلغاء الاشتراك في بيانات trendbar المباشرة، يمكنك دائماً إرسال رسالة ProtoOAUnsubscribeLiveTrendbarsReq تحتوي على symbolId و period و ctidTraderAccountId الخاص بك. إذا كان طلبك ناجحاً، يجب أن تتلقى رداً من نوع ProtoOAUnsubscribeLiveTrenbarRes. سيظل اشتراكك في أحداث التسعير قائماً.
الحصول على الأسعار المباشرة ¶
لتلقي أسعار العرض والطلب المباشرة لرمز ما، قم بتنفيذ الإجراءات التالية:
- قم بتهيئة كائن يمثل رسالة
ProtoOASubscribeSpotsReq. - املأ خصائص الكائن بـ
ctidTraderAccountIdوsymbolId، واختيارياً، القيمة المنطقيةsubscribeToSpotTimestamp. - أرسل الرسالة التي تم إنشاؤها حديثاً وتلقى رداً من نوع
ProtoOASubscribeSpotsRes. في هذه المرحلة، أنت مشترك في بيانات الأسعار المباشرة ويجب أن تتلقى رسائل من نوعProtoOASpotEvent. - عندما تتلقى رسالة
ProtoOASpotEventجديدة، قم بالوصول إلى حقليbidوaskللحصول على أحدث الأسعار. لاحظ أنه لا يزال عليك تحويل البيانات إلى قيمة سعر فعلية بقسمتها على 100000 وتقريبها إلى أرقام الرمز.
حقول العرض والطلب
نظراً لأن حقلي bid و ask اختياريان، قد لا ترى بالضرورة رسائل ProtoOASpotEvent حيث يتم تحديد كليهما.
لإلغاء الاشتراك في بيانات الأسعار، يمكنك دائماً إرسال رسالة ProtoOAUnsubscribeSpotsReq تحتوي على symbolId و ctidTraderAccountId الخاص بك. إذا كان طلبك ناجحاً، يجب أن تتلقى رداً من نوع ProtoOAUnsubscribeSpotsRes. في هذه المرحلة، يجب أن تتوقف عن تلقي أحداث التسعير.
أسعار العمق ¶
أخيراً وليس آخراً، يمكنك أيضاً تلقي أسعار العمق أو المستوى الثاني المباشرة لرمز ما. للقيام بذلك، قم بتنفيذ الإجراءات التالية.
يمكنك الاشتراك وتلقي أسعار العمق أو المستوى الثاني المباشرة لرمز ما من API.
- قم بتهيئة كائن يمثل رسالة
ProtoOASubscribeDepthQuotesReq. - املأ خصائص الكائن بـ
ctidTraderAccountIdوsymbolId. - أرسل الرسالة التي تم إنشاؤها حديثاً وتلقى رداً من نوع
ProtoOASubscribeDepthQuotesRes. في هذه المرحلة، أنت مشترك في أسعار العمق، مما يعني أنه يجب أن تبدأ في تلقي رسائلProtoOADepthEvent. - عندما تتلقى رسالة
ProtoOADepthEventجديدة، ستحتاج إلى استخدام حقليnewQuotesوdeletedQuotesللحصول على أحدث بيانات العمق. ستحتاج أيضاً إلى تحويل البيانات إلى قيمة سعر فعلية بقسمتها على 100000 وتقريب النتيجة إلى أرقام الرمز. ستحتاج أيضاً إلى تحويل حجم سعر العمق إلى وحدات بقسمته على 100.
لإلغاء الاشتراك في أحداث العمق، يمكنك دائماً استخدام رسالة ProtoOAUnsubscribeDepthQuotesReq مع تحديد symbolId و ctidTraderAccountId. يجب أن تتلقى رسالة من نوع ProtoOAUnsubscribeDepthQuotesRes؛ بعد ذلك، يجب أن تتوقف عن تلقي أحداث العمق.