Vai al contenuto

Come fare riferimento a librerie di terze parti in cTrader Algo

Le librerie di terze parti consentono agli utenti di espandere e migliorare le funzionalità dei loro cBot, indicatori e plugin. Poiché cTrader Algo è sviluppato con .NET 6.0, gli utenti possono aggiungere e utilizzare librerie di terze parti create con .NET 6.0 nei loro progetti algo.

In questo articolo e nel video corrispondente, imparerai come fare riferimento a librerie di terze parti nell'API cTrader Algo. Utilizzando la libreria Discord.Net, dimostreremo come inviare messaggi a un canale Discord.

Aggiungere un riferimento installando un pacchetto NuGet

Nel nostro primo esempio, prevediamo di aggiungere un riferimento nel nostro progetto cBot installando un pacchetto dalla libreria NuGet. NuGet è il gestore di pacchetti ufficiale per la piattaforma .NET utilizzato per creare, consumare e distribuire pacchetti o librerie.

Nota

Se sviluppi algoritmi in Visual Studio, utilizza il metodo di aggiunta di un riferimento descritto di seguito. Altrimenti, vai alla sezione successiva di questo articolo.

In cTrader Algo, crea un cBot. Fai clic sul pulsante Nuovo, inserisci un nome come "Discord Message Example", poi fai clic sul pulsante Crea.

Successivamente, vai al sito web NuGet, digita Discord nel campo di testo e seleziona la libreria Discord.Net dai risultati.

Fai clic sulla scheda Package manager e poi copia il comando presente.

Torna a cTrader e fai clic su Modifica in Visual Studio.

Il tuo progetto cBot dovrebbe aprirsi nell'applicazione Visual Studio sul tuo computer.

In Visual Studio, apri il menu Strumenti, seleziona Gestione pacchetti NuGet, quindi Console di Gestione pacchetti.

Incolla il comando che hai copiato in precedenza dal sito web NuGet ed eseguilo.

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

Dopo aver installato il pacchetto richiesto, possiamo procedere a sviluppare il nostro esempio di cBot.

Inizia dichiarando i parametri importanti, come il token del bot Discord e l'ID del canale.

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

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

Quindi dichiara un oggetto client Discord e un oggetto canale messaggi.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

Nel nostro metodo OnStart(), scrivi un semplice codice per inviare un messaggio al nostro canale quando il cBot si avvia.

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

Puoi copiare il codice completo qui sotto:

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

Ora, compila il cBot.

Torna a cTrader. Clicca Aggiungi istanza, specifica i parametri che preferisci nella finestra e quindi clicca il pulsante Aggiungi istanza.

Inserisci il token del tuo bot Discord e l'ID del canale.

Avvia l'istanza del cBot. Quando compare la finestra Richiesta di accesso, clicca Consenti accesso per continuare.

Il cBot dovrebbe iniziare a funzionare e dovresti vedere un messaggio arrivare nel canale Discord.

Aggiungi un riferimento tramite l'interfaccia utente di cTrader

Alcune librerie non sono disponibili come pacchetti NuGet. Se prevedi di utilizzare tali librerie nel tuo progetto cBot, devi aggiungere i loro file DLL direttamente come riferimenti.

Qui dimostreremo come puoi fare riferimento alla stessa libreria Discord.Net aggiungendo i suoi file DLL.

Torna a Visual Studio e disinstalla la libreria Discord.Net che abbiamo installato nella sottosezione precedente. Apri la Console di Gestione pacchetti NuGet come hai fatto prima ed esegui il seguente comando:

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

I pacchetti Discord verranno rimossi come riferimenti nel nostro cBot Discord Message Example. Se il cBot viene ricompilato ora, la compilazione terminerà con diversi messaggi di errore a causa delle librerie mancanti.

Torna a cTrader e aggiungi le librerie richieste utilizzando la funzionalità Gestisci riferimenti in alto.

Quando compare la finestra Gestione riferimenti, vai a Sfoglia quindi clicca il pulsante Sfoglia. Seleziona il file DLL e quindi esegui la stessa azione per tutti i file DLL a cui vuoi fare riferimento.

Clicca Applica e compila nuovamente il cBot.

Ora, quando esegui un'istanza del cBot, la compilazione sarà completata senza errori e dovresti vedere il messaggio arrivare nel canale Discord.

Questo articolo ha dimostrato come fare riferimento a librerie di terze parti in cTrader Algo utilizzando due metodi diversi.