ข้ามไปที่เนื้อหา

วิธีอ้างอิงไลบรารีของบุคคลที่สามใน cTrader Algo

ไลบรารีของบุคคลที่สามช่วยให้ผู้ใช้สามารถขยายและปรับปรุงฟังก์ชันการทำงานของ cBot ตัวบ่งชี้ และปลั๊กอินของพวกเขาได้ เนื่องจาก cTrader Algo พัฒนาด้วย .NET 6.0 ผู้ใช้จึงสามารถเพิ่มและใช้ไลบรารีของบุคคลที่สามที่สร้างด้วย .NET 6.0 ในโปรเจกต์อัลกอริทึมของพวกเขาได้

ในบทความนี้และวิดีโอที่เกี่ยวข้อง คุณจะได้เรียนรู้วิธีการอ้างอิงไลบรารีของบุคคลที่สามใน API ของ cTrader Algo โดยใช้ไลบรารี Discord.Net เราจะสาธิตวิธีการส่งข้อความไปยังช่อง Discord

เพิ่มการอ้างอิงโดยการติดตั้งแพ็คเกจ NuGet

ในตัวอย่างแรกของเรา เราวางแผนที่จะเพิ่มการอ้างอิงในโปรเจกต์ cBot ของเราโดยการติดตั้งแพ็คเกจจากไลบรารี NuGet NuGet เป็นตัวจัดการแพ็คเกจอย่างเป็นทางการสำหรับแพลตฟอร์ม .NET ที่ใช้ในการสร้าง ใช้งาน และแจกจ่ายแพ็คเกจหรือไลบรารีต่างๆ

หมายเหตุ

สำหรับการพัฒนาอัลกอริทึมใน Visual Studio ให้ใช้วิธีการเพิ่มการอ้างอิงที่อธิบายไว้ด้านล่าง มิฉะนั้น ให้ไปที่ส่วนถัดไปของบทความนี้

ใน cTrader Algo สร้าง cBot คลิกที่ปุ่ม New ป้อนชื่อเช่น "Discord Message Example" จากนั้นคลิกที่ปุ่ม Create

ต่อไป ไปที่ เว็บไซต์ NuGet พิมพ์ Discord ในช่องข้อความ และเลือกไลบรารี Discord.Net จากผลลัพธ์

คลิกที่แท็บ Package manager แล้วคัดลอกคำสั่งที่ปรากฏที่นั่น

กลับไปที่ cTrader และคลิกที่ Edit in Visual Studio

โปรเจกต์ cBot ของคุณควรจะเปิดขึ้นในแอปพลิเคชัน Visual Studio บนคอมพิวเตอร์ของคุณ

ใน Visual Studio ให้เปิดเมนู Tools เลือก NuGet package manager จากนั้นเลือก Package manager console

วางคำสั่งที่คุณได้คัดลอกมาก่อนหน้านี้จากเว็บไซต์ NuGet และรันคำสั่งนั้น

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

เมื่อติดตั้งแพ็คเกจที่จำเป็นแล้ว เราสามารถดำเนินการพัฒนาตัวอย่าง cBot ของเราได้

เริ่มต้นด้วยการประกาศพารามิเตอร์ที่สำคัญ เช่น โทเค็นของบอท Discord และ ID ของช่อง

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

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

จากนั้นประกาศออบเจ็กต์ไคลเอ็นต์ Discord และออบเจ็กต์ช่องข้อความ

1
2
DiscordSocketClient _discordSocketClient;
IMessageChannel _channel;

ในเมธอด OnStart() ของเรา ให้เขียนโค้ดง่ายๆ เพื่อส่งข้อความไปยังช่องของเราเมื่อ cBot เริ่มทำงาน

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

คุณสามารถคัดลอกโค้ดทั้งหมดด้านล่างนี้:

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

ตอนนี้ ให้สร้าง cBot

กลับไปที่ cTrader คลิกที่ Add instance ระบุพารามิเตอร์ที่คุณต้องการในหน้าต่าง แล้วคลิกปุ่ม Add instance

ป้อนโทเค็นบอท Discord และ ID ช่องของคุณ

เริ่มต้นอินสแตนซ์ของ cBot เมื่อหน้าต่าง Access request ปรากฏขึ้น ให้คลิกที่ Allow เพื่อดำเนินการต่อ

cBot ควรจะเริ่มทำงาน และคุณควรจะเห็นข้อความปรากฏในช่อง Discord

เพิ่มการอ้างอิงผ่านอินเตอร์เฟซผู้ใช้ของ cTrader

ไลบรารีบางตัวไม่มีให้ใช้งานในรูปแบบของแพ็คเกจ NuGet หากคุณวางแผนที่จะใช้ไลบรารีเหล่านี้ในโปรเจกต์ cBot ของคุณ คุณจะต้องเพิ่มไฟล์ DLL ของพวกมันโดยตรงเป็นการอ้างอิง

ที่นี่ เราจะแสดงวิธีที่คุณสามารถอ้างอิงถึงไลบรารี Discord.Net เดียวกันโดยการเพิ่มไฟล์ DLL ของมัน

กลับไปที่ Visual Studio และถอนการติดตั้งไลบรารี Discord.Net ที่เราได้ติดตั้งไว้ในหัวข้อย่อยก่อนหน้านี้ เปิด NuGet Package Manager Console เหมือนที่คุณทำก่อนหน้านี้และรันคำสั่งต่อไปนี้:

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

แพ็กเกจ Discord จะถูกลบออกจากการอ้างอิงในตัวอย่าง cBot ข้อความ Discord ของเรา หาก cBot ถูกสร้างใหม่ในตอนนี้ การคอมไพล์จะสิ้นสุดลงด้วยข้อความแสดงข้อผิดพลาดหลายรายการเนื่องจากไลบรารีที่หายไป

กลับไปที่ cTrader และเพิ่มไลบรารีที่จำเป็นโดยใช้ฟังก์ชัน จัดการการอ้างอิง ที่ด้านบน

เมื่อหน้าต่าง ตัวจัดการการอ้างอิง ปรากฏขึ้น ให้ไปที่ เรียกดู แล้วคลิกปุ่ม เรียกดู เลือกไฟล์ DLL จากนั้นทำการเดียวกันนี้สำหรับไฟล์ DLL ทั้งหมดที่คุณต้องการอ้างอิง

คลิกที่ ใช้ และคอมไพล์ cBot อีกครั้ง

ตอนนี้ เมื่อคุณรันอินสแตนซ์ของ cBot การคอมไพล์จะเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด และคุณควรจะเห็นข้อความส่งไปยังช่อง Discord

บทความนี้ได้แสดงให้เห็นถึงวิธีการอ้างอิงไลบรารีของบุคคลที่สามใน cTrader Algo โดยใช้สองวิธีที่แตกต่างกัน