Ir para o conteúdo

Como criar plugins de janela personalizada

Os plugins permitem criar janelas personalizadas contendo websites, ferramentas ou botões que executam operações específicas quando clicados. Neste artigo e no vídeo correspondente, vamos mostrar-lhe como criar janelas personalizadas contendo botões de ação usando um plugin.

Criar um plugin

Vamos criar uma janela personalizada com um botão que, quando clicado, define um take profit para todas as posições abertas. Começaremos com os elementos da janela e do botão.

Selecione a aplicação Algo e vá para o separador Plugins. Clique no botão Novo. Certifique-se de que o modelo Blank está selecionado. Introduza um nome para o seu plugin, como "Custom Window Plugin", e depois clique em Create.

Declare o botão e a janela.

1
2
private Button _buttonAddTakeProfit;
private Window _window;

Inicialize o botão.

1
2
3
4
5
6
_buttonAddTakeProfit = new Button
{
    BackgroundColor = Color.SeaGreen,
    Height = 50,
    Text = "Add Take Profit"
};

Inicialize a janela e adicione o botão como filho da mesma.

1
2
3
4
5
6
7
8
9
_window = new Window
{
    Height = 150,
    Width = 150,
    Padding = new Thickness(5, 10, 10, 5)
};

_window.Child = _buttonAddTakeProfit;
_window.Show();

Pode copiar o código completo abaixo:

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

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class CustomWindowPlugin : Plugin

    {

        private Button _buttonAddTakeProfit;
        private Window _window;

        protected override void OnStart()
        {

            _buttonAddTakeProfit = new Button
            {
                BackgroundColor = Color.SeaGreen,
                Height = 50,
                Text = "Add Take Profit"
            };

            _window = new Window
            {
                Height = 150,
                Width = 150,
                Padding = new Thickness(5, 10, 10, 5)
            };

            _window.Child = _buttonAddTakeProfit;
            _window.Show();

        }

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

Clique no botão Build ou use as teclas de atalho Ctrl+B para compilar o plugin. Deverá aparecer uma janela personalizada com o botão Add Take Profit.

Pode mover, ocultar, redimensionar ou fechar a janela.

Refinar o plugin

Vamos refinar o plugin voltando ao nosso código-fonte e adicionando um evento que trata do evento de clique no botão.

1
_buttonAddTakeProfit.Click += _buttonAddTakeProfit_Click;

Adicione a lógica para definir uma opção de take profit para qualquer posição que não a tenha.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
private void _buttonAddTakeProfit_Click(ButtonClickEventArgs args)
{
    foreach (var position in Positions)
    {
        if (position.TakeProfit is null)
        {
            position.ModifyTakeProfitPips(20);
        }
    }
}

Pode copiar o código completo abaixo:

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

namespace cAlgo.Plugins
{
    [Plugin(AccessRights = AccessRights.None)]
    public class CustomWindowPlugin : Plugin

    {
        private Button _buttonAddTakeProfit;
        private Window _window;

        protected override void OnStart()
        {
            _buttonAddTakeProfit = new Button
            {
                BackgroundColor = Color.SeaGreen,
                Height = 50,
                Text = "Add Take Profit"
            };

            _buttonAddTakeProfit.Click += _buttonAddTakeProfit_Click;

            _window = new Window
            {
                Height = 150,
                Width = 150,
                Padding = new Thickness(5, 10, 10, 5)
            };

            _window.Child = _buttonAddTakeProfit;
            _window.Show();
        }

        private void _buttonAddTakeProfit_Click(ButtonClickEventArgs args)
        {
            foreach (var position in Positions)
            {
                if (position.TakeProfit is null)
                {
                    position.ModifyTakeProfitPips(20);
                }
            }
        }        

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

Compile o plugin. Vá para a aplicação Trade, abra algumas posições se não tiver nenhuma aberta e use o botão Add Take Profit para confirmar que o botão funciona.

Resumo

Acreditamos que este artigo lhe ensinou como criar janelas personalizadas contendo botões para operações e outros elementos úteis.