Langkau tajuk talian

Susun dan bina algoritma dalam cTrader

Anda boleh menggunakan dua jenis penyusun apabila menyusun/membina algo cTrader:

  • Penyusun terbenam
  • Penyusun .NET SDK

Secara lalai, cTrader menggunakan penyusun terbenam tetapi kami mengesyorkan anda menukarnya kepada penyusun .NET SDK jika anda mempunyainya dipasang pada mesin tempatan anda.

Menyusun fail CSPROJ dan mendapatkan semula cBot

cTrader Algo membolehkan anda menjana dan menyimpan algoritma dengan menyusun fail .csproj. Gunakan kod berikut untuk melaksanakan operasi:

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

Jika anda menetapkan AccessRights kepada None, anda mesti menentukan laluan ke direktori dalam folder data algo. Konfigurasi ini bermaksud algo tidak dibenarkan menyusun fail di luar folder data mereka.

Jika anda menetapkan AccessRights kepada FullAccess, anda boleh menentukan laluan ke mana-mana direktori atau lokasi untuk kedua-dua fail .csproj dan algoritma yang dijana.

Jika anda bercadang untuk menggunakan laluan fail relatif, direktori asas mesti wujud di sepanjang laluan ini: ..Documents\Algo\Data\{Algo type}\{Algo name}.

Selepas anda memulakan cBot secara tempatan, algoritma akan disimpan dalam direktori yang ditentukan.

Untuk menukar kepada pengkompil yang berbeza, klik Tetapan di sudut kiri bawah UI untuk membuka tetingkap tetapan, kemudian beralih ke tab Algo.

Image title

Buka dropdown Pilih pengkompil dan pilih pengkompil yang sesuai daripada pilihan yang tersedia.

Pengkompil terbenam

Pengkompil terbenam dibina dalam platform cTrader Windows. Berbanding dengan pengkompil .NET SDK, ia mempunyai ciri-ciri yang terhad. Contohnya, pengkompil terbenam tidak menyokong sebarang pakej dan rangka kerja .NET pihak ketiga seperti WinForms dan WPF.

Pengkompil .NET SDK

Penggunaan pengkompil .NET SDK amat disyorkan untuk projek besar atau sambungan yang menggunakan perpustakaan .NET pihak ketiga. Pengkompil .NET SDK juga menyokong ciri-ciri tambahan seperti parameter pembinaan.

Menu Pilih pengkompil membolehkan pemilihan mana-mana pengkompil .NET SDK yang telah anda pasang pada mesin tempatan anda. Jika tiada versi .NET SDK yang dipasang, anda boleh sentiasa klik butang Pasang .NET SDK untuk dibawa ke halaman muat turun untuk keluaran stabil terkini.

Parameter

cTrader menawarkan parameter boleh suai yang anda boleh tentukan untuk menggunakan .NET CLI semasa membina cBot/indikator anda dalam IDE luaran. Ia ditakrifkan di bawah:

Nama Nilai lalai Penerangan
AlgoName $(MSBuildProjectName) Menentukan nama fail .algo.
Sifat ini tidak mempengaruhi AssemblyName.
AlgoBuild True Membolehkan pembinaan fail .algo.
AlgoPublish True Membolehkan penyalinan fail .algo ke direktori MyDocuments pengguna semasa selepas pembinaan berjaya.
IncludeSource False Memasukkan direktori sumber ke fail .algo sasaran.
IncludeSymbols False (Rilis)
True (Debug)
Memasukkan simbol debug ke fail .algo sasaran.

Mengendalikan ralat tambahan

Jika anda merujuk kepada pakej NuGet cTrader.Automate dalam projek perpustakaan kelas anda yang tidak mengandungi sebarang kelas algo cTrader di dalamnya (seperti Robot untuk cBot), anda akan menghadapi ralat "Assembly must contain algo type" apabila anda cuba membina projek tersebut. Ralat ini timbul kerana parameter AlgoBuild sama dengan True secara lalai.

Untuk menyelesaikan isu ini, hanya tetapkan AlgoBuild kepada False dalam fail projek .NET anda seperti yang dilihat dalam contoh di bawah:

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