コンテンツにスキップ

cTrader Algoでのカスタムウィンドウの操作

この記事とそれに対応するビデオでは、cTraderアルゴを作成する際のカスタムウィンドウの操作について説明します。 カスタムウィンドウとは何か、そしてそれらをcBotやインジケーターでどのように使用できるかを説明します。 また、cBotでカスタムウィンドウを使用する例を作成します。

カスタムウィンドウの例

ここで、Algoアプリに切り替えて、cBotやインジケーターでカスタムウィンドウを使用する方法の例を見てみましょう。 新しいインジケーターを作成します。その中で、ドキュメントから完成した例を使用します。

ドキュメントからコードをコピーしてコードエディターウィンドウに貼り付けます。 次に、インジケーターをビルドし、チャートにインジケーターのインスタンスを追加します。

インジケーターが追加されるとすぐに、カスタムウィンドウがポップアップ表示されるはずです。 このウィンドウには、インジケーターが現在アタッチされているチャートのシンボルに関する情報を表示する複雑なフォームが含まれています。 このフォームは、カスタムウィンドウで達成できることの素晴らしい例です。

カスタムウィンドウ vs. WPFとWinForms

カスタムウィンドウを使用することがWPFWinFormsを使用するよりも優れている理由がいくつかあります。 cTraderのカスタムウィンドウは、cTraderのルックアンドフィールに一致するネイティブスタイルを既に備えています。 WinFormsとWPFのウィンドウは、異なるスレッドで実行されるため、特別な処理と高度なプログラミングスキルが必要です。 cTraderのカスタムウィンドウを使用することで、このような問題を完全に回避できます。

カスタムウィンドウの作成

ここでは、ゼロからカスタムウィンドウを作成する方法をデモンストレーションします。 新しいインジケーターを作成し、「Custom Window Example」と呼びます。 この例では、カスタムウィンドウを追加し、それにいくつかのカスタムコントロールを追加します。 ウィンドウ自体はInitialize()メソッドで宣言されます。ウィンドウを表示するために、window.Show()メソッドを呼び出します。

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

ウィンドウを確認するために、インジケーターをビルドし、チャートに追加します。

ウィンドウにコントロールを追加

ここでは、ウィンドウにカスタムコントロールを追加します。 これらのコントロールは、いくつかのテキストを含むテキストボックスの形を取ります。

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

インジケーターをリビルドし、新しいインスタンスを追加して、カスタムコントロールがどのように見えるかを確認します。

ウィンドウのプロパティを変更

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

再度インジケーターをリビルドし、インスタンスを追加します。 これで、ウィンドウの領域は幅と高さが800ピクセルの長方形になります。

次の変更は、ウィンドウがリサイズ可能な範囲を追加することです。 これを行うために、MinHeightMaxHeightMinWidthMaxWidthパラメーターを追加します。

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

インジケーターをリビルドし、インスタンスが追加された後、そのサイズを試すことができます。 リサイズは指定された幅と高さの範囲内でのみ可能です。

また、ウィンドウの背景色を変更し、リサイズ不可にすることもできます。

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

通常の操作(インジケーターのリビルドとインスタンスの追加)を行った後、ウィンドウは新しい背景色を持つはずです。

概要

cTraderのカスタムウィンドウは柔軟で、高度にカスタマイズ可能です。 上記のプロパティに加えて、マージンとパディング、カスタムウィンドウの可視性、特定の条件下でのアクティブ状態を変更することもできます。 cTraderのカスタムウィンドウは、表示、非表示、閉じるためのメソッドや、いくつかのイベントハンドラーも公開しています。