Ana içeriğe geç

cBot'ta hata ayıklama

cTrader, geliştiricilerin yerleşik editörü aracılığıyla algoritmalar oluşturmasına, değiştirmesine veya üzerinde çalışmasına olanak tanır. Ancak bazı geliştiriciler zaten farklı bir ortama aşinadır veya profesyonel bir entegre geliştirme ortamında (IDE) çalışmayı tercih edebilir.

Bu makalede ve ilgili videosunda, Visual Studio'da bir cBot'ta nasıl hata ayıklayabileceğinizi göstereceğiz.

Visual Studio'da bir cBot açın

cTrader'daki Algo uygulamasına gidin ve cBot'lar sekmesine gidin. Gösterim amacıyla, Örnek RSI cBot'ta hata ayıklayalım.

Örnek RSI cBot'u bulun ve tıklayın. Kod editörü sağda görünmelidir.

Visual Studio'da Düzenle'ye tıklayın. Visual Studio makinenizde yüklüyse cBot kodunu açmalıdır.

Visual Studio'da hata ayıklamayı etkinleştirin

Visual Studio'daki kod editörü cBot kodunu otomatik olarak göstermiyorsa Örnek RSI cBot çözümündeki C# (.cs) dosyasını bulup tıklamanız gerekir.

Hata Ayıklama yapılandırma modunu seçin.

Şimdi, hata ayıklamaya izin vermek için cBot kodunu değiştirmeniz gerekir.

cBot AccessRights'ı FullAccess olarak ayarlayarak başlayın.

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

System.Diagnostics.Debugger.Launch() yöntemini çağırarak cBot çalışma sürecine bir hata ayıklayıcı ekleyin.

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

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

Bu noktada, Visual Studio kod editörünüzdeki kod şöyle görünmelidir:

 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'umuzu yeniden oluşturalım. Örnek RSI cBot çözümüne sağ tıklayın ve Yeniden Oluştur'a tıklayın.

cBot'ta hata ayıklayın

Hata ayıklama sürecini göstermek için OnTick() yöntemimize bir kesme noktası ekleyelim. if (rsi.Result.LastValue < 30) kod satırına sağ tıklayın, Kesme Noktası'na tıklayın ve ardından Kesme Noktası Ekle'yi seçin.

Şimdi, cTrader'daki Örnek RSI cBot'a geri dönmeniz gerekir. Örnek ekle'ye tıklayın.

Yerel'i seçin ve ardından Örnek ekle düğmesine tıklayın.

cBot'u çalıştırmak için cBot'u Başlat simgesine tıklayın, ardından erişim hakları vermek için İzin Ver düğmesine tıklayın.

Hata ayıklayıcınız olarak Örnek RSI cBot - Microsoft Visual Studio'yu seçin ve Tamam düğmesine tıklayın.

OnTick() olayına ulaşıldığında, yürütme daha önce ayarladığımız kesme noktası tarafından durdurulur.

Son olarak, tüm Visual Studio hata ayıklama işlevlerini kullanabilirsiniz. Örneğin, İzleme penceresinde bir yöntemi inceleyebilirsiniz.

Ek olarak, aşağıdaki eylemleri gerçekleştirebilirsiniz:

Yürütmeyi bir sonraki satıra taşımak için üzerinden geçme işlevini kullanın.

Yürütme satırını başka bir ifade içine sürükleyin.

Bir yönteme adım atmak ve kodun yürütülmesini incelemek için içine girme işlevini kullanın.

Özet

Umarız makalemizdeki ve videomuzdaki bilgiler Visual Studio'da cBot'larda hata ayıklamanıza yardımcı olmuştur. Burada incelenen hata ayıklama ilkeleri ve işlemleri, diğer profesyonel IDE'ler için de geçerlidir.