Ana içeriğe geç

cTrader'da algoritmaları derle ve oluştur

cTrader algoritmalarını derlerken/oluştururken iki tür derleyici kullanabilirsiniz:

  • Gömülü derleyici
  • .NET SDK derleyicisi

Varsayılan olarak, cTrader gömülü derleyiciyi kullanır ancak yerel makinenizde kurulu bir .NET SDK derleyicisi varsa onu .NET SDK derleyicisine değiştirmenizi öneririz.

Compiling CSPROJ files and retrieving cBots

cTrader Algo, .csproj dosyalarını derleyerek algoritmalar oluşturmanıza ve kaydetmenize olanak tanır. İşlemi gerçekleştirmek için aşağıdaki kodu kullanın:

 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
using System;
using cAlgo.API;
using cAlgo.API.Collections;
using cAlgo.API.Indicators;
using cAlgo.API.Internals;

namespace cAlgo.Robots
{
    [Robot(AccessRights = AccessRights.FullAccess)]
    public class Compilation : Robot
    {

        protected override void OnStart()
        {
            CompilationOptions options = new CompilationOptions
            {
                IncludeSourceCode = true,
                OutputAlgoFilePath = @"C:\{preferred path}\NameOfAlgo.algo"
            };

            CompilationResult resultSync = Compiler.Compile(@"C:\{path to project}\NameOfCbot.csproj", options);
            Print(resultSync.Succeeded);
        }
    }
}

AccessRights değerini None olarak ayarlarsanız algo veri klasörünün içindeki dizinlere giden yolları belirtmeniz gerekir. Bu yapılandırma, algoların kendi veri klasörlerinin dışındaki dosyaları derlemesine izin verilmediği anlamına gelir.

AccessRights değerini FullAccess olarak ayarlarsanız hem .csproj dosyası hem de oluşturulan algoritma için herhangi bir dizine veya konuma giden yolu belirtebilirsiniz.

Göreceli bir dosya yolu kullanmayı düşünüyorsanız temel dizin şu yolda bulunmalıdır: ..Documents\Algo\Data\{Algo type}\{Algo name}.

cBot'u yerel olarak başlattıktan sonra algoritma belirtilen dizine kaydedilir.

Derleyicileri değiştirme

Farklı bir derleyiciye geçmek için ayarlar penceresini açmak üzere kullanıcı arayüzünün sol alt köşesindeki Ayarlar'a tıklayın, ardından Algo sekmesine geçin.

Image title

Derleyici seç açılır menüsünü açın ve mevcut seçeneklerden uygun bir derleyici seçin.

Gömülü derleyici

Gömülü derleyici, cTrader Windows platformunda yerleşiktir. .NET SDK derleyicisine kıyasla sınırlı özelliklere sahiptir. Örneğin, gömülü derleyici WinForms ve WPF gibi üçüncü taraf .NET paketlerini ve çerçevelerini desteklemez.

.NET SDK derleyicisi

Büyük projeler veya üçüncü taraf .NET kitaplıklarını kullanan uzantılar için .NET SDK derleyicisinin kullanılması şiddetle tavsiye edilir. .NET SDK derleyicisi ayrıca derleme parametreleri gibi ek özellikleri de destekler.

Derleyici seç menüsü, yerel makinenizde yüklü olan herhangi bir .NET SDK derleyicisini seçmenizi sağlar. Hiçbir .NET SDK sürümü yüklü değilse en son kararlı sürümün indirme sayfasına gitmek için her zaman .NET SDK'yı Yükle düğmesine tıklayabilirsiniz.

Parametreler

cTrader, cBots/göstergelerinizi harici IDE'lerde oluştururken .NET CLI kullanırken belirtebileceğiniz özelleştirilebilir parametreler sunar. Aşağıda tanımlanmışlardır:

Ad Varsayılan değer Açıklama
AlgoName $(MSBuildProjectName) .algo dosya adını belirtir.
Bu özellik AssemblyName değerini etkilemez.
AlgoBuild True .algo dosyalarının oluşturulmasını sağlar.
AlgoPublish True Başarılı bir derlemeden sonra .algo dosyalarının geçerli kullanıcının Belgelerim dizinine kopyalanmasını sağlar.
IncludeSource False Kaynak dizini hedef .algo dosyasına dahil eder.
IncludeSymbols False (Release)
True (Debug)
Hata ayıklama sembollerini hedef .algo dosyasına dahil eder.

Ek bir hatayı ele alma

Sınıf kitaplığı projenizde herhangi bir cTrader algo sınıfı (bir cBot için Robot gibi) içermeyen cTrader.Automate NuGet paketine başvurursanız projeyi derlemeye çalıştığınızda "Assembly must contain algo type" hatasıyla karşılaşırsınız. Bu hata, AlgoBuild parametresinin varsayılan olarak True değerine eşit olması nedeniyle ortaya çıkar.

Sorunu düzeltmek için aşağıdaki örnekte görüldüğü gibi .NET proje dosyanızda AlgoBuild değerini False olarak ayarlamanız yeterlidir:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AlgoBuild>false</AlgoBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="cTrader.Automate" Version="1.*-*" />
</ItemGroup>
</Project>