Zum Inhalt

Wie man einen cBot debuggt

cTrader ermöglicht es Entwicklern, Algorithmen über seinen integrierten Editor zu erstellen, zu ändern oder mit ihnen zu arbeiten. Einige Entwickler sind jedoch bereits mit einer anderen Umgebung vertraut oder bevorzugen möglicherweise die Arbeit in einer professionellen integrierten Entwicklungsumgebung (IDE).

In diesem Artikel und dem dazugehörigen Video zeigen wir Ihnen, wie Sie einen cBot in Visual Studio debuggen können.

Öffnen Sie einen cBot in Visual Studio

Gehen Sie zur Algo-App in cTrader und navigieren Sie zur Registerkarte cBots. Zu Demonstrationszwecken debuggen wir den Sample RSI cBot.

Suchen Sie Sample RSI cBot und klicken Sie darauf. Der Code-Editor sollte auf der rechten Seite erscheinen.

Klicken Sie auf In Visual Studio bearbeiten. Wenn Sie Visual Studio auf Ihrem Computer installiert haben, sollte es den cBot-Code öffnen.

Aktivieren Sie das Debugging in Visual Studio

Wenn der Code-Editor in Visual Studio den cBot-Code nicht automatisch anzeigt, müssen Sie die C# (.cs)-Datei in der Sample RSI cBot-Lösung suchen und anklicken.

Wählen Sie den Debug-Konfigurationsmodus.

Jetzt müssen Sie den cBot-Code ändern, um das Debugging zu ermöglichen.

Beginnen Sie damit, die cBot-AccessRights auf FullAccess zu setzen.

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

Hängen Sie einen Debugger an den laufenden cBot-Prozess an, indem Sie die Methode System.Diagnostics.Debugger.Launch() aufrufen.

1
2
3
4
5
6
var result = System.Diagnostics.Debugger.Launch();

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

An diesem Punkt sollte der Code in Ihrem Visual Studio Code-Editor so aussehen:

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

Lassen Sie uns unseren cBot neu erstellen. Klicken Sie mit der rechten Maustaste auf die Sample RSI cBot-Lösung und klicken Sie auf Neu erstellen.

Debuggen Sie den cBot

Um den Debugging-Prozess zu demonstrieren, fügen wir einen Breakpoint in unserer OnTick()-Methode hinzu. Klicken Sie mit der rechten Maustaste auf die Codezeile if (rsi.Result.LastValue < 30), klicken Sie auf Breakpoint und wählen Sie dann Breakpoint einfügen.

Jetzt müssen Sie zu Sample RSI cBot in cTrader zurückkehren. Klicken Sie auf Instanz hinzufügen.

Wählen Sie Lokal und klicken Sie dann auf den Button Instanz hinzufügen.

Klicken Sie auf das Symbol cBot starten, um den cBot auszuführen, und klicken Sie dann auf den Button Zulassen, um ihm Zugriffsrechte zu gewähren.

Wählen Sie Sample RSI cBot - Microsoft Visual Studio als Ihren Debugger und klicken Sie auf den Button OK.

Beim Erreichen des OnTick()-Ereignisses wird die Ausführung durch den Breakpoint unterbrochen, den wir zuvor gesetzt haben.

Schließlich können Sie alle Visual Studio-Debugging-Funktionen verwenden. Sie können beispielsweise eine Methode im Fenster Überwachen inspizieren.

Zusätzlich können Sie die folgenden Aktionen ausführen:

Verwenden Sie die Funktion „Prozedurschritt", um die Ausführung zur nächsten Zeile zu verschieben.

Ziehen Sie die Ausführungszeile in eine andere Anweisung.

Verwenden Sie die Funktion „Einzelschritt", um in eine Methode zu springen und die Ausführung des Codes zu untersuchen.

Zusammenfassung

Wir hoffen, dass die Informationen in unserem Artikel und Video Ihnen geholfen haben, cBots in Visual Studio zu debuggen. Die hier besprochenen Debugging-Prinzipien und -Operationen gelten auch für andere professionelle IDEs.