Lewati ke isi

Cara men-debug cBot

cTrader memungkinkan pengembang untuk membuat, memodifikasi atau bekerja dengan algoritma melalui editor bawaan. Namun, beberapa pengembang sudah familiar dengan lingkungan yang berbeda atau mungkin lebih suka bekerja di lingkungan pengembangan terintegrasi (IDE) profesional.

Dalam artikel ini dan video terkaitnya, kami akan mendemonstrasikan bagaimana Anda dapat men-debug cBot di Visual Studio.

Buka cBot di Visual Studio

Buka aplikasi Algo di cTrader dan navigasikan ke tab cBots. Untuk tujuan demonstrasi, mari kita debug Sample RSI cBot.

Temukan Sample RSI cBot dan klik. Editor kode seharusnya muncul di sebelah kanan.

Klik Edit di Visual Studio. Jika Anda memiliki Visual Studio terinstal di mesin Anda, itu seharusnya membuka kode cBot.

Aktifkan debugging di Visual Studio

Jika editor kode di Visual Studio tidak secara otomatis menampilkan kode cBot, Anda harus menemukan dan mengklik file C# (.cs) dalam solusi Sample RSI cBot.

Pilih mode konfigurasi Debug.

Sekarang, Anda harus memodifikasi kode cBot untuk memungkinkan debugging.

Mulai dengan mengatur AccessRights cBot ke FullAccess.

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

Lampirkan debugger ke proses yang sedang berjalan cBot dengan memanggil metode System.Diagnostics.Debugger.Launch().

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

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

Pada titik ini, kode di editor kode Visual Studio Anda seharusnya terlihat seperti ini:

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

Mari kita bangun ulang cBot kita. Klik kanan solusi Sample RSI cBot dan klik Rebuild.

Debug cBot

Untuk mendemonstrasikan proses debugging, mari kita tambahkan breakpoint di metode OnTick() kita. Klik kanan baris kode if (rsi.Result.LastValue < 30), klik Breakpoint dan kemudian pilih Insert breakpoint.

Sekarang, Anda harus kembali ke Sample RSI cBot di cTrader. Klik Tambah instance.

Pilih Locally dan kemudian klik tombol Tambah instance.

Klik ikon Mulai cBot untuk menjalankan cBot, lalu klik tombol Allow untuk memberikan hak akses.

Pilih Sample RSI cBot - Microsoft Visual Studio sebagai debugger Anda dan klik tombol OK.

Saat mencapai event OnTick(), eksekusi berhenti pada breakpoint yang kita atur sebelumnya.

Akhirnya, Anda dapat menggunakan semua fungsi debugging Visual Studio. Misalnya, Anda dapat memeriksa metode di jendela Watch.

Selain itu, Anda dapat melakukan tindakan berikut:

Gunakan fungsi step over untuk memindahkan eksekusi ke baris berikutnya.

Seret garis eksekusi ke dalam pernyataan lain.

Gunakan fungsi step into untuk masuk ke dalam metode dan memeriksa eksekusi kode.

Ringkasan

Kami berharap informasi dalam artikel dan video kami membantu Anda men-debug cBot di Visual Studio. Prinsip dan operasi debugging yang dibahas di sini juga berlaku untuk IDE profesional lainnya.