Ana içeriğe geç

cTrader Algo'da özel pencerelerle çalışma

Bu makalede ve ilgili videosunda, cTrader algoritmaları oluştururken özel pencerelerle çalışma hakkında konuşacağız. Özel pencerelerin ne olduğunu açıklayacağız ve cBot'larınızda ve göstergelerinizde nasıl kullanılabileceğini. Ayrıca bir cBot'ta özel bir pencere kullanmaya dair bir örnek oluşturacağız.

Özel pencere örneği

Şimdi Algo uygulamasına geçeceğiz ve özel pencerelerin cBot'larınızda ve göstergelerinizde nasıl kullanılabileceğine dair bir örnek göreceğiz. Yeni bir gösterge oluşturacağız; içinde, basitçe dokümantasyondan hazır bir örnek kullanacağız.

Kodu dokümantasyondan kopyalayıp kod düzenleyici penceresine yapıştırın. Ardından, göstergeyi oluşturun ve bir örneğini bir grafiğe ekleyin.

Gösterge eklenir eklenmez, özel bir pencerenin açıldığını görmeliyiz. Bu pencere, göstergenin şu anda eklendiği grafiğe ait sembol hakkında bilgi görüntüleyen karmaşık bir form içerir. Bu form, özel pencerelerle nelerin başarılabileceğine dair harika bir örnektir.

Özel pencereler ve WPF ile WinForms

Özel pencereleri kullanmanın WPF veya WinForms kullanmaktan daha iyi olmasının birkaç nedeni vardır. cTrader özel pencereleri, cTrader'ın görünüm ve hissine uyan yerel bir stille gelir. WinForms ve WPF pencereleri, farklı iş parçacıklarında çalıştıkları için özel işlem ve gelişmiş programlama becerileri gerektirir. cTrader özel pencereleri kullanıldığında bu tür sorunlar tamamen önlenir.

Özel pencere oluşturma

Şimdi sıfırdan nasıl özel bir pencere oluşturabileceğinizi göstereceğiz. Yeni bir gösterge oluşturacağız ve ona "Özel Pencere Örneği" adını vereceğiz. Bu örnekte, özel bir pencere ekleyeceğiz ve ardından ona bazı özel kontroller ekleyeceğiz. Pencerenin kendisi Initialize() metodunda bildirilecek; pencereyi göstermek için window.Show() metodunu çağıracağız.

 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();
}

Pencereyi görmek için göstergeyi oluşturabilir ve bir grafiğe ekleyebiliriz.

Pencereye kontroller ekle

Şimdi pencereye özel kontroller ekleyeceğiz. Bu kontroller, içinde metin bulunan bir metin kutusu şeklinde olacaktır.

 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();

Özel kontrollerimizin nasıl göründüğünü görmek için göstergeyi yeniden derleyecek ve yeni bir örnek ekleyeceğiz.

Pencere özelliklerini değiştir

 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();

Göstergemizi bir kez daha yeniden derleyecek ve bir örnek ekleyeceğiz. Şimdi pencere alanımız 800 piksel genişliğinde ve yüksekliğinde bir dikdörtgendir.

Bir sonraki değişiklik, pencerenin yeniden boyutlandırılabileceği bir aralık eklemek olacaktır. Bunu yapmak için MinHeight, MaxHeight, MinWidth ve MaxWidth parametrelerini ekleyeceğiz.

 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();

Göstergeyi yeniden derleyeceğiz ve bir örnek eklendikten sonra boyutunu denemeye çalışabiliriz. Yeniden boyutlandırma yalnızca belirtilen genişlik ve yükseklik aralığında mümkündür.

Bir pencerenin arka plan rengini de değiştirebilir ve yeniden boyutlandırılamaz hale getirebiliriz.

 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
};

Olağan eylemleri gerçekleştirdikten sonra (göstergeyi yeniden derleme ve bir örnek ekleme), pencerenin yeni bir arka plan rengi olmalıdır.

Özet

cTrader özel pencereleri esnektir ve yüksek derecede özelleştirilebilir. Yukarıda belirtilen özelliklere ek olarak, kenar boşluklarını ve dolguyu, özel pencerelerin görünürlüğünü ve belirli koşullar altında etkin olup olmadıklarını da değiştirebilirsiniz. cTrader özel pencereleri, diğer birçok olay işleyicisine ek olarak, bunları göstermek, gizlemek ve kapatmak için yöntemler de sunar.