Lewati ke isi

Kompilasi dan pembuatan algoritma di cTrader

Anda dapat menggunakan dua jenis kompiler saat mengompilasi/membangun algo cTrader:

  • Kompiler tersemat
  • Kompiler .NET SDK

Secara default, cTrader menggunakan kompiler tersemat tetapi kami menyarankan Anda mengubahnya ke kompiler .NET SDK jika Anda memilikinya terinstal di mesin lokal Anda.

Mengompilasi berkas CSPROJ dan mengambil cBot

cTrader Algo memungkinkan Anda untuk menghasilkan dan menyimpan algoritma dengan mengompilasi berkas .csproj. Gunakan kode berikut untuk menjalankan 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 mengatur AccessRights ke None, Anda harus menentukan jalur ke direktori di dalam folder data algo. Konfigurasi ini berarti algo tidak diizinkan untuk mengompilasi berkas di luar folder datanya.

Jika Anda mengatur AccessRights ke FullAccess, Anda dapat menentukan jalur ke direktori atau lokasi mana pun untuk berkas .csproj dan algoritma yang dihasilkan.

Jika Anda bermaksud menggunakan jalur berkas relatif, direktori dasar harus ada di sepanjang jalur ini: ..Documents\Algo\Data\{Algo type}\{Algo name}.

Setelah Anda memulai cBot secara lokal, algoritma akan disimpan di direktori yang ditentukan.

Beralih kompiler

Untuk beralih ke kompiler yang berbeda, klik Pengaturan di sudut kiri bawah UI untuk membuka jendela pengaturan, lalu beralih ke tab Algo.

Image title

Buka dropdown Pilih kompiler dan pilih kompiler yang sesuai dari opsi yang tersedia.

Kompiler tersemat

Kompiler tersemat sudah terpasang di platform cTrader Windows. Dibandingkan dengan kompiler .NET SDK, fiturnya terbatas. Misalnya, kompiler tersemat tidak mendukung paket dan kerangka kerja .NET pihak ketiga seperti WinForms dan WPF.

Kompiler .NET SDK

Penggunaan kompiler .NET SDK sangat disarankan untuk proyek besar atau ekstensi yang menggunakan pustaka .NET pihak ketiga. Kompiler .NET SDK juga mendukung fitur tambahan seperti parameter pembuatan.

Menu Pilih kompiler memungkinkan memilih kompiler .NET SDK apa pun yang telah Anda instal di mesin lokal Anda. Jika tidak ada versi .NET SDK yang terinstal, Anda selalu dapat mengklik tombol Instal .NET SDK untuk dibawa ke halaman unduhan untuk rilis stabil terbaru.

Parameter

cTrader menawarkan parameter yang dapat disesuaikan yang dapat Anda tentukan saat menggunakan .NET CLI ketika membangun cBot/indikator Anda di IDE eksternal. Parameter tersebut didefinisikan di bawah ini:

Nama Nilai default Deskripsi
AlgoName $(MSBuildProjectName) Menentukan nama berkas .algo.
Properti ini tidak memengaruhi AssemblyName.
AlgoBuild True Mengaktifkan pembuatan berkas .algo.
AlgoPublish True Mengaktifkan penyalinan berkas .algo ke direktori MyDocuments pengguna saat ini setelah pembuatan berhasil.
IncludeSource False Menyertakan direktori sumber ke berkas .algo target.
IncludeSymbols False (Rilis)
True (Debug)
Menyertakan simbol debug ke berkas .algo target.

Menangani kesalahan tambahan

Jika Anda mereferensikan paket NuGet cTrader.Automate dalam proyek pustaka kelas Anda yang tidak berisi kelas algo cTrader apa pun di dalamnya (seperti Robot untuk cBot), Anda akan mengalami kesalahan "Assembly must contain algo type" ketika Anda mencoba membangun proyek tersebut. Kesalahan ini muncul karena parameter AlgoBuild sama dengan True secara default.

Untuk memperbaiki masalah ini, cukup atur AlgoBuild ke False dalam berkas proyek .NET Anda seperti yang terlihat dalam contoh di bawah ini:

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