コンテンツにスキップ

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で編集をクリックします。

cBotプロジェクトが、コンピューター上のVisual Studioアプリケーションで開かれるはずです。

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ファイルを直接参照として追加する必要があります。

ここでは、DLLファイルを追加することで同じDiscord.Netライブラリを参照する方法を説明します。

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でサードパーティライブラリを参照する2つの異なる方法を紹介しました。