Aller au contenu

Comment déboguer un cBot

cTrader permet aux développeurs de créer, modifier ou travailler avec des algorithmes via son éditeur intégré. Cependant, certains développeurs sont déjà familiarisés avec un environnement différent ou peuvent préférer travailler dans un environnement de développement intégré (IDE) professionnel.

Dans cet article et la vidéo correspondante, nous allons montrer comment vous pouvez déboguer un cBot dans Visual Studio.

Ouvrir un cBot dans Visual Studio

Accédez à l'application Algo dans cTrader et naviguez vers l'onglet cBots. À des fins de démonstration, déboguons le Sample RSI cBot.

Localisez Sample RSI cBot et cliquez dessus. L'éditeur de code devrait apparaître à droite.

Cliquez sur Modifier dans Visual Studio. Si Visual Studio est installé sur votre machine, il devrait ouvrir le code du cBot.

Activer le débogage dans Visual Studio

Si l'éditeur de code dans Visual Studio n'affiche pas automatiquement le code du cBot, vous devez localiser et cliquer sur le fichier C# (.cs) dans la solution Sample RSI cBot.

Sélectionnez le mode de configuration Debug.

Maintenant, vous devez modifier le code du cBot pour permettre le débogage.

Commencez par définir le cBot AccessRights sur FullAccess.

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

Attachez un débogueur au processus en cours d'exécution du cBot en appelant la méthode System.Diagnostics.Debugger.Launch().

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

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

À ce stade, le code dans votre éditeur de code Visual Studio devrait ressembler à ceci :

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

Recompilons notre cBot. Cliquez avec le bouton droit sur la solution Sample RSI cBot et cliquez sur Rebuild.

Déboguer le cBot

Pour démontrer le processus de débogage, ajoutons un point d'arrêt dans notre méthode OnTick(). Cliquez avec le bouton droit sur la ligne de code if (rsi.Result.LastValue < 30), cliquez sur Breakpoint, puis sélectionnez Insert breakpoint.

Maintenant, vous devez retourner au Sample RSI cBot dans cTrader. Cliquez sur Ajouter une instance.

Sélectionnez Localement, puis cliquez sur le bouton Ajouter une instance.

Cliquez sur l'icône Démarrer cBot pour exécuter le cBot, puis cliquez sur le bouton Autoriser pour lui accorder des droits d'accès.

Sélectionnez Sample RSI cBot - Microsoft Visual Studio comme débogueur et cliquez sur le bouton OK.

En atteignant l'événement OnTick(), l'exécution s'interrompt au point d'arrêt que nous avons défini précédemment.

Enfin, vous pouvez utiliser toutes les fonctions de débogage de Visual Studio. Par exemple, vous pouvez inspecter une méthode dans la fenêtre Watch.

De plus, vous pouvez effectuer les actions suivantes :

Utilisez la fonction step over pour déplacer l'exécution vers la ligne suivante.

Faites glisser la ligne d'exécution à l'intérieur d'une autre instruction.

Utilisez la fonction step into pour entrer dans une méthode et examiner l'exécution du code.

Résumé

Nous espérons que les informations contenues dans notre article et notre vidéo vous ont aidé à déboguer les cBots dans Visual Studio. Les principes et opérations de débogage examinés ici s'appliquent également à d'autres IDE professionnels.