Saltar a contenido

Cómo hacer referencia a bibliotecas de terceros en cTrader Algo

Las bibliotecas de terceros permiten a los usuarios expandir y mejorar la funcionalidad de sus cBots, indicadores y plugins. Dado que cTrader Algo está desarrollado con .NET 6.0, los usuarios pueden agregar y usar bibliotecas de terceros construidas con .NET 6.0 en sus proyectos de algoritmos.

En este artículo y el video correspondiente, aprenderá cómo hacer referencia a bibliotecas de terceros en la API de cTrader Algo. Usando la biblioteca Discord.Net, demostraremos cómo enviar mensajes a un canal de Discord.

Agregar una referencia instalando un paquete NuGet

En nuestro primer ejemplo, planeamos agregar una referencia en nuestro proyecto de cBot instalando un paquete de la biblioteca NuGet. NuGet es el administrador de paquetes oficial para la plataforma .NET utilizado para crear, consumir y distribuir paquetes o bibliotecas.

Nota

Si desarrolla algoritmos en Visual Studio, use el método de agregar una referencia descrito a continuación. De lo contrario, navegue a la siguiente sección de este artículo.

En cTrader Algo, cree un cBot. Haga clic en el botón Nuevo, ingrese un nombre como "Discord Message Example", luego haga clic en el botón Crear.

A continuación, vaya al sitio web de NuGet, escriba Discord en el campo de texto y seleccione la biblioteca Discord.Net de los resultados.

Haga clic en la pestaña Package manager y luego copie el comando que aparece allí.

Regrese a cTrader y haga clic en Editar en Visual Studio.

Su proyecto de cBot debería abrirse en la aplicación Visual Studio en su computadora.

En Visual Studio, abra el menú Herramientas, seleccione Administrador de paquetes NuGet, luego Consola del Administrador de paquetes.

Pegue el comando que copió anteriormente del sitio web de NuGet y ejecútelo.

1
NuGet\Install-Package Discord.Net -Version 3.16.0

Habiendo instalado el paquete requerido, podemos proceder a desarrollar nuestro ejemplo de cBot.

Comience declarando parámetros importantes, como el token del bot de Discord y el ID del canal.

1
2
3
4
5
[Parameter("Discord Bot Token")]
public string BotToken { get; set; }

[Parameter("Discord Channel ID")]
public string ChannelID { get; set; }

Luego declare un objeto cliente de Discord y un objeto de canal de mensajes.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

En nuestro método OnStart(), escriba un código simple para enviar un mensaje a nuestro canal cuando se inicie el cBot.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
protected override void OnStart()
{
    _discordSocketClient = new DiscordSocketClient();
    _discordSocketClient.LoginAsync(TokenType.Bot, BotToken);
    _discordSocketClient.StartAsync();

    var channelID = Convert.ToUInt64(ChannelID);
    _channel = _discordSocketClient.GetChannelAsync(channelID).Result as IMessageChannel;
    _channel.SendMessageAsync("Example cBot Started");
}

Puede copiar el código completo a continuación:

 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;
using Discord.WebSocket;
using Discord;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.None, AddIndicators = true)]
    public class DiscordMessageExample : Robot
    {
        [Parameter("Discord Bot Token")]
        public string BotToken { get; set; }

        [Parameter("Discord Channel ID")]
        public string ChannelID { get; set; }

        DiscordSocketClient _discordSocketClient;
        IMessageChannel _channel;

        protected override void OnStart()
        {
            _discordSocketClient = new DiscordSocketClient();
            _discordSocketClient.LoginAsync(TokenType.Bot, BotToken);
            _discordSocketClient.StartAsync();

            var channelID = Convert.ToUInt64(ChannelID);
            _channel = _discordSocketClient.GetChannelAsync(channelID).Result as IMessageChannel;
            _channel.SendMessageAsync("Example cBot Started");
        }

        protected override void OnTick()
        {
            // Handle price updates here
        }

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

Ahora, compile el cBot.

Regrese a cTrader. Haga clic en Agregar instancia, especifique sus parámetros preferidos en la ventana y luego haga clic en el botón Agregar instancia.

Ingrese su token de bot de Discord y el ID del canal.

Inicie la instancia del cBot. Cuando aparezca la ventana Solicitud de acceso, haga clic en Permitir para continuar.

El cBot debería comenzar a ejecutarse, y debería ver un mensaje llegar al canal de Discord.

Agregar una referencia a través de la interfaz de usuario de cTrader

Algunas bibliotecas no están disponibles como paquetes NuGet. Si planea usar tales bibliotecas en su proyecto de cBot, tiene que agregar sus archivos DLL directamente como referencias.

Aquí, demostraremos cómo puede hacer referencia a la misma biblioteca Discord.Net agregando sus archivos DLL.

Regrese a Visual Studio y desinstale la biblioteca Discord.Net que instalamos en la subsección anterior. Abra la Consola del Administrador de Paquetes NuGet como lo hizo antes y ejecute el siguiente comando:

1
NuGet\Uninstall-Package Discord.Net -Version 3.16.0

Los paquetes de Discord se eliminarán como referencias en nuestro cBot Discord Message Example. Si el cBot se reconstruye ahora, la compilación terminará con varios mensajes de error debido a las bibliotecas faltantes.

Vuelva a cTrader y agregue las bibliotecas requeridas usando la funcionalidad Administrar referencias en la parte superior.

Cuando aparezca la ventana Administrador de referencias, navegue a Examinar y luego haga clic en el botón Examinar. Seleccione el archivo DLL y luego realice la misma acción para todos los archivos DLL a los que desea hacer referencia.

Haga clic en Aplicar y compile el cBot nuevamente.

Ahora, cuando ejecute una instancia de cBot, la compilación se completará sin errores, y debería ver el mensaje llegar al canal de Discord.

Este artículo ha demostrado cómo hacer referencia a bibliotecas de terceros en cTrader Algo utilizando dos métodos diferentes.