Vai al contenuto

Compilare e creare algoritmi in cTrader

Puoi utilizzare due tipi di compilatori durante la compilazione/creazione di algoritmi cTrader:

  • Compilatore integrato
  • Compilatore .NET SDK

Per impostazione predefinita, cTrader utilizza il compilatore integrato, ma ti consigliamo di passare al compilatore .NET SDK se ne hai uno installato sul tuo computer.

Compilazione di file CSPROJ e recupero di cBot

cTrader Algo ti consente di generare e salvare algoritmi compilando file .csproj. Utilizza il seguente codice per eseguire l'operazione:

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

Se imposti AccessRights su None, devi specificare i percorsi delle directory all'interno della cartella dati dell'algoritmo. Questa configurazione significa che agli algoritmi non è consentito compilare file al di fuori delle proprie cartelle dati.

Se imposti AccessRights su FullAccess, puoi specificare il percorso di qualsiasi directory o posizione sia per il file .csproj che per l'algoritmo generato.

Se intendi utilizzare un percorso file relativo, la directory di base deve esistere lungo questo percorso: ..Documents\Algo\Data\{Tipo algoritmo}\{Nome algoritmo}.

Dopo aver avviato il cBot localmente, l'algoritmo verrà salvato nella directory specificata.

Cambiare compilatore

Per passare a un compilatore diverso, fai clic su Impostazioni nell'angolo in basso a sinistra dell'interfaccia per aprire la finestra delle impostazioni, quindi passa alla scheda Algo.

Image title

Apri il menu a discesa Seleziona compilatore e scegli un compilatore adatto tra le opzioni disponibili.

Compilatore integrato

Il compilatore integrato è incorporato nella piattaforma cTrader Windows. Rispetto al compilatore .NET SDK, ha funzionalità limitate. Ad esempio, il compilatore integrato non supporta pacchetti e framework .NET di terze parti come WinForms e WPF.

Compilatore .NET SDK

L'utilizzo del compilatore .NET SDK è fortemente consigliato per progetti di grandi dimensioni o estensioni che utilizzano librerie .NET di terze parti. Il compilatore .NET SDK supporta anche funzionalità aggiuntive come i parametri di compilazione.

Il menu Seleziona compilatore consente di scegliere qualsiasi compilatore .NET SDK installato sul tuo computer. Se non sono installate versioni di .NET SDK, puoi sempre fare clic sul pulsante Installa .NET SDK per accedere alla pagina di download dell'ultima versione stabile.

Parametri

cTrader offre parametri personalizzabili che puoi specificare quando utilizzi .NET CLI per creare i tuoi cBot/indicatori in IDE esterni. Sono definiti di seguito:

Nome Valore predefinito Descrizione
AlgoName $(MSBuildProjectName) Specifica il nome del file .algo.
Questa proprietà non influisce su AssemblyName.
AlgoBuild True Abilita la creazione di file .algo.
AlgoPublish True Abilita la copia dei file .algo nella directory MyDocuments dell'utente corrente dopo una compilazione riuscita.
IncludeSource False Include la directory di origine nel file .algo di destinazione.
IncludeSymbols False (Release)
True (Debug)
Include i simboli di debug nel file .algo di destinazione.

Gestione di un errore aggiuntivo

Se fai riferimento al pacchetto NuGet cTrader.Automate nel tuo progetto di libreria di classi che non contiene classi di algoritmi cTrader (come Robot per un cBot), riscontrerai l'errore "Assembly must contain algo type" quando provi a compilare il progetto. Questo errore si verifica poiché il parametro AlgoBuild è uguale a True per impostazione predefinita.

Per risolvere il problema, imposta semplicemente AlgoBuild su False nel file di progetto .NET come mostrato nell'esempio seguente:

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