Ana içeriğe geç

cTrader Algo'da üçüncü taraf kütüphanelere nasıl referans verilir?

Üçüncü taraf kütüphaneler, kullanıcıların cBot'larının, göstergelerinin ve eklentilerinin işlevselliğini genişletmelerini ve iyileştirmelerini sağlar. cTrader Algo, .NET 6.0 ile geliştirildiği için kullanıcılar, .NET 6.0 ile oluşturulmuş üçüncü taraf kütüphaneleri algoritmik projelerinde ekleyebilir ve kullanabilirler.

Bu makalede ve ilgili videosunda, cTrader Algo API'sinde üçüncü taraf kütüphanelere nasıl referans vereceğinizi öğreneceksiniz. Discord.Net kütüphanesini kullanarak, bir Discord kanalına nasıl mesaj gönderileceğini göstereceğiz.

Bir NuGet paketi yükleyerek referans ekleyin

İlk örneğimizde, NuGet kütüphanesinden bir paket yükleyerek cBot projemize bir referans eklemeyi planlıyoruz. NuGet, .NET platformu için paketleri veya kütüphaneleri oluşturmak, kullanmak ve dağıtmak için kullanılan resmi paket yöneticisidir.

Not

Algoritmaları Visual Studio'da geliştiriyorsanız, aşağıda açıklanan referans ekleme yöntemini kullanın. Aksi takdirde, bu makalenin sonraki bölümüne gidin.

cTrader Algo'da bir cBot oluşturun. Yeni düğmesine tıklayın, "Discord Mesaj Örneği" gibi bir ad girin, ardından Oluştur düğmesine tıklayın.

Ardından, NuGet web sitesine gidin, metin alanına Discord yazın ve sonuçlardan Discord.Net kütüphanesini seçin.

Paket yöneticisi sekmesine tıklayın ve oradaki komutu kopyalayın.

cTrader'a geri dönün ve Visual Studio'da Düzenle'ye tıklayın.

cBot projeniz bilgisayarınızdaki Visual Studio uygulamasında açılmalıdır.

Visual Studio'da Araçlar menüsünü açın, NuGet paket yöneticisi'ni, ardından Paket yöneticisi konsolu'nu seçin.

Daha önce NuGet web sitesinden kopyaladığınız komutu yapıştırın ve çalıştırın.

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

Gerekli paketi yükledikten sonra, cBot örneğimizi geliştirmeye devam edebiliriz.

Discord bot belirteci ve kanal kimliği gibi önemli parametreleri tanımlayarak başlayın.

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

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

Ardından bir Discord istemci nesnesi ve bir mesaj kanalı nesnesi tanımlayın.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

OnStart() yöntemimizde, cBot başladığında kanalımıza bir mesaj göndermek için basit bir kod yazın.

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

Aşağıdaki kodun tamamını kopyalayabilirsiniz:

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

Şimdi cBot'u oluşturun.

cTrader'a geri dönün. Örnek Ekle'ye tıklayın, pencerede tercih ettiğiniz parametreleri belirtin ve ardından Örnek Ekle düğmesine tıklayın.

Discord bot belirtecinizi ve kanal kimliğinizi girin.

cBot örneğini başlatın. Erişim isteği penceresi göründüğünde, devam etmek için İzin Ver'e tıklayın.

cBot çalışmaya başlamalıdır ve Discord kanalına bir mesaj geldiğini görmelisiniz.

cTrader kullanıcı arayüzü aracılığıyla referans ekleyin

Bazı kütüphaneler NuGet paketleri olarak mevcut değildir. cBot projenizde bu tür kütüphaneleri kullanmayı planlıyorsanız, DLL dosyalarını doğrudan referans olarak eklemeniz gerekir.

Burada, aynı Discord.Net kütüphanesine DLL dosyalarını ekleyerek nasıl referans verebileceğinizi göstereceğiz.

Visual Studio'ya geri dönün ve önceki alt bölümde yüklediğimiz Discord.Net kütüphanesini kaldırın. Daha önce yaptığınız gibi NuGet Paket Yöneticisi Konsolunu açın ve aşağıdaki komutu çalıştırın:

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

Discord paketleri, Discord Mesaj Örneği cBot'umuzda referans olarak kaldırılacaktır. cBot şimdi yeniden oluşturulursa, eksik kütüphaneler nedeniyle derleme birkaç hata mesajıyla sonuçlanacaktır.

cTrader'a geri dönün ve üstteki Referansları Yönet işlevini kullanarak gerekli kütüphaneleri ekleyin.

Referans yöneticisi penceresi göründüğünde, Gözat'a gidin, ardından Gözat düğmesine tıklayın. DLL dosyasını seçin ve ardından referans vermek istediğiniz tüm DLL dosyaları için aynı işlemi gerçekleştirin.

Uygula'ya tıklayın ve cBot'u yeniden oluşturun.

Artık bir cBot örneği çalıştırdığınızda oluşturma işlemi hatasız tamamlanacak ve mesajın Discord kanalına ulaştığını görmelisiniz.

Bu makale, cTrader Algo'da üçüncü taraf kütüphanelerine iki farklı yöntem kullanarak nasıl referans verileceğini göstermiştir.