コンテンツにスキップ

cTraderでアルゴリズムをコンパイルおよびビルドする

cTraderアルゴの作成時に使用できるコンパイラには2種類あります:

  • 埋め込みコンパイラ
  • .NET SDKコンパイラ

デフォルトでは、cTraderは埋め込みコンパイラを使用しますが、ローカルマシンに.NET SDKコンパイラがインストールされている場合は、そちらに切り替えることをお勧めします。

CSPROJファイルのコンパイルとcBotの取得

cTrader Algoでは、.csprojファイルをコンパイルしてアルゴリズムを生成し、保存することができます。 以下のコードを使用して操作を実行します:

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

AccessRightsNoneに設定した場合、アルゴデータフォルダ内のディレクトリへのパスを指定する必要があります。 この設定では、アルゴはデータフォルダ外のファイルをコンパイルすることができません。

AccessRightsFullAccessに設定した場合、.csprojファイルと生成されたアルゴリズムの両方について、任意のディレクトリまたは場所へのパスを指定できます。

相対ファイルパスを使用する場合、ベースディレクトリは次のパスに沿って存在する必要があります:..Documents\Algo\Data\{Algo type}\{Algo name}

cBotをローカルで起動すると、指定したディレクトリにアルゴリズムが保存されます。

コンパイラの切り替え

別のコンパイラに変更するには、UIの左下にある設定をクリックして設定ウィンドウを開き、Algoタブに切り替えます。

Image title

コンパイラを選択ドロップダウンを開き、利用可能なオプションから適切なコンパイラを選択します。

埋め込みコンパイラ

埋め込みコンパイラはcTrader Windowsプラットフォームに組み込まれています。 .NET SDKコンパイラと比較すると、機能が限られています。 例えば、埋め込みコンパイラはWinFormsやWPFなどのサードパーティの.NETパッケージやフレームワークをサポートしていません。

.NET SDKコンパイラ

大規模なプロジェクトやサードパーティの.NETライブラリを使用する拡張機能には、.NET SDKコンパイラの使用を強くお勧めします。 .NET SDKコンパイラは、ビルドパラメータなどの追加機能もサポートしています。

コンパイラを選択メニューでは、ローカルマシンにインストールされている.NET SDKコンパイラを選択できます。 .NET SDKのバージョンがインストールされていない場合は、Install .NET SDKボタンをクリックすると、最新の安定版リリースのダウンロードページに移動します。

パラメーター

cTraderでは、外部IDEでcBot/インジケーターをビルドする際に.NET CLIで指定できるカスタマイズ可能なパラメータを提供しています。 以下に定義されています:

名前 デフォルト値 説明
AlgoName $(MSBuildProjectName) .algoファイル名を指定します。
このプロパティはAssemblyNameに影響しません。
AlgoBuild True .algoファイルのビルドを有効にします。
AlgoPublish True ビルドが成功した後、.algoファイルを現在のユーザーのMyDocumentsディレクトリにコピーすることを有効にします。
IncludeSource False ソースディレクトリをターゲットの.algoファイルに含めます。
IncludeSymbols False (リリース)
True (デバッグ)
デバッグシンボルをターゲットの.algoファイルに含めます。

追加のエラーの処理

cTraderアルゴクラス(cBotの場合はRobotなど)を含まないクラスライブラリプロジェクトでcTrader.Automate NuGetパッケージを参照する場合、プロジェクトのビルド時に「Assembly must contain algo type」エラーが発生します。 このエラーは、AlgoBuildパラメータがデフォルトでTrueに設定されているために発生します。

この問題を解決するには、以下の例のように.NETプロジェクトファイルでAlgoBuildFalseに設定するだけです:

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