Aller au contenu

Travailler avec des fenêtres personnalisées dans cTrader Algo

Dans cet article et sa vidéo correspondante, nous parlerons du travail avec des fenêtres personnalisées lors de la création d'algorithmes cTrader. Nous expliquerons ce que sont les fenêtres personnalisées et comment elles peuvent être utilisées dans vos cBots et indicateurs. Nous créerons également un exemple d'utilisation d'une fenêtre personnalisée dans un cBot.

Exemple de fenêtre personnalisée

Nous allons maintenant passer à l'application Algo pour voir une illustration de la façon dont les fenêtres personnalisées peuvent être utilisées dans vos cBots et indicateurs. Nous allons créer un nouvel indicateur ; dedans, nous utiliserons simplement un exemple prêt à l'emploi de la documentation.

Copiez et collez le code de la documentation dans la fenêtre de l'éditeur de code. Ensuite, compilez l'indicateur et ajoutez une instance de celui-ci à un graphique.

Dès que l'indicateur est ajouté, nous devrions voir une fenêtre personnalisée apparaître. Cette fenêtre contient un formulaire complexe affichant des informations sur le symbole auquel le graphique de l'indicateur est actuellement attaché. Ce formulaire est un excellent exemple de ce qui peut être réalisé avec des fenêtres personnalisées.

Fenêtres personnalisées vs WPF et WinForms

Il existe plusieurs raisons pour lesquelles l'utilisation de fenêtres personnalisées est préférable à l'utilisation de WPF ou WinForms. Les fenêtres personnalisées de cTrader sont déjà dotées d'un style natif qui correspond à l'apparence de cTrader. Les fenêtres WinForms et WPF nécessitent une gestion spéciale et des compétences de programmation avancées car elles s'exécutent sur des threads différents. Ces problèmes sont entièrement évités lors de l'utilisation des fenêtres personnalisées de cTrader.

Créer une fenêtre personnalisée

Nous allons maintenant démontrer comment vous pouvez créer une fenêtre personnalisée à partir de zéro. Nous allons créer un nouvel indicateur et l'appeler « Exemple de fenêtre personnalisée ». Dans cet exemple, nous ajouterons une fenêtre personnalisée, puis nous y ajouterons des commandes personnalisées. La fenêtre elle-même sera déclarée dans la méthode Initialize() ; pour afficher la fenêtre, nous appellerons la méthode 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();
}

Pour voir la fenêtre, nous pouvons compiler l'indicateur et l'ajouter à un graphique.

Ajouter des commandes à une fenêtre

Nous allons maintenant ajouter des commandes personnalisées à la fenêtre. Ces commandes prendront la forme d'une zone de texte contenant du texte.

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

Nous recompilerons l'indicateur et ajouterons une nouvelle instance pour voir à quoi ressemblent nos commandes personnalisées.

Modifier les propriétés de la fenêtre

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

Nous recompilerons une fois de plus notre indicateur et ajouterons une instance. Maintenant, la zone de notre fenêtre est un rectangle d'une largeur et d'une hauteur de 800 pixels.

Le prochain changement consistera à ajouter une plage dans laquelle la fenêtre peut être redimensionnée. Pour ce faire, nous ajouterons les paramètres MinHeight, MaxHeight, MinWidth et MaxWidth.

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

Nous recompilerons l'indicateur et, après l'ajout d'une instance, nous pourrons essayer de modifier sa taille. Le redimensionnement n'est possible que dans la plage de largeur et de hauteur spécifiée.

Nous pouvons également changer la couleur d'arrière-plan d'une fenêtre et la rendre non redimensionnable.

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

Après avoir effectué les actions habituelles (recompiler l'indicateur et ajouter une instance), la fenêtre devrait avoir une nouvelle couleur d'arrière-plan.

Résumé

Les fenêtres personnalisées de cTrader sont flexibles et peuvent être personnalisées à un degré élevé. En plus des propriétés mentionnées ci-dessus, vous pouvez également modifier les marges et le remplissage, la visibilité des fenêtres personnalisées et si elles sont actives dans certaines conditions. Les fenêtres personnalisées de cTrader exposent également des méthodes pour les afficher, les masquer et les fermer en plus de plusieurs autres gestionnaires d'événements.