ข้ามไปที่เนื้อหา

วิธีดีบั๊ก cBot

cTrader อนุญาตให้นักพัฒนาสร้าง แก้ไข หรือทำงานกับอัลกอริทึมผ่านตัวแก้ไขในตัว อย่างไรก็ตาม นักพัฒนาบางคนคุ้นเคยกับสภาพแวดล้อมที่แตกต่างกันหรืออาจชอบทำงานในสภาพแวดล้อมการพัฒนาแบบรวม (IDE) แบบมืออาชีพ

ในบทความนี้และวิดีโอที่เกี่ยวข้อง เราจะแสดงวิธีดีบั๊ก cBot ใน Visual Studio

เปิด cBot ใน Visual Studio

ไปที่แอป Algo ใน cTrader และนำทางไปยังแท็บ cBots เพื่อสาธิต เราจะดีบั๊ก Sample RSI cBot

ค้นหา Sample RSI cBot และคลิก ตัวแก้ไขโค้ดควรปรากฏทางด้านขวา

คลิก แก้ไขใน Visual Studio หากคุณมี Visual Studio ติดตั้งบนเครื่องของคุณ มันควรเปิดโค้ด cBot

เปิดใช้งานการดีบั๊กใน Visual Studio

หากตัวแก้ไขโค้ดใน Visual Studio ไม่แสดงโค้ด cBot โดยอัตโนมัติ คุณต้องค้นหาและคลิกไฟล์ C# (.cs) ในโซลูชัน Sample RSI cBot

เลือกโหมดการกำหนดค่า Debug

ตอนนี้ คุณต้องแก้ไขโค้ด cBot เพื่ออนุญาตการดีบั๊

เริ่มต้นด้วยการตั้งค่า AccessRights ของ cBot เป็น FullAccess

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

มาสร้าง cBot ของเราใหม่กัน คลิกขวาที่โซลูชัน Sample RSI cBot แล้วคลิก Rebuild

ดีบัก cBot

เพื่อสาธิตกระบวนการดีบัก เรามาเพิ่มจุดพักในเมธอด OnTick() ของเรากัน คลิกขวาที่บรรทัดโค้ด if (rsi.Result.LastValue < 30) คลิก Breakpoint แล้วเลือก Insert breakpoint

ตอนนี้คุณต้องกลับไปที่ Sample RSI cBot ใน cTrader คลิก Add instance

เลือก Locally แล้วคลิกปุ่ม Add instance

คลิกไอคอน Start cBot เพื่อรัน cBot จากนั้นคลิกปุ่ม Allow เพื่อให้สิทธิ์การเข้าถึง

เลือก Sample RSI cBot - Microsoft Visual Studio เป็นตัวดีบักเกอร์ของคุณแล้วคลิกปุ่ม OK

เมื่อถึงอีเวนต์ OnTick() การทำงานจะหยุดที่จุดพักที่เราตั้งไว้ก่อนหน้านี้

สุดท้าย คุณสามารถใช้ฟังก์ชันการดีบักทั้งหมดของ Visual Studio ได้ ตัวอย่างเช่น คุณสามารถตรวจสอบเมธอดในหน้าต่าง Watch

นอกจากนี้ คุณยังสามารถดำเนินการดังต่อไปนี้:

ใช้ฟังก์ชัน step over เพื่อย้ายการทำงานไปยังบรรทัดถัดไป

ลากบรรทัดการทำงานไปยังคำสั่งอื่น

ใช้ฟังก์ชัน step into เพื่อเข้าไปในเมธอดและตรวจสอบการทำงานของโค้ด

สรุป

เราหวังว่าข้อมูลในบทความและวิดีโอของเราจะช่วยให้คุณดีบัก cBot ใน Visual Studio ได้ หลักการและการดำเนินการดีบักที่เราได้ทบทวนที่นี่ยังสามารถใช้กับ IDE ระดับมืออาชีพอื่น ๆ ได้ด้วย