Ana içeriğe geç

Tuval nasıl kullanılır

cTrader Algo API'deki tuval kontrolü, trader'lara cTrader'da metinler, şekiller ve görseller dahil olmak üzere özel görseller oluşturma yetkisi verir. Bu çizimler iş akışları için veri görselleştirmeyi iyileştirir ve daha kişiselleştirilmiş bir işlem deneyimi sunar.

Bu makalede ve ilgili videosunda, bir işlem grafiğinde tuval kontrolünü nasıl kullanacağınızı ve özelleştirilebilir parametreleri nasıl uygulayacağınızı öğreneceksiniz.

Tuval kontrolü oluşturun

Canvas sınıfına tüm algoritma türleri (cBot'lar, göstergeler ve eklentiler) tarafından erişilebilir ve kullanılabilir. Metinler, şekiller ve görseller çizmenin yanı sıra, tuval kontrolü oklar, etiketler veya hatta doğrudan grafiklere ek açıklamalar gibi özel nesneler eklemek için kullanılabilir.

Bir grafikte tuval çizen bir cBot geliştireceğiz. cTrader Algo'da bir cBot oluşturmak için Yeni düğmesine tıklayın, bir ad girin ve Oluştur'a tıklayın.

Bir tuval bildirin.

1
private Canvas _canvas;

Tuvali başlatın ve bir grafiğe ekleyin.

1
2
_canvas = new Canvas();
Chart.AddControl(_canvas);

Tuvalin içine öğeler çizin. Öğeleri konumlandırmak için Left ve Top koordinatlarını kullanın.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
var rectangle = new Rectangle
{
    Left = 50,
    Top = 50,
    Width = 100,
    Height = 50,
    StrokeColor = Color.Blue
};

_canvas.AddChild(rectangle);

var text = new TextBlock
{
    Left = 70,
    Top = 70,
    Text = "Hello Canvas!",
};

_canvas.AddChild(text);

Not

Buradaki x ve y eksenleri, grafik nesneleri veya çizimleriyle ilişkili olanlardan farklıdır. Canvas sınıfı tarafından kullanılan x ve y koordinatları, grafiğin sol üst köşesinden (0, 0)'dan başlayan sayısal değerleri temsil eder.

Aşağıdaki kodun tamamını kopyalayabilirsiniz:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class CanvasExample : Robot
    {
        [Parameter(DefaultValue = "Hello world!")]
        public string Message { get; set; }

        private Canvas _canvas;

        protected override void OnStart()
        {
           _canvas = new Canvas();
           Chart.AddControl(_canvas);

           var rectangle = new Rectangle
           {
               Left = 50,
               Top = 50,
               Width = 100,
               Height = 50,
               StrokeColor = Color.Blue 
           };

           _canvas.AddChild(rectangle);

           var text = new TextBlock
           {
               Left = 70,
               Top = 70,
               Text = "Hello Canvas!",
           };

           _canvas.AddChild(text);
        }

        protected override void OnTick()
        {
            // Handle price updates here
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

cBot'u oluşturmak için Ctrl+B kısayolunu kullanın veya Oluştur'a tıklayın.

cBot'un yerel bir örneğini eklemek için Örnek ekle'ye tıklayın, Yerel olarak seçeneğini belirleyin ve ardından Örnek ekle'ye tıklayın.

oynat simgesine tıklayın, tuval grafikte görünmelidir. Öğelerin tuval köşelerine göre nasıl yerleştirildiğini görmelisiniz.

Özelleştirilebilir parametreler ekleyin

cBot'un kod düzenleyicisine geri dönün ve grafikte gösterilen nesnelerin koordinatları özelleştirilebilir parametreler haline gelecek şekilde değişiklikler yapın.

Dikdörtgenin x ve y koordinatları için parametreler oluşturun.

1
2
3
4
5
[Parameter("Rectangle Left", DefaultValue = 50)]
public int RectangleLeft { get; set; }

[Parameter("Rectangle Top", DefaultValue = 50)]
public int RectangleTop { get; set; }

Dikdörtgenin genişliği ve yüksekliği için parametreler oluşturun.

1
2
3
4
5
[Parameter("Rectangle Width", DefaultValue = 100)]
public int RectangleWidth { get; set; }

[Parameter("Rectangle Height", DefaultValue = 50)]
public int RectangleHeight { get; set; }

Metnin x ve y koordinatları için parametreler oluşturun.

1
2
3
4
5
[Parameter("Text Left", DefaultValue = 70)]
public int TextLeft { get; set; }

[Parameter("Text Top", DefaultValue = 70)]
public int TextTop { get; set; }

Yeni özelleştirilebilir parametreleri kullanmasını sağlamak için rectangle kodunu değiştirin.

1
2
3
4
5
6
7
8
var rectangle = new Rectangle
{
    Left = RectangleLeft,
    Top = RectangleTop,
    Width = RectangleWidth,
    Height = RectangleHeight,
    StrokeColor = Color.Blue
};

Yeni özelleştirilebilir parametreleri kullanmasını sağlamak için text kodunu değiştirin.

1
2
3
4
5
6
var text = new TextBlock
{
    Left = TextLeft,
    Top = TextTop,
    Text = "Hello Canvas!",
};

Aşağıdaki kodun tamamını kopyalayabilirsiniz:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class CanvasExample : Robot
    {
        [Parameter("Rectangle Left", DefaultValue = 50 )]
        public int RectangleLeft { get; set; }

        [Parameter("Rectangle Top", DefaultValue = 50 )]
        public int RectangleTop { get; set; }

        [Parameter("Rectangle Width", DefaultValue = 100 )]
        public int RectangleWidth { get; set; }

        [Parameter("Rectangle Height", DefaultValue = 50 )]
        public int RectangleHeight { get; set; }

        [Parameter("Text Left", DefaultValue = 70 )]
        public int TextLeft { get; set; }

        [Parameter("Text Top", DefaultValue = 70 )]
        public int TextTop { get; set; }

        private Canvas _canvas;

        protected override void OnStart()
        {
           _canvas = new Canvas();
           Chart.AddControl(_canvas);

           var rectangle = new Rectangle
           {
               Left = RectangleLeft,
               Top = RectangleTop,
               Width = RectangleWidth,
               Height = RectangleHeight,
               StrokeColor = Color.Blue 
           };

           _canvas.AddChild(rectangle);

           var text = new TextBlock
           {
               Left = TextLeft,
               Top = TextTop,
               Text = "Hello Canvas!",
           };

           _canvas.AddChild(text);
        }

        protected override void OnTick()
        {
            // Handle price updates here
        }

        protected override void OnStop()
        {
            // Handle cBot stop here
        }
    }
}

cBot'u tekrar çalıştırın, dikdörtgen ve metin için özelleştirilebilir parametreler görünür olmalıdır.

Herhangi bir parametre için yeni değerler girebilirsiniz ve değişiklikler grafikte anında yansıtılacaktır.

Özet

Bu makale, işlem grafiğine nesneler çizmek için tuval kontrolünü nasıl kullanacağınızı ve değişkenler için özelleştirilebilir parametreleri nasıl uygulayacağınızı göstermiştir.