Langkau tajuk talian

Cara merujuk perpustakaan pihak ketiga dalam cTrader Algo

Perpustakaan pihak ketiga membolehkan pengguna mengembangkan dan meningkatkan fungsi cBot, indikator dan plugin mereka. Memandangkan cTrader Algo dibangunkan dengan .NET 6.0, pengguna boleh menambah dan menggunakan perpustakaan pihak ketiga yang dibina dengan .NET 6.0 dalam projek algo mereka.

Dalam artikel ini dan video yang berkaitan, anda akan mempelajari cara merujuk perpustakaan pihak ketiga dalam API cTrader Algo. Menggunakan perpustakaan Discord.Net, kita akan menunjukkan cara menghantar mesej ke saluran Discord.

Tambah rujukan dengan memasang pakej NuGet

Dalam contoh pertama kita, kita merancang untuk menambah rujukan dalam projek cBot kita dengan memasang pakej dari perpustakaan NuGet. NuGet ialah pengurus pakej rasmi untuk platform .NET yang digunakan untuk mencipta, menggunakan dan mengedarkan pakej atau perpustakaan.

Nota

Jika anda membangunkan algoritma dalam Visual Studio, gunakan kaedah menambah rujukan yang diterangkan di bawah. Jika tidak, navigasi ke bahagian seterusnya artikel ini.

Dalam cTrader Algo, cipta cBot. Klik butang Baharu, masukkan nama seperti "Contoh Mesej Discord", kemudian klik butang Cipta.

Seterusnya, pergi ke laman web NuGet, taip Discord dalam medan teks dan pilih perpustakaan Discord.Net daripada hasil carian.

Klik tab Pengurus pakej dan kemudian salin arahan di sana.

Kembali ke cTrader dan klik Edit dalam Visual Studio.

Projek cBot anda sepatutnya dibuka dalam aplikasi Visual Studio pada komputer anda.

Dalam Visual Studio, buka menu Alat, pilih Pengurus pakej NuGet, kemudian Konsol pengurus pakej.

Tampal arahan yang anda salin sebelum ini dari laman web NuGet dan jalankannya.

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

Setelah memasang pakej yang diperlukan, kita boleh meneruskan untuk membangunkan contoh cBot kita.

Mulakan dengan mengisytiharkan 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 isytiharkan objek klien Discord dan objek saluran mesej.

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

Dalam kaedah OnStart() kita, tulis kod mudah untuk menghantar mesej ke saluran kita apabila cBot bermula.

 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 boleh menyalin kod penuh di bawah:

 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, bina cBot.

Kembali ke cTrader. Klik Tambah tika, tentukan parameter pilihan anda dalam tetingkap dan kemudian klik butang Tambah tika.

Masukkan token bot Discord dan ID saluran anda.

Mulakan tika cBot. Apabila tetingkap Permintaan akses muncul, klik Benarkan untuk meneruskan.

cBot sepatutnya mula berjalan, dan anda sepatutnya melihat mesej tiba di saluran Discord.

Tambah rujukan melalui UI cTrader

Sesetengah perpustakaan tidak tersedia sebagai pakej NuGet. Jika anda merancang untuk menggunakan perpustakaan sedemikian dalam projek cBot anda, anda perlu menambah fail DLL mereka secara langsung sebagai rujukan.

Di sini, kita akan menunjukkan bagaimana anda boleh merujuk perpustakaan Discord.Net yang sama dengan menambah fail DLL.

Kembali ke Visual Studio dan nyahpasang perpustakaan Discord.Net yang kita pasang dalam subseksyen sebelumnya. Buka Konsol Pengurus Pakej NuGet seperti yang anda lakukan sebelum ini dan jalankan arahan berikut:

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

Pakej Discord akan dikeluarkan sebagai rujukan dalam cBot Contoh Mesej Discord kita. Jika cBot dibina semula sekarang, pembinaan akan berakhir dengan beberapa mesej ralat disebabkan perpustakaan yang hilang.

Kembali ke cTrader dan tambah perpustakaan yang diperlukan menggunakan fungsi Urus rujukan di bahagian atas.

Apabila tetingkap Pengurus rujukan muncul, navigasi ke Semak imbas kemudian klik butang Semak imbas. Pilih fail DLL dan kemudian lakukan tindakan yang sama untuk semua fail DLL yang anda ingin rujuk.

Klik Guna dan bina cBot sekali lagi.

Sekarang, apabila anda menjalankan tika cBot, pembinaan akan selesai tanpa ralat, dan anda sepatutnya melihat mesej tiba di saluran Discord.

Artikel ini telah menunjukkan cara merujuk perpustakaan pihak ketiga dalam cTrader Algo menggunakan dua kaedah berbeza.