Saltar a contenido

Asociaciones de archivos de plugins

La interfaz FileAssociations proporciona tipos que permiten a los plugins registrar, modificar y manejar extensiones de archivo de manera flexible. Con estos tipos, los desarrolladores pueden programar un plugin para gestionar una asociación de archivos. Cuando el plugin está habilitado, cTrader reconoce y dirige los archivos relevantes al plugin para su procesamiento.

Con los plugins configurados para manejar archivos directamente en la interfaz de usuario de cTrader, es posible que los usuarios ya no tengan que alternar entre múltiples aplicaciones al trabajar con archivos. Por ejemplo, se podría crear un plugin para abrir y gestionar todos los archivos utilizados con una estrategia de operaciones específica.

Casos de uso

Los siguientes son ejemplos de plugins que utilizan la función FileAssociations:

  • Un conversor de historial de operaciones acepta y maneja archivos CSV y TXT que contienen el historial de operaciones de otras plataformas, convirtiéndolos en formatos compatibles con cTrader para su análisis o importándolos directamente a su diario.
  • Un procesador de señales de operaciones lee archivos XML o JSON que contienen señales de operaciones de proveedores externos o sistemas de operaciones automatizados, permitiendo a los usuarios ejecutar rápidamente operaciones basadas en las señales.
  • Un importador de plantillas de gestión de riesgos acepta y maneja archivos JSON o CSV que contienen configuraciones de gestión de riesgos, permitiendo a los usuarios aplicar ajustes predefinidos en cTrader.
  • Un gestor de cartera procesa archivos CSV y XML que contienen detalles de la cartera de los operadores, proporcionando una vista simplificada de los activos, posiciones y métricas de rendimiento, mejorando la gestión de la cartera.
  • Un cargador de plantillas de gráficos procesa archivos XML o JSON para plantillas de gráficos, permitiendo a los usuarios almacenar y cargar rápidamente su configuración o configuración preferida para un gráfico.
  • Un cargador de ajustes de indicadores procesa archivos JSON o CSV para ajustes de indicadores personalizados, permitiendo a los usuarios almacenar y aplicar rápidamente su configuración preferida para un indicador.

Operaciones

Instalar un plugin

Cuando un usuario de cTrader instala y habilita por primera vez un plugin que admite un tipo de archivo específico, aparece un cuadro de diálogo. Se solicita al usuario que asocie la extensión del archivo con el plugin.

Después de que el usuario confirme la operación, su computadora actualiza la configuración de asociación de archivos en todo el sistema, y la nueva configuración se aplica inmediatamente.

El nuevo icono para el tipo de archivo se vuelve visible en el Explorador de archivos. Si no se proporciona un icono para el tipo de archivo, se utiliza el icono de plugin predeterminado.

Advertencia

No se permite a los plugins procesar extensiones de archivo restringidas como .algo.

Usar el plugin

Si un plugin que admite extensiones de archivo está habilitado en cTrader, se llama al plugin para trabajar con archivos cuando los usuarios realizan cualquiera de las siguientes acciones:

  • Arrastrar y soltar archivos - los usuarios pueden arrastrar un archivo compatible y soltarlo en la interfaz de usuario de cTrader.

  • Abrir archivos en el Explorador de archivos - los usuarios pueden hacer doble clic en un archivo para abrirlo o usar la opción Abrir con y seleccionar cTrader.

    • Si la aplicación cTrader está abierta, el plugin recibe el archivo inmediatamente.
    • Si la aplicación cTrader está cerrada, cTrader se inicia primero y luego el plugin recibe el archivo.

El archivo recibido se copia en la carpeta de datos del plugin y se elimina una vez que el plugin termina de procesarlo.

Ruta a la carpeta de datos de un plugin: …/Documents/cAlgo/Data/Plugins/{PluginName}/Temp.

En los casos en que una extensión de archivo está asociada con varios plugins habilitados, cada plugin procesa el archivo de forma independiente.

Cuando se elimina una asociación de archivo porque el plugin relevante está deshabilitado en una instancia de cTrader, la asociación de archivo se vuelve a agregar automáticamente en otra instancia de cTrader donde el mismo plugin está habilitado.

Realizar una anulación manual

Si el usuario cambia posteriormente el programa predeterminado para un tipo de archivo dentro de la configuración normal de su computadora, cTrader deja automáticamente de manejar ese tipo de archivo.

Para establecer cTrader como el programa predeterminado para manejar archivos en ese formato nuevamente, el usuario debe restablecer la asociación de archivos de esta manera:

  1. Abrir cTrader y deshabilitar el plugin relevante.
  2. Habilitar el plugin. Cuando aparezca el cuadro de diálogo, confirmar la operación.

Esta configuración ayuda a los plugins y a la aplicación cTrader a gestionar las extensiones de archivo evitando la interferencia de otros programas.

Nota

Un plugin puede agregar y eliminar asociaciones de archivo en tiempo de ejecución sin necesidad de reiniciar el algoritmo o la aplicación cTrader.

Plugin de ejemplo

El plugin de ejemplo simplemente agrega asociaciones de archivo para los siguientes tipos de archivo:

  • 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