Przejdź do treści

Jak odwoływać się do bibliotek innych firm w cTrader Algo

Biblioteki innych firm umożliwiają użytkownikom rozszerzanie i ulepszanie funkcjonalności ich cBotów, wskaźników i wtyczek. Ponieważ cTrader Algo jest opracowany w .NET 6.0, użytkownicy mogą dodawać i używać bibliotek innych firm zbudowanych w .NET 6.0 w swoich projektach algorytmicznych.

W tym artykule i odpowiadającym mu filmie dowiesz się, jak odwoływać się do bibliotek innych firm w interfejsie API cTrader Algo. Używając biblioteki Discord.Net, pokażemy, jak wysyłać wiadomości na kanał Discord.

Dodaj odwołanie, instalując pakiet NuGet

W naszym pierwszym przykładzie planujemy dodać odwołanie w naszym projekcie cBota, instalując pakiet z biblioteki NuGet. NuGet to oficjalny menedżer pakietów dla platformy .NET używany do tworzenia, konsumowania i dystrybucji pakietów lub bibliotek.

Uwaga

Jeśli tworzysz algorytmy w Visual Studio, użyj metody dodawania odwołania opisanej poniżej. W przeciwnym razie przejdź do następnej sekcji tego artykułu.

W cTrader Algo utwórz cBota. Kliknij przycisk Nowy, wprowadź nazwę, taką jak „Discord Message Example", a następnie kliknij przycisk Utwórz.

Następnie przejdź na stronę NuGet, wpisz Discord w polu tekstowym i wybierz bibliotekę Discord.Net z wyników.

Kliknij zakładkę Package manager, a następnie skopiuj tam polecenie.

Wróć do cTrader i kliknij Edytuj w Visual Studio.

Twój projekt cBota powinien otworzyć się w aplikacji Visual Studio na Twoim komputerze.

W Visual Studio otwórz menu Tools, wybierz NuGet package manager, a następnie Package manager console.

Wklej polecenie, które wcześniej skopiowałeś ze strony NuGet i uruchom je.

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

Po zainstalowaniu wymaganego pakietu możemy przystąpić do opracowania naszego przykładu cBota.

Zacznij od zadeklarowania ważnych parametrów, takich jak token bota Discord i identyfikator kanału.

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

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

Następnie zadeklaruj obiekt klienta Discord i obiekt kanału wiadomości.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

W naszej metodzie OnStart() napisz prosty kod, aby wysłać wiadomość na nasz kanał, gdy cBot się uruchomi.

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

Możesz skopiować pełny kod poniżej:

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

Teraz zbuduj cBota.

Wróć do cTrader. Kliknij Dodaj wystąpienie, określ preferowane parametry w oknie, a następnie kliknij przycisk Dodaj wystąpienie.

Wprowadź token bota Discord i identyfikator kanału.

Uruchom wystąpienie cBota. Gdy pojawi się okno Żądanie dostępu, kliknij Zezwól na dostęp, aby kontynuować.

cBot powinien zacząć działać, a w kanale Discord powinna pojawić się wiadomość.

Dodaj odniesienie przez interfejs cTrader

Niektóre biblioteki nie są dostępne jako pakiety NuGet. Jeśli planujesz używać takich bibliotek w swoim projekcie cBota, musisz dodać ich pliki DLL bezpośrednio jako odniesienia.

Tutaj pokażemy, jak możesz odnieść się do tej samej biblioteki Discord.Net, dodając jej pliki DLL.

Wróć do Visual Studio i odinstaluj bibliotekę Discord.Net, którą zainstalowaliśmy w poprzedniej podsekcji. Otwórz konsolę menedżera pakietów NuGet, tak jak wcześniej, i uruchom następujące polecenie:

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

Pakiety Discord zostaną usunięte jako odniesienia w naszym cBocie Discord Message Example. Jeśli cBot zostanie teraz przebudowany, kompilacja zakończy się kilkoma komunikatami o błędach z powodu brakujących bibliotek.

Wróć do cTrader i dodaj wymagane biblioteki, korzystając z funkcji Zarządzaj odniesieniami u góry.

Gdy pojawi się okno Menedżer odniesień, przejdź do Przeglądaj, a następnie kliknij przycisk Przeglądaj. Wybierz plik DLL, a następnie wykonaj tę samą czynność dla wszystkich plików DLL, do których chcesz się odnieść.

Kliknij Zastosuj i ponownie zbuduj cBota.

Teraz, gdy uruchomisz wystąpienie cBota, kompilacja zostanie ukończona bez błędów, a w kanale Discord powinna pojawić się wiadomość.

Ten artykuł pokazał, jak odnieść się do bibliotek zewnętrznych w cTrader Algo przy użyciu dwóch różnych metod.