Langkau tajuk talian

Cara nyahpepijat cBot

cTrader membolehkan pembangun mencipta, mengubah suai atau bekerja dengan algoritma melalui editor terbina dalamnya. Walau bagaimanapun, sesetengah pembangun sudah biasa dengan persekitaran yang berbeza atau mungkin lebih suka bekerja dalam persekitaran pembangunan bersepadu (IDE) profesional.

Dalam artikel ini dan video yang berkaitan, kami akan menunjukkan bagaimana anda boleh menyahpepijat cBot dalam Visual Studio.

Buka cBot dalam Visual Studio

Pergi ke aplikasi Algo dalam cTrader dan navigasi ke tab cBots. Untuk tujuan demonstrasi, mari kita nyahpepijat Sample RSI cBot.

Cari Sample RSI cBot dan klik padanya. Editor kod sepatutnya muncul di sebelah kanan.

Klik Edit dalam Visual Studio. Jika anda mempunyai Visual Studio dipasang pada mesin anda, ia sepatutnya membuka kod cBot.

Dayakan penyahpepijatan dalam Visual Studio

Jika editor kod dalam Visual Studio tidak menunjukkan kod cBot secara automatik, anda perlu mencari dan mengklik fail C# (.cs) dalam penyelesaian Sample RSI cBot.

Pilih mod konfigurasi Debug.

Sekarang, anda perlu mengubah suai kod cBot untuk membolehkan penyahpepijatan.

Mulakan dengan menetapkan AccessRights cBot kepada FullAccess.

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

Lampirkan penyahpepijat kepada proses berjalan cBot dengan memanggil kaedah 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 ketika ini, kod dalam editor kod Visual Studio anda sepatutnya kelihatan 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 bina semula cBot kita. Klik kanan penyelesaian Sample RSI cBot dan klik Bina Semula.

Debug cBot

Untuk menunjukkan proses penyahpepijatan, mari tambahkan titik henti dalam kaedah OnTick() kita. Klik kanan pada baris kod if (rsi.Result.LastValue < 30), klik Breakpoint dan kemudian pilih Insert breakpoint.

Sekarang, anda perlu kembali ke Sample RSI cBot dalam cTrader. Klik Add instance.

Pilih Locally dan kemudian klik butang Add instance.

Klik ikon Start cBot untuk menjalankan cBot, kemudian klik butang Allow untuk memberikan hak akses.

Pilih Sample RSI cBot - Microsoft Visual Studio sebagai penyahpepijat anda dan klik butang OK.

Apabila mencapai peristiwa OnTick(), pelaksanaan akan berhenti pada titik henti yang kita tetapkan sebelum ini.

Akhir sekali, anda boleh menggunakan semua fungsi penyahpepijatan Visual Studio. Contohnya, anda boleh memeriksa kaedah dalam tetingkap Watch.

Selain itu, anda boleh melakukan tindakan berikut:

Gunakan fungsi langkah lalu untuk menggerakkan pelaksanaan ke baris seterusnya.

Seret baris pelaksanaan ke dalam kenyataan lain.

Gunakan fungsi langkah masuk untuk melangkah ke dalam kaedah dan memeriksa pelaksanaan kod.

Ringkasan

Kami berharap maklumat dalam artikel dan video kami membantu anda menyahpepijat cBot dalam Visual Studio. Prinsip dan operasi penyahpepijatan yang dikaji semula di sini juga boleh digunakan untuk IDE profesional yang lain.