Lewati ke isi

Cara mereferensikan pustaka pihak ketiga di cTrader Algo

Pustaka pihak ketiga memungkinkan pengguna untuk memperluas dan meningkatkan fungsionalitas cBot, indikator, dan plugin mereka. Karena cTrader Algo dikembangkan dengan .NET 6.0, pengguna dapat menambahkan dan menggunakan pustaka pihak ketiga yang dibangun dengan .NET 6.0 dalam proyek algo mereka.

Dalam artikel ini dan video terkait, Anda akan mempelajari cara mereferensikan pustaka pihak ketiga di API cTrader Algo. Menggunakan pustaka Discord.Net, kami akan mendemonstrasikan cara mengirim pesan ke saluran Discord.

Tambahkan referensi dengan menginstal paket NuGet

Dalam contoh pertama kami, kami berencana untuk menambahkan referensi dalam proyek cBot kami dengan menginstal paket dari pustaka NuGet. NuGet adalah manajer paket resmi untuk platform .NET yang digunakan untuk membuat, mengonsumsi, dan mendistribusikan paket atau pustaka.

Catatan

Jika Anda mengembangkan algoritma di Visual Studio, gunakan metode menambahkan referensi yang dijelaskan di bawah ini. Jika tidak, navigasikan ke bagian berikutnya dari artikel ini.

Di cTrader Algo, buat sebuah cBot. Klik tombol New, masukkan nama seperti "Discord Message Example", lalu klik tombol Create.

Selanjutnya, buka situs web NuGet, ketik Discord di kolom teks dan pilih pustaka Discord.Net dari hasil pencarian.

Klik tab Package manager dan kemudian salin perintah yang ada di sana.

Kembali ke cTrader dan klik Edit in Visual Studio.

Proyek cBot Anda seharusnya terbuka di aplikasi Visual Studio di komputer Anda.

Di Visual Studio, buka menu Tools, pilih NuGet package manager, lalu Package manager console.

Tempelkan perintah yang Anda salin sebelumnya dari situs web NuGet dan jalankan.

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

Setelah menginstal paket yang diperlukan, kita dapat melanjutkan untuk mengembangkan contoh cBot kita.

Mulailah dengan mendeklarasikan parameter penting, seperti token bot Discord dan ID saluran.

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

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

Kemudian deklarasikan objek klien Discord dan objek saluran pesan.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

Dalam metode OnStart() kita, tulis kode sederhana untuk mengirim pesan ke saluran kita ketika cBot dimulai.

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

Anda dapat menyalin kode lengkapnya di bawah ini:

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

Sekarang, bangun cBot.

Kembali ke cTrader. Klik Add instance, tentukan parameter yang Anda inginkan di jendela dan kemudian klik tombol Add instance.

Masukkan token bot Discord dan ID saluran Anda.

Mulai instance cBot. Ketika jendela Access request muncul, klik Allow untuk melanjutkan.

cBot seharusnya mulai berjalan, dan Anda seharusnya melihat pesan tiba di saluran Discord.

Tambahkan referensi melalui UI cTrader

Beberapa pustaka tidak tersedia sebagai paket NuGet. Jika Anda berencana menggunakan pustaka tersebut dalam proyek cBot Anda, Anda harus menambahkan file DLL mereka secara langsung sebagai referensi.

Di sini, kami akan mendemonstrasikan bagaimana Anda dapat mereferensikan pustaka Discord.Net yang sama dengan menambahkan file DLL-nya.

Kembali ke Visual Studio dan copot instalasi pustaka Discord.Net yang kita instal di subbagian sebelumnya. Buka NuGet Package Manager Console seperti yang Anda lakukan sebelumnya dan jalankan perintah berikut:

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

Paket Discord akan dihapus sebagai referensi di cBot Discord Message Example kita. Jika cBot dibangun ulang sekarang, pembangunan akan berakhir dengan beberapa pesan kesalahan karena pustaka yang hilang.

Kembali ke cTrader dan tambahkan pustaka yang diperlukan menggunakan fungsionalitas Manage references di bagian atas.

Ketika jendela Reference manager muncul, navigasikan ke Browse lalu klik tombol Browse. Pilih file DLL dan kemudian lakukan tindakan yang sama untuk semua file DLL yang ingin Anda referensikan.

Klik Apply dan bangun kembali cBot.

Sekarang, ketika Anda menjalankan instance cBot, pembangunan akan selesai tanpa kesalahan, dan Anda seharusnya melihat pesan tiba di saluran Discord.

Artikel ini telah mendemonstrasikan cara mereferensikan pustaka pihak ketiga di cTrader Algo menggunakan dua metode berbeda.