Aller au contenu

Comment référencer des bibliothèques tierces dans cTrader Algo

Les bibliothèques tierces permettent aux utilisateurs d'étendre et d'améliorer les fonctionnalités de leurs cBots, indicateurs et plug-ins. Étant donné que cTrader Algo est développé avec .NET 6.0, les utilisateurs peuvent ajouter et utiliser des bibliothèques tierces créées avec .NET 6.0 dans leurs projets d'algorithmes.

Dans cet article et la vidéo correspondante, vous apprendrez comment référencer des bibliothèques tierces dans l'API cTrader Algo. En utilisant la bibliothèque Discord.Net, nous allons démontrer comment envoyer des messages à un canal Discord.

Ajouter une référence en installant un package NuGet

Dans notre premier exemple, nous prévoyons d'ajouter une référence dans notre projet de cBot en installant un package de la bibliothèque NuGet. NuGet est le gestionnaire de packages officiel pour la plateforme .NET utilisé pour créer, consommer et distribuer des packages ou des bibliothèques.

Remarque

Si vous développez des algorithmes dans Visual Studio, utilisez la méthode d'ajout de référence décrite ci-dessous. Sinon, passez à la section suivante de cet article.

Dans cTrader Algo, créez un cBot. Cliquez sur le bouton Nouveau, saisissez un nom tel que "Discord Message Example", puis cliquez sur le bouton Créer.

Ensuite, rendez-vous sur le site web NuGet, tapez Discord dans le champ de texte et sélectionnez la bibliothèque Discord.Net dans les résultats.

Cliquez sur l'onglet Package manager puis copiez la commande qui s'y trouve.

Retournez sur cTrader et cliquez sur Modifier dans Visual Studio.

Votre projet de cBot devrait s'ouvrir dans l'application Visual Studio sur votre ordinateur.

Dans Visual Studio, ouvrez le menu Outils, sélectionnez Gestionnaire de packages NuGet, puis Console du gestionnaire de packages.

Collez la commande que vous avez copiée précédemment depuis le site web NuGet et exécutez-la.

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

Après avoir installé le package requis, nous pouvons procéder au développement de notre exemple de cBot.

Commencez par déclarer les paramètres importants, tels que le jeton du bot Discord et l'ID du canal.

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

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

Ensuite, déclarez un objet client Discord et un objet canal de message.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

Dans notre méthode OnStart(), écrivez un code simple pour envoyer un message à notre canal lorsque le cBot démarre.

 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");
}

Vous pouvez copier le code complet ci-dessous :

 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
        }
    }
}

Maintenant, créez le cBot.

Retournez sur cTrader. Cliquez sur Ajouter une instance, spécifiez vos paramètres préférés dans la fenêtre, puis cliquez sur le bouton Ajouter une instance.

Saisissez votre jeton de bot Discord et l'ID du canal.

Démarrez l'instance du cBot. Lorsque la fenêtre Demande d'accès apparaît, cliquez sur Autoriser pour continuer.

Le cBot devrait commencer à s'exécuter et vous devriez voir un message arriver dans le canal Discord.

Ajouter une référence via l'interface utilisateur de cTrader

Certaines bibliothèques ne sont pas disponibles en tant que packages NuGet. Si vous prévoyez d'utiliser de telles bibliothèques dans votre projet de cBot, vous devez ajouter leurs fichiers DLL directement en tant que références.

Ici, nous allons démontrer comment vous pouvez référencer la même bibliothèque Discord.Net en ajoutant ses fichiers DLL.

Retournez dans Visual Studio et désinstallez la bibliothèque Discord.Net que nous avons installée dans la sous-section précédente. Ouvrez la Console du gestionnaire de packages NuGet comme vous l'avez fait précédemment et exécutez la commande suivante :

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

Les packages Discord seront supprimés en tant que références dans notre cBot Discord Message Example. Si le cBot est reconstruit maintenant, la création se terminera par plusieurs messages d'erreur en raison des bibliothèques manquantes.

Retournez sur cTrader et ajoutez les bibliothèques requises en utilisant la fonctionnalité Gérer les références en haut.

Lorsque la fenêtre Gestionnaire de références apparaît, accédez à Parcourir puis cliquez sur le bouton Parcourir. Sélectionnez le fichier DLL puis effectuez la même action pour tous les fichiers DLL que vous souhaitez référencer.

Cliquez sur Appliquer et reconstruisez le cBot.

Maintenant, lorsque vous exécutez une instance de cBot, la création sera terminée sans erreurs et vous devriez voir le message arriver dans le canal Discord.

Cet article a démontré comment référencer des bibliothèques tierces dans cTrader Algo en utilisant deux méthodes différentes.