Ir para o conteúdo

Associações de ficheiros do plugin

A interface FileAssociations fornece tipos que permitem aos plugins registar, modificar e lidar com extensões de ficheiros de forma flexível. Com esses tipos, os programadores podem codificar um plugin para gerir uma associação de ficheiros. Quando o plugin é ativado, o cTrader reconhece e direciona os ficheiros relevantes para o plugin para processamento.

Com plugins configurados para lidar com ficheiros diretamente na interface do utilizador do cTrader, os utilizadores podem já não ter de alternar entre várias aplicações ao trabalhar com ficheiros. Por exemplo, um plugin poderia ser criado para abrir e gerir todos os ficheiros usados com uma estratégia de negociação específica.

Casos de utilização

Seguem-se exemplos de plugins usando a funcionalidade FileAssociations:

  • Um conversor de histórico de negociação aceita e lida com ficheiros CSV e TXT contendo histórico de negociação de outras plataformas, convertendo-os em formatos compatíveis com o cTrader para análise ou importando-os diretamente para o seu diário.
  • Um processador de sinais de negociação lê ficheiros XML ou JSON contendo sinais de negociação de fornecedores externos ou sistemas de negociação automatizados, permitindo aos utilizadores executar rapidamente negociações com base nos sinais.
  • Um importador de modelos de gestão de risco aceita e lida com ficheiros JSON ou CSV contendo configurações de gestão de risco, permitindo aos utilizadores aplicar configurações predefinidas no cTrader.
  • Um gestor de portfólio processa ficheiros CSV e XML contendo detalhes do portfólio dos traders, fornecendo uma visão simplificada dos ativos, posições e métricas de desempenho, melhorando a gestão do portfólio.
  • Um carregador de modelos de gráficos processa ficheiros XML ou JSON para modelos de gráficos, permitindo aos utilizadores armazenar e carregar rapidamente a sua configuração ou configuração preferida para um gráfico.
  • Um carregador de configurações de indicadores processa ficheiros JSON ou CSV para configurações de indicadores personalizados, permitindo aos utilizadores armazenar e aplicar rapidamente a sua configuração preferida para um indicador.

Operações

Instalar um plugin

Quando um utilizador do cTrader instala e ativa um plugin que suporta um tipo de ficheiro específico pela primeira vez, aparece uma caixa de diálogo. O utilizador é solicitado a associar a extensão do ficheiro ao plugin.

Depois de o utilizador confirmar a operação, o seu computador atualiza as configurações de associação de ficheiros em todo o sistema, e a nova configuração é aplicada imediatamente.

O novo ícone para o tipo de ficheiro torna-se visível no Explorador de Ficheiros. Se não for fornecido um ícone para o tipo de ficheiro, é usado o ícone de plugin predefinido.

Aviso

Os plugins não têm permissão para processar extensões de ficheiros restritas, como .algo.

Usar o plugin

Se um plugin que suporta extensões de ficheiros estiver ativado no cTrader, o plugin é chamado para trabalhar com ficheiros quando os utilizadores fazem qualquer uma das seguintes ações:

  • Arrastar e largar ficheiros - os utilizadores podem arrastar um ficheiro suportado e largá-lo na interface do utilizador do cTrader.

  • Abrir ficheiros no Explorador de Ficheiros - os utilizadores podem fazer duplo clique num ficheiro para o abrir ou usar a opção Abrir com e selecionar o cTrader.

    • Se a aplicação cTrader estiver aberta, o plugin recebe o ficheiro imediatamente.
    • Se a aplicação cTrader estiver fechada, o cTrader é iniciado primeiro e depois o plugin recebe o ficheiro.

O ficheiro recebido é copiado para a pasta de dados do plugin e é eliminado assim que o plugin termina o seu processamento.

Caminho para a pasta de dados de um plugin: …/Documents/cAlgo/Data/Plugins/{PluginName}/Temp.

Nos casos em que uma extensão de ficheiro está associada a vários plugins ativados, cada plugin processa o ficheiro independentemente.

Quando uma associação de ficheiro é removida porque o plugin relevante está desativado numa instância do cTrader, a associação de ficheiro é automaticamente readicionada noutra instância do cTrader onde o mesmo plugin está ativado.

Realizar uma substituição manual

Se o utilizador posteriormente alterar o programa predefinido para um tipo de ficheiro dentro das configurações normais do seu computador, o cTrader para automaticamente de lidar com esse tipo de ficheiro.

Para definir o cTrader como o programa predefinido para lidar com ficheiros nesse formato novamente, o utilizador tem de restabelecer a associação de ficheiros desta forma:

  1. Abrir o cTrader e desativar o plugin relevante.
  2. Ativar o plugin. Quando a caixa de diálogo aparecer, confirmar a operação.

Esta configuração ajuda os plugins e a aplicação cTrader a gerir extensões de ficheiros evitando interferências de outros programas.

Nota

Um plugin pode adicionar e remover associações de ficheiros em tempo de execução sem necessitar de reiniciar o algoritmo ou a aplicação cTrader.

Plugin de exemplo

O plugin de exemplo simplesmente adiciona associações de ficheiros para os seguintes tipos de ficheiros:

  • CSV
  • PNG
  • PDF
  • TXT
 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
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 FileAssociationSample : Plugin
    {
        private const string FileExtension1 = ".csv";
        private const string FileExtension2 = ".png";
        private const string FileExtension3 = ".pdf";
        private const string FileExtension4 = ".txt";

        protected override void OnStart()
        {
            AddFileAssociations();
            FileAssociations.FileOpened += FileAssociations_FileOpened;

            Print("File associations have been added.");
        }

        private void AddFileAssociations()
        {
            FileAssociations.Add(FileExtension1);
            FileAssociations.Add(FileExtension2);
            FileAssociations.Add(FileExtension3);
            FileAssociations.Add(FileExtension4);
        }

        private void FileAssociations_FileOpened(FileAssociationsFileOpenedEventArgs obj)
        {
            Print($"File opened: {obj.FilePath}");
        }

        protected override void OnException(Exception exception)
        {
            Print($"Exception: {exception}");
        }
    }
}

Image title