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 | |
AccessRightsをNoneに設定した場合、アルゴデータフォルダ内のディレクトリへのパスを指定する必要があります。 この設定では、アルゴはデータフォルダ外のファイルをコンパイルすることができません。
AccessRightsをFullAccessに設定した場合、.csprojファイルと生成されたアルゴリズムの両方について、任意のディレクトリまたは場所へのパスを指定できます。
相対ファイルパスを使用する場合、ベースディレクトリは次のパスに沿って存在する必要があります:..Documents\Algo\Data\{Algo type}\{Algo name}。
cBotをローカルで起動すると、指定したディレクトリにアルゴリズムが保存されます。
コンパイラの切り替え
別のコンパイラに変更するには、UIの左下にある設定をクリックして設定ウィンドウを開き、Algoタブに切り替えます。

コンパイラを選択ドロップダウンを開き、利用可能なオプションから適切なコンパイラを選択します。
埋め込みコンパイラ
埋め込みコンパイラは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プロジェクトファイルでAlgoBuildをFalseに設定するだけです:
<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>