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

WebSocket Sample

نظرة عامة

تمكّن إضافة WebSocket Sample من دمج البيانات في الوقت الفعلي في cTrader من خلال الوظائف الرئيسية التالية:

  • يربط cTrader بخادم WebSocket خارجي لاستقبال تدفقات البيانات في الوقت الفعلي.
  • يعرض المحتوى المباشر مثل الأخبار أو تنبيهات التداول مباشرة في لوحة الرمز النشط باستخدام كتلة نص مخصصة.
  • يقوم بتحديث اللوحة تلقائيًا بالرسائل الجديدة عند استلامها، مما يتيح المعلومات في الوقت المناسب.

تعمل الإضافة من خلال لوحة قابلة للتكوين من قبل المستخدم. تظل نشطة أثناء تشغيل cTrader Windows أو Mac وتحرر موارد النظام تلقائيًا عند إيقافها.

إنشاء الإضافة

تعرف على كيفية إنشاء وتحرير وبناء الإضافات من قالب أو من الصفر في دليلنا خطوة بخطوة.

يمكنك العثور على كود إضافة WebSocket Sample على GitHub، أو ببساطة نسخه أدناه.

نموذج الكود
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class WebSocketSample : Plugin
    {
        // Declaring our TextBlock that will display the news contents
        private TextBlock _textBlock = new TextBlock
        {
            Text = "Starting news feed...",
            FontSize = 20,
            FontWeight = FontWeight.ExtraBold,
            TextAlignment = TextAlignment.Center,
            Padding = new Thickness(5, 5, 5, 5),
        };

        // _webSocketClientOptions allow us to define several settings
        // such as the keep-alive interval of the WebSocket connection
        private static WebSocketClientOptions _webSocketClientOptions = new WebSocketClientOptions 
        {
            KeepAliveInterval = new TimeSpan(0, 1, 30),
            UseDefaultCredentials = true,
        };

        // Passing our _webSocketClientOptions to the WebSocketClient
        // constructor
        private WebSocketClient _webSocketClient = new WebSocketClient(_webSocketClientOptions);

        // This API is entirely fictional
        private readonly Uri _targetUri = new Uri("ws://amazingnews.com:8000");

        protected override void OnStart()
        {
            // Connecting to the API and sending the initial message
            _webSocketClient.Connect(_targetUri);
            _webSocketClient.Send("Hello");

            // Declaring a custom handler for the TextReceived event
            _webSocketClient.TextReceived += NewsReceived;

            // Adding our TextBlock as a child of a custom
            // AspBlock
            var aspBlock = Asp.SymbolTab.AddBlock("News");
            aspBlock.Height = 300;
            aspBlock.Child = _textBlock;
        }

        protected override void OnStop()
        {
            // The WebSocketClient must be disposed of in OnStop,
            // otherwise it will consume system resources
            _webSocketClient.Close(WebSocketClientCloseStatus.NormalClosure);
        }

        private void NewsReceived(WebSocketClientTextReceivedEventArgs args) 
        {
            // Updading the text inside the TextBlock on every
            // piece of news received
            if (args.Text.Length != 0) 
            {
                _textBlock.Text = args.Text;
            }
        }
    }        
}

خيارات التخصيص

تجمع الإضافة بين إعدادات WebSocket وعناصر واجهة المستخدم لتقديم محتوى نصي مباشر. فيما يلي تفصيل لمكوناتها الرئيسية ووظائفها:

المعلمة الوصف القيم الممكنة
Text يعرض المحتوى الأولي في كتلة النص. Starting news feed…
AddBlock يضيف كتلة إلى لوحة الرمز النشط. asp.symboltab.addblock(news)
_textBlock.Text يحدث كتلة النص برسالة WebSocket المستلمة. args.text
FontSize يحدد حجم النص. 16، 18، 20، إلخ.
FontWeight يحدد سمك النص. regular، bold، extrabold، إلخ.
TextAlignment يحاذي النص داخل كتلة النص. left، centre، إلخ.
Padding يحدد المساحة حول كتلة النص. (5, 5, 5, 5)، (8, 8, 8, 8)، إلخ.
aspBlock.Height يحدد ارتفاع الكتلة المخصصة في واجهة المستخدم. 300px، 350px، إلخ.
_targetUri يوفر نقطة نهاية WebSocket لتغذية البيانات. wss://marketdata.tradermade.com/feedadv
KeepAliveInterval يحدد الفاصل الزمني لنبضات الحفاظ على اتصال WebSocket. (0, 1, 30) (ساعات، دقائق، ثواني)
_webSocketClient.Send يرسل رسالة الاشتراك الأولية إلى خادم WebSocket. {userkey:..., symbol:eurusd}
UseDefaultCredentials يكوّن إعداد المصادقة لاتصال WebSocket. true أو false

ملاحظة

تأكد من أن خادم WebSocket يدعم البروتوكول وتنسيقات الرسائل المتوقعة من قبل التنفيذ الخاص بك.

حالات الاستخدام

يوفر WebSocket Sample طريقة قوية ومرنة لتوسيع cTrader بتغذيات البيانات في الوقت الفعلي. إنه يدعم مجموعة واسعة من عمليات التكامل المصممة خصيصًا لاحتياجات التداول المختلفة. فيما يلي حالات استخدام عملية توضح كيف يمكن للإضافة تحسين تجربة التداول.

حالة الاستخدام السيناريو القيمة
تغذيات الأخبار العاجلة عرض الأخبار الاقتصادية في الوقت الفعلي، والعناوين الرئيسية المؤثرة في السوق والأحداث العاجلة مباشرة في المنصة. تبقيك على اطلاع بالأخبار العاجلة التي قد تؤثر على تحركات السوق.
بيانات تبادل العملات المشفرة بث تحديثات التداول المباشرة، وأسعار التداول، وتغيرات دفتر الطلبات أو تنبيهات التقلبات للأصول المشفرة. يعزز الوعي في الوقت الفعلي بظروف سوق العملات المشفرة والتحركات السعرية المفاجئة.
مقاييس التقلب والاقتصاد الكلي عرض مستويات التقلب في الوقت الفعلي أو مؤشرات النشاط غير العادي للأدوات المستهدفة في لوحة الرمز النشط. يدعم الوعي على مستوى الاقتصاد الكلي ويساعد في تحديد فرص التداول خلال الظروف السوقية القصوى.
عارض مخرجات النموذج الكمي عرض مخرجات النموذج الديناميكية (مثل زيادة الزخم على EURUSD). يربط التحليل الكمي بقرارات التداول بطريقة مرئية سهلة الوصول.
تدفقات إشارات التداول الخارجية بث الإشارات الآلية من نماذج التعلم الآلي (ML) للخدمات الخارجية الموجهة عبر WebSocket. يمكّن التسليم الفوري للإشارات للمستخدمين الذين يتبعون استراتيجيات خوارزمية أو روبوتات الطرف الثالث.

الملخص

يوضح هذا النموذج للإضافة كيفية دمج المحتوى الخارجي في الوقت الفعلي في cTrader باستخدام اتصال WebSocket. بينما يعرض النموذج تغذية أخبار مباشرة في لوحة الرمز النشط، فإن نفس النهج يدعم الإشارات والتنبيهات والتحليلات والمزيد.

لمزيد من تفاصيل التطوير، راجع وثائق الإضافة الخاصة بنا.