Ana içeriğe geç

Custom Frame Sample

Genel Bakış

Custom Frame Sample eklentisi, cTrader grafik arayüzünde temel çerçeve yönetimini sağlar. Özel çerçevelerin grafikte nasıl göründüğünü kontrol eder, görsel öğeleri düzenlemek ve çalışma alanınızı aşağıdaki temel işlevler aracılığıyla kişiselleştirmek için basit bir yol sunar:

  • Tek bir tıklamayla grafik arayüzüne özel bir çerçeve ekler.
  • Çoklu ekran düzenlerini ve esnek çalışma alanı yapılandırmalarını desteklemek için çerçeveyi ayırır veya yeniden ekler.
  • Grafik alanını net ve odaklanmış tutmak için artık gerekmediğinde çerçeveyi kaldırır.
  • Gerçek zamanlı grafik özelleştirmeyi ve görsel geri bildirimi desteklemek için çerçeve içinde özel bir metin bloğu görüntüler.

Bu eklenti, Aktif Sembol Panelinde özel bir grafik çerçevesi eklemenize, kaldırmanıza, eklemenize veya ayırmanıza olanak tanıyan basit bir arayüz oluşturur. Her düğme belirli bir eylemi tetikler, bu da görsel öğeleri doğrudan grafikte yönetmeyi kolaylaştırır. Eklenti yalnızca cTrader Windows veya Mac açıkken çalışır ve platform kapatıldığında otomatik olarak durur.

Eklenti oluşturma

Adım adım rehberlerimizde C# veya Python kullanarak eklentiler oluşturmayı öğrenin.

Custom Frame Sample eklenti kodu, herkese açık C# ve Python depolarımızda mevcuttur. Aynı kod, cTrader Windows veya Mac'teki algoritma oluşturma sihirbazında bir şablon olarak sağlanmıştır veya aşağıdaki kod parçasını kopyalayıp kullanabilirsiniz:

 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using System.Linq; 
using cAlgo.API;

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class CustomFrameSample : Plugin
    {
        protected override void OnStart()
        {
            var aspBlock = Asp.SymbolTab.AddBlock("Custom Frame Sample");

            var panel = new StackPanel();

            var addCustomFrameButton = new Button { Text = "Add Custom Frame", Margin = 5 };
            addCustomFrameButton.Click += OnAddCustomFrameButtonClick;
            panel.AddChild(addCustomFrameButton);

            var removeCustomFrameButton = new Button { Text = "Remove Custom Frame", Margin = 5 };
            removeCustomFrameButton.Click += OnRemoveCustomFrameButtonClick;
            panel.AddChild(removeCustomFrameButton);

            var detachCustomFrameButton = new Button { Text = "Detach Custom Frame", Margin = 5 };
            detachCustomFrameButton.Click += OnDetachCustomFrameButtonClick;
            panel.AddChild(detachCustomFrameButton);

            var attachCustomFrameButton = new Button { Text = "Attach Custom Frame", Margin = 5 };
            attachCustomFrameButton.Click += OnAttachCustomFrameButtonClick;
            panel.AddChild(attachCustomFrameButton);

            aspBlock.Child = panel;
        }

        private void OnAttachCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault(c => !c.IsAttached) is not {} customFrame)
                return;

            customFrame.Attach();
        }

        private void OnDetachCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault(c => c.IsAttached) is not {} customFrame)
                return;

            customFrame.Detach();
        }

        private void OnRemoveCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            if (ChartManager.OfType<CustomFrame>().FirstOrDefault() is not {} customFrame)
                return;

            ChartManager.RemoveFrame(customFrame.Id);
        }

        private void OnAddCustomFrameButtonClick(ButtonClickEventArgs obj)
        {
            var customFrame = ChartManager.AddCustomFrame("Custom Frame");

            customFrame.Child = new TextBlock
            {
                Text = $"Custom Frame {customFrame.Id} Child Control",
                FontSize = 32,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };
        }
    }        
}
 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import clr
clr.AddReference("cAlgo.API")

from cAlgo.API import *

