cBotをデバッグする方法

cTraderの組み込みエディタを通じて、開発者はアルゴリズムを作成、修正、または操作することができます。しかし、いくつかの開発者は異なる環境に慣れているか、プロフェッショナルなIDEで作業することを好むかもしれません。

この記事および対応するビデオでは、Visual StudioでcBotをデバッグする方法を示します。

Visual StudioでcBotを開く

cTraderの「Algo」アプリに移動し、「cBots」タブに移動します。デモンストレーションのために、「Sample RSI cBot」をデバッグしましょう。

Sample RSI cBot」を見つけてクリックします。コードエディタが右側に表示されるはずです。

Edit in Visual Studio」をクリックします。マシンにVisual Studioがインストールされていれば、cBotのコードが開きます。

Visual Studioでデバッグを有効にする

Visual Studioのコードエディタが自動的にcBotコードを表示しない場合、「Sample RSI cBot」ソリューションのC# (.cs)ファイルを見つけてクリックする必要があります。

Debug」構成モードを選択します。

次に、デバッグを可能にするためにcBotコードを変更する必要があります。

まず、cBotのAccessRightsFullAccessに設定します。

1
[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess, AddIndicators = true)]

cBotの実行プロセスにデバッガをアタッチするには、System.Diagnostics.Debugger.Launch()メソッドを呼び出します。

1
2
3
4
5
6
var result = System.Diagnostics.Debugger.Launch();
if (result is false)
{
    Print("Debugger launch failed");
}

この時点で、Visual Studioのコードエディタ内のコードは次のようになっているはずです:

 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using cAlgo.API;
using cAlgo.API.Indicators;
namespace cAlgo
{
    [Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.FullAccess, AddIndicators = true)]
    public class SampleRSIcBot : Robot
    {
        [Parameter("Quantity (Lots)", Group = "Volume", DefaultValue = 1, MinValue = 0.01, Step = 0.01)]
        public double Quantity { get; set; }

        [Parameter("Source", Group = "RSI")]
        public DataSeries Source { get; set; }

        [Parameter("Periods", Group = "RSI", DefaultValue = 14)]
        public int Periods { get; set; }

        private RelativeStrengthIndex rsi;

        protected override void OnStart()
        {
            var result = System.Diagnostics.Debugger.Launch();

            if (result is false)
            {
                Print("Debugger launch failed");
            }

            rsi = Indicators.RelativeStrengthIndex(Source, Periods);
        }

        protected override void OnTick()
        {
            if (rsi.Result.LastValue < 30)
            {
                Close(TradeType.Sell);
                Open(TradeType.Buy);
            }
            else if (rsi.Result.LastValue > 70)
            {
                Close(TradeType.Buy);
                Open(TradeType.Sell);
            }
        }

        private void Close(TradeType tradeType)
        {
            foreach (var position in Positions.FindAll("SampleRSI", SymbolName, tradeType))
                ClosePosition(position);
        }

        private void Open(TradeType tradeType)
        {
            var position = Positions.Find("SampleRSI", SymbolName, tradeType);
            var volumeInUnits = Symbol.QuantityToVolumeInUnits(Quantity);

            if (position == null)
                ExecuteMarketOrder(tradeType, SymbolName, volumeInUnits, "SampleRSI");
        }
    }
}

Sample RSI cBot」ソリューションを右クリックし、「Rebuild」をクリックしてcBotをリビルドします。

cBotをデバッグする

デバッグプロセスを示すために、OnTick()メソッドにブレークポイントを追加します。if (rsi.Result.LastValue < 30)行のコードを右クリックし、「Breakpoint」をクリックして「Insert Breakpoint」を選択します。

次に、cTraderで「Sample RSI cBot」に戻ります。「Add instance」をクリックします。

Locally」を選択し、「Add instance」ボタンをクリックします。

cBotを実行するには、Start cBotアイコンをクリックし、「Allow」ボタンをクリックしてアクセス権を付与します。

デバッガとして「Sample RSI cBot – Microsoft Visual Studio」を選択し、「OK」ボタンをクリックします。

設定したブレークポイントによってOnTick()イベントに到達すると、実行が中断されます。

最後に、Visual Studioのすべてのデバッグ機能を使用できます。たとえば、「Watch」ウィンドウでメソッドを検査することができます。

さらに、次のアクションを実行できます:

Step Over」機能を使用して、実行を次の行に移動します。

実行ラインを別のステートメント内にドラッグします。

Step Into」機能を使用して、メソッドにステップインし、コードの実行を調べます。

まとめ

この記事とビデオの情報が、Visual StudioでのcBotのデバッグに役立ったことを願っています。ここでレビューしたデバッグの原則と操作は、他のプロフェッショナルなIDEにも適用されます。

cTrader Algoの詳細については、ドキュメントを参照するか、フォーラムで質問を投稿してください。

私たちのYouTubeチャンネルに登録してください

目次

このページについて