ข้ามไปที่เนื้อหา

การทำงานกับหน้าต่างแบบกำหนดเองใน cTrader Algo

ในบทความนี้และวิดีโอที่เกี่ยวข้อง เราจะพูดถึงการทำงานกับหน้าต่างแบบกำหนดเองเมื่อสร้างอัลกอริทึม cTrader เราจะอธิบายว่าหน้าต่างแบบกำหนดเองคืออะไรและสามารถใช้ใน cBot และอินดิเคเตอร์ของคุณได้อย่างไร เราจะสร้างตัวอย่างการใช้หน้าต่างแบบกำหนดเองใน cBot ด้วย

ตัวอย่างหน้าต่างแบบกำหนดเอง

ตอนนี้เราจะสลับไปที่แอป Algo เพื่อดูตัวอย่างว่าหน้าต่างแบบกำหนดเองสามารถใช้ใน cBot และอินดิเคเตอร์ของคุณได้อย่างไร เราจะสร้างอินดิเคเตอร์ใหม่ ในนั้นเราจะใช้ตัวอย่างสำเร็จรูปจาก เอกสาร

คัดลอกและวางโค้ดจากเอกสารลงในหน้าต่างตัวแก้ไขโค้ด จากนั้นสร้างอินดิเคเตอร์และ เพิ่มอินสแตนซ์ ลงในกราฟ

ทันทีที่เพิ่มอินดิเคเตอร์ เราควรเห็นหน้าต่างแบบกำหนดเองปรากฏขึ้น หน้าต่างนี้มีฟอร์มที่ซับซ้อนแสดงข้อมูลเกี่ยวกับสัญลักษณ์ที่กราฟของอินดิเคเตอร์เชื่อมต่ออยู่ในปัจจุบัน ฟอร์มนี้เป็นตัวอย่างที่ดีของสิ่งที่สามารถทำได้ด้วยหน้าต่างแบบกำหนดเอง

หน้าต่างแบบกำหนดเองเทียบกับ WPF และ WinForms

มีเหตุผลสองสามประการที่ทำให้การใช้หน้าต่างแบบกำหนดเองดีกว่าการใช้ WPF หรือ WinForms หน้าต่างแบบกำหนดเองของ cTrader มาพร้อมกับสไตล์เนทีฟที่เข้ากับรูปลักษณ์และความรู้สึกของ cTrader หน้าต่าง WinForms และ WPF ต้องการการจัดการพิเศษและทักษะการเขียนโปรแกรมขั้นสูงเนื่องจากทำงานบนเธรดที่แตกต่างกัน ปัญหาดังกล่าวจะหลีกเลี่ยงได้อย่างสมบูรณ์เมื่อใช้หน้าต่างแบบกำหนดเองของ cTrader

สร้างหน้าต่างแบบกำหนดเอง

ตอนนี้เราจะแสดงวิธีสร้างหน้าต่างแบบกำหนดเองตั้งแต่เริ่มต้น เราจะสร้างอินดิเคเตอร์ใหม่และเรียกว่า "Custom Window Example" ในตัวอย่างนี้ เราจะเพิ่มหน้าต่างแบบกำหนดเองแล้วเพิ่มการควบคุมแบบกำหนดเองบางอย่างลงไป หน้าต่างเองจะถูกประกาศในเมธอด 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 ยังเปิดเผยวิธีการแสดง ซ่อน และปิดพวกมัน นอกเหนือจากตัวจัดการเหตุการณ์อื่นๆ อีกหลายตัว