class CustomFrameSample():
    def on_start(self):
        aspBlock = api.Asp.SymbolTab.AddBlock("Custom Frame Sample");

        panel = StackPanel()

        addCustomFrameButton = Button()
        addCustomFrameButton.Text = "Add Custom Frame"
        addCustomFrameButton.Margin = Thickness(5)    
        addCustomFrameButton.Click += self.on_add_custom_frame_button_click

        panel.AddChild(addCustomFrameButton)

        removeCustomFrameButton = Button()
        removeCustomFrameButton.Text = "Remove Custom Frame"
        removeCustomFrameButton.Margin = Thickness(5) 
        removeCustomFrameButton.Click += self.on_remove_custom_frame_button_click

        panel.AddChild(removeCustomFrameButton)

        detachCustomFrameButton = Button()
        detachCustomFrameButton.Text = "Detach Custom Frame"
        detachCustomFrameButton.Margin = Thickness(5) 
        detachCustomFrameButton.Click += self.on_detach_custom_frame_button_click

        panel.AddChild(detachCustomFrameButton);

        attachCustomFrameButton = Button()
        attachCustomFrameButton.Text = "Attach Custom Frame"
        attachCustomFrameButton.Margin = Thickness(5) 
        attachCustomFrameButton.Click += self.on_attach_custom_frame_button_click

        panel.AddChild(attachCustomFrameButton)

        aspBlock.Child = panel

    def on_add_custom_frame_button_click(self, args):
        customFrame = api.ChartManager.AddCustomFrame("Custom Frame");

        textBlock = TextBlock()
        textBlock.Text = f"Custom Frame {customFrame.Id} Child Control"
        textBlock.FontSize = 32
        textBlock.HorizontalAlignment = HorizontalAlignment.Center
        textBlock.VerticalAlignment = VerticalAlignment.Center

        customFrame.Child = textBlock

    def on_remove_custom_frame_button_click(self, args):
        for frame in api.ChartManager:
            if isinstance(frame.__implementation__, CustomFrame) == False:
                continue
            customFrame = CustomFrame(frame)
            api.ChartManager.RemoveFrame(customFrame.Id)
            break

    def on_detach_custom_frame_button_click(self, args):
        for frame in api.ChartManager:
            if isinstance(frame.__implementation__, CustomFrame) == False:
                continue
            customFrame = CustomFrame(frame)
            if customFrame.IsAttached == False:
                continue
            customFrame.Detach()
            break

    def on_attach_custom_frame_button_click(self, args):
        for frame in api.ChartManager:
            if isinstance(frame.__implementation__, CustomFrame) == False:
                continue
            customFrame = CustomFrame(frame)
            if customFrame.IsAttached == True:
                continue
            customFrame.Attach()
            break

Özelleştirme seçenekleri

Custom Frame Sample, doğrudan grafikte özel bir çerçeve eklemenize, kaldırmanıza ve etkileşim kurmanıza olanak tanıyan kontrol düğmeleri içerir. Aşağıdaki tablo, temel bileşenlerini ve işlevlerini özetlemektedir:

Parametre Açıklama Olası değerler
panel Ek çerçeve eylemleri veya kullanıcı arayüzü seçenekleri için düğmeler ekler veya yeniden sıralar. stackpanel [panel]
Text Netlik için düğme metnini düzenler. Add custom frame, Remove custom frame, Detach custom frame, Attach custom frame
Margin Görsel denge için kenar boşluklarını değiştirir. 5, 8, 12, vb.
AddCustomFrame Çerçeve başlığını amacını veya sembolünü yansıtacak şekilde değiştirir. chartmanager.addcustomframe(Custom frame)
TextBlock.Text Mesajı bağlamı veya tanımlayıcıyı yansıtacak şekilde değiştirir. Custom frame sample
FontSize Netlik ve düzen uyumu için boyutu ayarlar. 32, 36, 40, vb.
HorizontalAlignment Yatay içerik sunumunu değiştirmek için hizalamayı ayarlar. horizontalalignment.center
VerticalAlignment Dikey içerik sunumunu değiştirmek için hizalamayı ayarlar. verticalalignment.center
Attach() Çerçeve grafiğe yeniden eklendiğinde bir mesaj ekler. customframe.attach()
Detach() Çerçeve grafikten ayrıldığında bir mesaj ekler. customframe.detach()
RemoveFrame Düğmeyi amacını yansıtacak şekilde yeniden adlandırır. chartmanager.removeframe(customframe.id)

Kullanım durumları

Custom Frame Sample, harici hizmetler gerektirmeden etkileşimli grafik yönetimi sağlar. Aşağıdaki kullanım durumları, eklentinin işlem deneyimini nasıl geliştirebileceğini göstermektedir.

Kullanım durumu Senaryo Değer
İşlem sinyallerini vurgulayın EURUSD'de kırılmaya dikkat edin gibi bir mesajla bir çerçeve ekleyin. Grafiğe özel uyarılara veya kullanıcı notlarına dikkat çeker.
Çoklu ekran yönetimi Çerçeveleri ayırın ve başka ekranlara taşıyın. Grafik görünürlüğünü genişletir ve çoklu ekran işlem kurulumlarını destekler.
Özel çalışma alanı düzenlemesi Kişisel işlem iş akışınıza uyacak şekilde çerçeveler kullanarak grafik alanını düzenleyin. Kişisel işlem iş akışınıza göre grafik alanını düzenlemenize yardımcı olur.
Özel görsel işaretleyiciler Emir girişleri gibi grafik olaylarını vurgulamak için notlarla çerçeveleri manuel olarak ekleyin. Kalıcı çizimler olmadan grafikteki önemli noktaları etiketlemek için esnek bir yol sağlar.

Özet

Bu eklenti, cTrader grafiklerinde özel çerçeveleri doğrudan yönetmek için pratik bir yol sunar. Çerçeveleri eklemek, kaldırmak, eklemek veya ayırmak için basit kontrollerle, çalışma alanınızı kişiselleştirmenize, önemli bilgileri vurgulamanıza ve grafik düzenlerini kolayca düzenlemenize yardımcı olur.

Daha fazla geliştirme ayrıntısı için eklenti belgelerimize bakın.