在 cTrader 中编译和构建算法
编译/构建 cTrader 算法时,您可以使用两种类型的编译器:
- 嵌入式编译器
- .NET SDK 编译器
默认情况下,cTrader 使用嵌入式编译器,但如果您的本地机器上已安装 .NET SDK,我们建议您将其更改为 .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 后,算法将保存在指定目录中。
切换编译器
要更改为不同的编译器,请单击用户界面左下角的设置以打开设置窗口,然后切换到算法选项卡。

打开选择编译器下拉菜单,从可用选项中选择合适的编译器。
嵌入式编译器
嵌入式编译器内置于 cTrader Windows 平台。 与 .NET SDK 编译器相比,它的功能有限。 例如,嵌入式编译器不支持任何第三方 .NET 包和框架,如 WinForms 和 WPF。
.NET SDK 编译器
对于大型项目或使用第三方 .NET 库的扩展,强烈建议使用 .NET SDK 编译器。 .NET SDK 编译器还支持其他功能,如构建参数。
选择编译器菜单允许选择您在本地机器上安装的任何 .NET SDK 编译器。 如果未安装任何版本的 .NET SDK,您随时可以单击安装 .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 包,当您尝试构建项目时,将遇到"程序集必须包含算法类型"错误。 这个错误是因为 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>