Przejdź do treści

Jak używać kanwy

Kontrolka kanwy z interfejsu API cTrader Algo umożliwia traderom tworzenie niestandardowych elementów wizualnych, w tym tekstów, kształtów i obrazów w cTrader. Te rysunki poprawiają wizualizację danych dla przepływów pracy i zapewniają bardziej spersonalizowane doświadczenie handlowe.

W tym artykule i odpowiadającym mu filmie dowiesz się, jak używać kontrolki kanwy na wykresie handlowym i wdrażać konfigurowalne parametry.

Tworzenie kontrolki kanwy

Klasa Canvas jest dostępna i może być używana przez wszystkie typy algorytmów (cBoty, wskaźniki i wtyczki). Oprócz rysowania tekstów, kształtów i obrazów kontrolka kanwy może być używana do dodawania specjalnych obiektów, takich jak strzałki, etykiety, a nawet adnotacje bezpośrednio do wykresów.

Opracujemy cBota, który rysuje kanwę na wykresie. W cTrader Algo kliknij przycisk Nowy, aby utworzyć cBota, wprowadź nazwę i kliknij Utwórz.

Zadeklaruj kanwę.

1
private Canvas _canvas;

Zainicjuj kanwę i dodaj ją do wykresu.

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

Narysuj elementy wewnątrz kanwy. Użyj współrzędnych Left i Top, aby ustawić położenie elementów.

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

Uwaga

Osie x i y różnią się tutaj od tych powiązanych z obiektami wykresu lub rysunkami. Współrzędne x i y używane przez klasę Canvas reprezentują wartości liczbowe zaczynające się od (0, 0) od lewego górnego rogu wykresu.

Możesz skopiować pełny kod poniżej:

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

Aby zbudować cBota, użyj skrótu klawiszowego Ctrl+B lub kliknij Zbuduj.

Dodaj lokalną instancję cBota, klikając Dodaj instancję, wybierając opcję Lokalnie, a następnie klikając Dodaj instancję.

Kliknij ikonę odtwarzania, a kanwa powinna pojawić się na wykresie. Powinieneś zobaczyć, jak elementy są umieszczone w stosunku do rogów kanwy.

Dodawanie konfigurowalnych parametrów

Wróć do edytora kodu dla cBota i wprowadź zmiany, aby współrzędne obiektów wyświetlanych na wykresie stały się konfigurowalnymi parametrami.

Utwórz parametry dla współrzędnych x i y prostokąta.

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

Utwórz parametry dla szerokości i wysokości prostokąta.

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

Utwórz parametry dla współrzędnych x i y tekstu.

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

Zmodyfikuj kod rectangle, aby umożliwić mu używanie nowych konfigurowalnych parametrów.

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

Zmodyfikuj kod text, aby umożliwić mu używanie nowych konfigurowalnych parametrów.

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

Możesz skopiować pełny kod poniżej:

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

Uruchom cBota ponownie, konfigurowalne parametry dla prostokąta i tekstu powinny być widoczne.

Możesz wprowadzić nowe wartości dla dowolnego parametru, a zmiany zostaną natychmiast odzwierciedlone na wykresie.

Podsumowanie

Ten artykuł pokazał Ci, jak używać kontrolki kanwy do rysowania obiektów na wykresie handlowym, a także wdrażać konfigurowalne parametry dla zmiennych.