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

العمل مع النوافذ المخصصة في cTrader Algo

في هذه المقالة والفيديو المقابل لها، سنتحدث عن العمل مع النوافذ المخصصة عند إنشاء خوارزميات cTrader. سنشرح ما هي النوافذ المخصصة وكيف يمكن استخدامها في cBots والمؤشرات الخاصة بك. سنقوم أيضًا بإنشاء مثال لاستخدام نافذة مخصصة في cBot.

مثال النافذة المخصصة

سننتقل الآن إلى تطبيق Algo لنرى توضيحًا لكيفية استخدام النوافذ المخصصة في cBots والمؤشرات الخاصة بك. سنقوم بإنشاء مؤشر جديد؛ فيه، سنستخدم ببساطة مثالاً جاهزًا من الوثائق.

انسخ والصق الكود من الوثائق في نافذة محرر الكود. ثم قم ببناء المؤشر وإضافة نسخة منه إلى الرسم البياني.

بمجرد إضافة المؤشر، يجب أن نرى نافذة مخصصة تظهر. تحتوي هذه النافذة على نموذج معقد يعرض معلومات حول الرمز الذي يتم إرفاق الرسم البياني به حاليًا. هذا النموذج هو مثال رائع لما يمكن تحقيقه باستخدام النوافذ المخصصة.

النوافذ المخصصة مقابل WPF وWinForms

هناك عدة أسباب تجعل استخدام النوافذ المخصصة أفضل من استخدام WPF أو WinForms. تأتي النوافذ المخصصة في cTrader بالفعل بنمط أصلي يتطابق مع مظهر وإحساس cTrader. تتطلب نوافذ WinForms وWPF معالجة خاصة ومهارات برمجة متقدمة لأنها تعمل على مسارات مختلفة. يتم تجنب مثل هذه المشكلات تمامًا عند استخدام النوافذ المخصصة في cTrader.

إنشاء نافذة مخصصة

سنوضح الآن كيف يمكنك إنشاء نافذة مخصصة من البداية. سنقوم بإنشاء مؤشر جديد ونسميه "مثال النافذة المخصصة". في هذا المثال، سنضيف نافذة مخصصة ثم نضيف بعض عناصر التحكم المخصصة إليها. سيتم الإعلان عن النافذة نفسها في طريقة Initialize()؛ لإظهار النافذة، سنقوم باستدعاء طريقة window.Show().

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
protected override void Initialize()
{
    var window = new Window
    {
        Title = "My Window",
        WindowStartupLocation = WindowStartupLocation.CenterScreen,
        Topmost = true
    };

    window.Show();
}

لرؤية النافذة، يمكننا بناء المؤشر وإضافته إلى الرسم البياني.

إضافة عناصر تحكم إلى النافذة

سنقوم الآن بإضافة عناصر تحكم مخصصة إلى النافذة. ستأخذ هذه العناصر شكل مربع نص يحتوي على بعض النصوص.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
var window = new Window
{
    Child = new TextBlock 
    {
        Text = "Hi, This is my Window!",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center,
        FontSize = 20,
        FontWeight = FontWeight.UltraBold
    },
    Title = "My Window",
    WindowStartupLocation = WindowStartupLocation.CenterScreen,
    Topmost = true
};             

window.Show();

سنعيد بناء المؤشر ونضيف نسخة جديدة لنرى كيف تبدو عناصر التحكم المخصصة لدينا.

تعديل خصائص النافذة

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
var window = new Window
{
    Child = new TextBlock 
    {
        Text = "Hi, This is my Window!",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center,
        FontSize = 20,
        FontWeight = FontWeight.UltraBold
    },
    Title = "My Window",
    WindowStartupLocation = WindowStartupLocation.CenterScreen,
    Topmost = true,
    Width = 800,
    Height = 800
};             

window.Show();

سنقوم مرة أخرى بإعادة بناء المؤشر وإضافة نسخة. الآن منطقة النافذة لدينا هي مستطيل بعرض وارتفاع 800 بكسل.

التغيير التالي سيكون إضافة نطاق يمكن فيه تغيير حجم النافذة. للقيام بذلك، سنضيف معلمات MinHeight وMaxHeight وMinWidth وMaxWidth.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
var window = new Window
{
    Child = new TextBlock 
    {
        Text = "Hi, This is my Window!",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center,
        FontSize = 20,
        FontWeight = FontWeight.UltraBold
    },
    Title = "My Window",
    WindowStartupLocation = WindowStartupLocation.CenterScreen,
    Topmost = true,
    Width = 800,
    Height = 800,
    MinHeight = 600,
    MaxHeight = 800,
    MinWidth = 600,
    MaxWidth = 800
};             

window.Show();

سنعيد بناء المؤشر وبعد إضافة نسخة، يمكننا محاولة تغيير حجمها. يمكن تغيير الحجم فقط ضمن نطاق العرض والارتفاع المحدد.

يمكننا أيضًا تغيير لون خلفية النافذة وجعلها غير قابلة لتغيير الحجم.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
var window = new Window
{
    Child = new TextBlock 
    {
        Text = "Hi, This is my Window!",
        VerticalAlignment = VerticalAlignment.Center,
        HorizontalAlignment = HorizontalAlignment.Center,
        FontSize = 20,
        FontWeight = FontWeight.UltraBold
    },
    Title = "My Window",
    WindowStartupLocation = WindowStartupLocation.CenterScreen,
    Topmost = true,
    Width = 800,
    Height = 800,
    MinHeight = 600,
    MaxHeight = 800,
    MinWidth = 600,
    MaxWidth = 800,
    BackgroundColor = Color.Black,
    ResizeMode = ResizeMode.NoResize
};

بعد أن نقوم بالإجراءات المعتادة (إعادة بناء المؤشر وإضافة نسخة)، يجب أن يكون للنافذة لون خلفية جديد.

الملخص

النوافذ المخصصة في cTrader مرنة ويمكن تخصيصها بدرجة عالية. بالإضافة إلى الخصائص المذكورة أعلاه، يمكنك أيضًا تغيير الهوامش والحشو، ورؤية النوافذ المخصصة وما إذا كانت نشطة في ظل ظروف معينة. تعرض النوافذ المخصصة في cTrader أيضًا طرقًا لإظهارها وإخفائها وإغلاقها بالإضافة إلى العديد من معالجات الأحداث الأخرى.