スタイルの使い方

cBots (自動売買)

このビデオと対応する記事では、cBots、インジケーター、およびプラグインを使用して作成されたカスタムUI要素の外観を変更するためにスタイルを使用する方法を説明します。

例のcBotを作成する

cTraderの「Algo」アプリに切り替えて、新しいcBotを作成します。これを「Styles Example」と名付けます。この例では、3つのテキストボックスを作成し、それらをスタックパネルを使用してチャートに表示します。

まず、3つのテキストボックスを初期化します。それぞれのテキストボックスの外観を、プロパティを1つずつ設定することで構成します。

 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
var firstTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};
var secondTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};
var thirdTextBox = new TextBox
{
    ForegroundColor = Color.Red,
    Margin = 5,
    FontFamily = "Cambria",
    FontSize = 12,
    Text = "Type...",
    Width = 150
};

スタックパネルも初期化します。

1
2
3
4
5
6
var panel = new StackPanel
{
    Orientation = Orientation.Vertical,
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Center
};

最後に、これらのテキストボックスをパネルに追加します。

1
2
3
panel.AddChild(firstTextBox);
panel.AddChild(secondTextBox);
panel.AddChild(thirdTextBox);

そして、最後にパネルをチャートに追加します。

1
Chart.AddControl(panel);

cBotをビルドすると、チャート上に3つのテキストボックスが表示されるはずです。

スタイルクラスの使用

cBotのコードは、各テキストボックスを個別に設定し、各要素のプロパティを初期化するため、繰り返しが多くなります。コードの繰り返しは、大規模なプロジェクトの保守や最適化を難しくします。スタイルを使用してコントロールの外観を構成することで、コードをより簡潔で保守しやすくすることができます。

まず、Stylesクラスの新しいオブジェクトを初期化します。

1
var textBoxStyle = new Style();

次に、このスタイルに関連付けられたコントロールの外観を構成します。

1
2
3
4
5
textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Red);
textBoxStyle.Set(ControlProperty.Margin, 5);
textBoxStyle.Set(ControlProperty.FontFamily, "Cambria");
textBoxStyle.Set(ControlProperty.FontSize, 12);
textBoxStyle.Set(ControlProperty.Width, 150);

このスタイルを各テキストボックスに割り当て、パラメータの初期化を削除します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
var firstTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};
var secondTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};
var thirdTextBox = new TextBox
{
    Text = "Type...",
    Style = textBoxStyle
};

cBotをビルドしてチャートに追加すると、すべてのテキストボックスが正常に表示されるはずです。コードに戻ってtextBoxStyleオブジェクトのプロパティの1つを変更すると、すべてのテキストボックスが異なるスタイルになります。

1
textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Yellow, ControlState.Hover);

カスタムウィンドウとプラグインでのスタイル

コントロールスタイルは、カスタムウィンドウを含むチャート以外の場所に表示される場合にも機能します。テキストボックスをカスタムウィンドウに表示し、それに応じてスタイルを設定するプラグインの例を作成します。

まず、カスタムウィンドウにコントロールを表示します。

次に、プラグインのコードです。

 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
using cAlgo.API;
namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class StylesExample : Plugin
    {
        protected override void OnStart()
        {


            var block = Asp.SymbolTab.AddBlock("Styles Example");
            block.Index = 2;
            block.Height = 500;

            var textBoxStyle = new Style();

            textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Red);
            textBoxStyle.Set(ControlProperty.Margin, 5);
            textBoxStyle.Set(ControlProperty.FontFamily, "Cambria");
            textBoxStyle.Set(ControlProperty.FontSize, 12);
            textBoxStyle.Set(ControlProperty.Width, 150);
            textBoxStyle.Set(ControlProperty.ForegroundColor, Color.Yellow, ControlState.Hover);


            var firstTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var secondTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var thirdTextBox = new TextBox
            {
                Text = "Type...",
                Style = textBoxStyle
            };

            var panel = new StackPanel
            {
                Orientation = Orientation.Vertical,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment = VerticalAlignment.Center
            };

            panel.AddChild(firstTextBox);
            panel.AddChild(secondTextBox);
            panel.AddChild(thirdTextBox);

            block.Child = panel;

            var window = new Window
            {
                Child = panel,
                Title = "My Window",
                WindowStartupLocation = WindowStartupLocation.CenterScreen,
                Topmost = true
            };

            window.Show();
        }

    }        
}

プラグインをビルドすると、「アクティブシンボルパネル」とカスタムウィンドウにテキストボックスが表示されるはずです。

まとめ

コントロールのスタイリングは、コードの冗長性を心配することなくカスタム要素をユーザーに表示するために重要です。cTraderでのアルゴトレーディングの作業について詳しく知りたい場合は、以下のボタンをクリックしてYouTubeチャンネルを購読してください。

目次

このページについて