Este artigo descreve os passos para criar plugins nativos, incluindo ferramentas para negociação algorítmica ou operações manuais no ecossistema cTrader.
No separador Plugins da aplicação Algo, clique no botão Novo para abrir o assistente de criação de algoritmos.
Introduza um nome para o seu plugin e, em seguida, selecione uma linguagem de programação entre C# e Python.
Selecione um método de criação entre:
Do zero – o novo plugin irá conter apenas um modelo básico.
Utilizando um modelo – poderá selecionar um algoritmo pré-criado a partir de uma lista de modelos Python# ou C#, abrangendo uma vasta gama de localizações e funcionalidades de plugins.
Nota
Os plugins pré-criados já contêm lógica de localização e funcionalidade. Estes plugins estão prontos a funcionar assim que os guardar e construir.
Depois de clicar em Criar, o editor de código abre e pode começar a editar o código do plugin.
Edite el código
A introdução aos plugins mostrou que os plugins podem adicionar novos elementos à interface do utilizador do cTrader, incluindo o Painel de símbolo ativo (ASP), Observação da Negociação, área do gráfico e janelas personalizadas. O tutorial de localização de plugins explica como posicioná-los nestas áreas. Decida sobre a localização das informações ou controlos do seu plugin antes de escrever qualquer código.
Nota
Ao decidir sobre a localização, alinhe o resultado do plugin com a área da interface do utilizador mais apropriada. Os frames do gráfico funcionam bem para WebViews grandes, o Painel de símbolo ativo é melhor para painéis compactos e a Observação da Negociação é uma opção forte para mensagens repetidas.
Dependendo do seu método de criação, o código do plugin contém um ou mais dos seguintes:
O atributo Plugin com propriedades opcionais como AccessRights aparece acima da declaração da classe do plugin (SimplePlugin).
Este plugin utiliza o método OnStart(), que é chamado quando o plugin é carregado. Este ícone adiciona um ícone personalizado à barra de ferramentas do gráfico utilizando Commands.Add.
When clicked, the icon triggers a user-defined handler (OnIconClicked) that opens a panel with several UI controls.
These are main actions available in the UI:
Show message box - opens a standard message box with Yes/No buttons.
Mostrar janela personalizada - abre uma nova janela flutuante contendo um WebView que carrega uma página externa.
Adicionar bloco ASP - adiciona um novo bloco expansível ao Painel de símbolo ativo (ASP), incorporando um WebView.
Adicionar separador ASP - insere um novo separador no ASP, carregando um WebView nele.
Adicionar separador à Observação da Negociação - adiciona um novo separador na Observação da Negociação e carrega um WebView nele.
Adicionar frame personalizado - cria um frame de gráfico personalizado sobreposto ao gráfico e preenche-o com um WebView.
Personalizar gráfico ativo - altera a aparência e as definições do gráfico atualmente ativo (por exemplo, cor de fundo, nível de zoom, visibilidade do tick volume).
Cada botão no painel é estilizado utilizando o objeto Style e adicionado a um StackPanel vertical. O próprio painel é envolvido dentro de uma Border estilizada, que é devolvida como o resultado do comando da barra de ferramentas.
Referências inclui todas as classes, eventos, métodos, variáveis, etc. para construir plugins no cTrader, enquanto exemplos completos de algoritmos e modelos estão disponíveis num repositório GitHub."
A classe SimplePlugin representa um plugin escrito em Python que utiliza a API Algo para estender a interface da plataforma com controlos e interações personalizados.
O método on_start() é o ponto de entrada, chamado quando o plugin é inicializado. Adiciona um ícone SVG personalizado à barra de ferramentas do gráfico.
When clicked, the icon triggers the command_handler method, which returns a styled panel (CommandResult) containing multiple interactive buttons.
Each button performs a distinct platform interaction:
Show message box - opens a standard message box with yes and no buttons.
Mostrar janela personalizada - abre uma nova janela flutuante contendo um WebView que carrega uma página externa.
Adicionar bloco ASP - adiciona um novo bloco expansível ao Painel de símbolo ativo (ASP), incorporando um WebView.
Adicionar separador ASP - insere um novo separador na área ASP, carregando um WebView nele.
Adicionar separador à Observação da Negociação - adiciona um novo separador à Observação da Negociação e seleciona-o por predefinição.
Adicionar frame personalizado - cria um frame de gráfico flutuante e insere um WebView dentro dele.
Adicionar item ao menu principal - adiciona um novo item ao menu principal de nível superior com um ícone personalizado, abrindo um WebView que aponta para o site de Ajuda do cTrader.
Adicionar item ao fundo do menu principal - adiciona um item ao fundo do menu principal, que imprime uma mensagem quando clicado.
Personalizar gráfico ativo - altera o gráfico atualmente ativo, mudando a cor de fundo, ocultando o tick volume e ajustando o nível de zoom.
Estes botões são adicionados a um layout empilhado verticalmente (StackPanel) e envolvidos numa Border estilizada, que define as suas dimensões, preenchimento, fundo, espessura e cor da borda. O painel é então devolvido como um CommandResult, que o apresenta na interface do utilizador do gráfico.
Referências inclui todas as classes, eventos, métodos, variáveis, etc. para construir plugins no cTrader, enquanto exemplos completos de algoritmos e modelos estão disponíveis num repositório GitHub."
Aplique os seus novos conhecimentos para editar o código do plugin e adaptá-lo às suas necessidades.
Guardar e compilar
Guarde o seu código clicando no botão Guardar na parte superior do editor de código ou utilize o atalho Ctrl+S.
Antes de poder usar o seu plugin, precisa de validar o seu código construindo o projeto do plugin. Clique no botão Compilar na parte superior do editor de código ou prima Ctrl+B.
Guarde o seu código clicando no ícone Guardar na parte superior do editor de código ou utilize o atalho Cmd+S.
Antes de poder utilizar o seu indicador, precisa de validar o seu código compilando o projeto do indicador. Clique no ícone Compilar na parte superior do editor de código ou prima Cmd+B.
Quando a compilação é bem-sucedida, verá uma mensagem de confirmação em Resultado da compilação. Se a compilação falhar, aparece um resumo de todos os erros encontrados.
Se houver alterações no código desde a última compilação, aparece um asterisco junto ao ícone Compilar. Neste caso, deve construir o plugin novamente para que as alterações entrem em vigor.
De forma semelhante aos cBots, os plugins podem usar o método OnStart(), o método OnStop() e o objeto Timer:
O manipulador OnStart() é chamado uma vez quando um novo plugin é inicializado.
O manipulador OnStop() é chamado quando a instância do plugin é desativada, desinstalada ou terminada devido ao encerramento do cTrader.
O objeto Timer é usado para executar código em intervalos regulares. Após inicializar e iniciar o temporizador incorporado da classe Timer, o método especificado é executado cada vez que o intervalo definido decorre.
Tratamento de exceções
Tal como outros algos, os plugins podem aceder ao método OnException, que é frequentemente usado para controlar como um algoritmo lida com erros.
Para demonstrar o uso dos métodos mencionados acima, considere um plugin simples que mostra o número total de posições lucrativas atualmente abertas. Anexado ao ASP, este plugin atualiza a sua exibição a cada segundo usando o temporizador incorporado.