Zum Inhalt

Algorithmen in cTrader kompilieren und erstellen

Sie können zwei Arten von Compilern verwenden, wenn Sie cTrader-Algos kompilieren/erstellen:

  • Eingebetteter Compiler
  • .NET SDK-Compiler

Standardmäßig verwendet cTrader den eingebetteten Compiler, aber wir empfehlen Ihnen, ihn auf den .NET SDK-Compiler zu ändern, wenn Sie einen auf Ihrem lokalen Rechner installiert haben.

CSPROJ-Dateien kompilieren und cBots abrufen

cTrader Algo ermöglicht es Ihnen, Algorithmen durch Kompilieren von .csproj-Dateien zu generieren und zu speichern. Verwenden Sie den folgenden Code, um die Operation auszuführen:

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

Wenn Sie AccessRights auf None setzen, müssen Sie Pfade zu Verzeichnissen innerhalb des Algo-Datenordners angeben. Diese Konfiguration bedeutet, dass Algos keine Dateien außerhalb ihrer Datenordner kompilieren dürfen.

Wenn Sie AccessRights auf FullAccess setzen, können Sie den Pfad zu einem beliebigen Verzeichnis oder Speicherort sowohl für die .csproj-Datei als auch für den generierten Algorithmus angeben.

Wenn Sie einen relativen Dateipfad verwenden möchten, muss das Basisverzeichnis entlang dieses Pfads vorhanden sein: ..Documents\Algo\Data\{Algo type}\{Algo name}.

Nachdem Sie den cBot lokal gestartet haben, wird der Algorithmus im angegebenen Verzeichnis gespeichert.

Compiler wechseln

Um zu einem anderen Compiler zu wechseln, klicken Sie auf Einstellungen in der unteren linken Ecke der Benutzeroberfläche, um das Einstellungsfenster zu öffnen, und wechseln Sie dann zur Registerkarte Algo.

Image title

Öffnen Sie das Dropdown-Menü Compiler auswählen und wählen Sie einen geeigneten Compiler aus den verfügbaren Optionen.

Eingebetteter Compiler

Der eingebettete Compiler ist in die cTrader Windows-Plattform integriert. Im Vergleich zum .NET SDK-Compiler verfügt er über eingeschränkte Funktionen. Der eingebettete Compiler unterstützt beispielsweise keine .NET-Pakete und Frameworks von Drittanbietern wie WinForms und WPF.

.NET SDK-Compiler

Die Verwendung des .NET SDK-Compilers wird für große Projekte oder Erweiterungen, die .NET-Bibliotheken von Drittanbietern verwenden, dringend empfohlen. Der .NET SDK-Compiler unterstützt auch zusätzliche Funktionen wie Build-Parameter.

Das Menü Compiler auswählen ermöglicht die Auswahl eines beliebigen .NET SDK-Compilers, den Sie auf Ihrem lokalen Rechner installiert haben. Wenn keine Versionen des .NET SDK installiert sind, können Sie jederzeit auf die Schaltfläche .NET SDK installieren klicken, um zur Download-Seite für die neueste stabile Version zu gelangen.

Parameter

cTrader bietet anpassbare Parameter, die Sie bei Verwendung der .NET CLI beim Erstellen Ihrer cBots/Indikatoren in externen IDEs angeben können. Sie sind nachfolgend definiert:

Name Standardwert Beschreibung
AlgoName $(MSBuildProjectName) Gibt den .algo-Dateinamen an.
Diese Eigenschaft wirkt sich nicht auf den AssemblyName aus.
AlgoBuild True Ermöglicht das Erstellen von .algo-Dateien.
AlgoPublish True Ermöglicht das Kopieren von .algo-Dateien in das MyDocuments-Verzeichnis des aktuellen Benutzers nach einem erfolgreichen Build.
IncludeSource False Fügt das Quellverzeichnis zur Ziel-.algo-Datei hinzu.
IncludeSymbols False (Release)
True (Debug)
Fügt die Debug-Symbole zur Ziel-.algo-Datei hinzu.

Umgang mit einem zusätzlichen Fehler

Wenn Sie das NuGet-Paket cTrader.Automate in Ihrem Klassenbibliotheksprojekt referenzieren, das keine cTrader-Algo-Klassen enthält (wie Robot für einen cBot), wird beim Versuch, das Projekt zu erstellen, der Fehler „Assembly must contain algo type" auftreten. Dieser Fehler tritt auf, da der Parameter AlgoBuild standardmäßig True entspricht.

Um das Problem zu beheben, setzen Sie AlgoBuild einfach auf False in Ihrer .NET-Projektdatei, wie im folgenden Beispiel gezeigt:

<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>