콘텐츠로 이동

cTrader Algo에서 타사 라이브러리 참조 방법

타사 라이브러리를 통해 사용자는 cBot, 지표 및 플러그인의 기능을 확장하고 개선할 수 있습니다. cTrader Algo는 .NET 6.0으로 개발되었으므로 사용자는 .NET 6.0으로 빌드된 타사 라이브러리를 알고리즘 프로젝트에 추가하고 사용할 수 있습니다.

이 문서와 해당 비디오에서는 cTrader Algo API에서 타사 라이브러리를 참조하는 방법을 배우게 됩니다. Discord.Net 라이브러리를 사용하여 Discord 채널에 메시지를 보내는 방법을 시연합니다.

NuGet 패키지를 설치하여 참조 추가

첫 번째 예제에서는 NuGet 라이브러리에서 패키지를 설치하여 cBot 프로젝트에 참조를 추가할 계획입니다. NuGet은 .NET 플랫폼의 공식 패키지 관리자로, 패키지 또는 라이브러리를 생성, 소비 및 배포하는 데 사용됩니다.

참고

Visual Studio에서 알고리즘을 개발하는 경우 아래 설명된 참조 추가 방법을 사용하세요. 그렇지 않으면 이 문서의 다음 섹션으로 이동하세요.

cTrader Algo에서 cBot을 생성하세요. 새로 만들기 버튼을 클릭하고 "Discord Message Example"과 같은 이름을 입력한 후 생성 버튼을 클릭하세요.

다음으로 NuGet 웹사이트로 이동하여 텍스트 필드에 Discord를 입력하고 결과에서 Discord.Net 라이브러리를 선택하세요.

패키지 관리자 탭을 클릭한 후 거기에 있는 명령어를 복사하세요.

cTrader로 돌아가서 Visual Studio에서 편집을 클릭하세요.

컴퓨터의 Visual Studio 애플리케이션에서 cBot 프로젝트가 열립니다.

Visual Studio에서 도구 메뉴를 열고 NuGet 패키지 관리자를 선택한 후 패키지 관리자 콘솔을 선택하세요.

이전에 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로 돌아가세요. 인스턴스 추가를 클릭하고 창에서 원하는 매개변수를 지정한 후 인스턴스 추가 버튼을 클릭하세요.

Discord 봇 토큰과 채널 ID를 입력하세요.

cBot 인스턴스를 시작하세요. 액세스 요청 창이 나타나면 허용을 클릭하여 계속하세요.

cBot이 실행되기 시작하고 Discord 채널에 메시지가 도착하는 것을 볼 수 있습니다.

cTrader UI를 통해 참조 추가

일부 라이브러리는 NuGet 패키지로 제공되지 않습니다. 이러한 라이브러리를 cBot 프로젝트에서 사용하려면 DLL 파일을 직접 참조로 추가해야 합니다.

여기서는 동일한 Discord.Net 라이브러리를 DLL 파일로 추가하여 참조하는 방법을 보여드리겠습니다.

Visual Studio로 돌아가서 이전 하위 섹션에서 설치한 Discord.Net 라이브러리를 제거하세요. 이전과 같이 NuGet 패키지 관리자 콘솔을 열고 다음 명령어를 실행하세요:

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

Discord 패키지가 Discord Message Example cBot에서 참조로 제거됩니다. 이제 cBot을 다시 빌드하면 누락된 라이브러리로 인해 여러 오류 메시지와 함께 빌드가 종료됩니다.

cTrader로 돌아가서 상단의 참조 관리 기능을 사용하여 필요한 라이브러리를 추가하세요.

참조 관리자 창이 나타나면 찾아보기로 이동한 후 찾아보기 버튼을 클릭하세요. DLL 파일을 선택하고 참조하려는 모든 DLL 파일에 대해 동일한 작업을 수행하세요.

적용을 클릭하고 cBot을 다시 빌드하세요.

이제 cBot 인스턴스를 실행하면 오류 없이 빌드가 완료되고 Discord 채널에 메시지가 도착하는 것을 볼 수 있습니다.

이 문서에서는 두 가지 다른 방법을 사용하여 cTrader Algo에서 타사 라이브러리를 참조하는 방법을 보여드렸습니다.