cTrader에서 알고리즘 컴파일 및 빌드
cTrader 알고리즘을 컴파일/빌드할 때 두 가지 유형의 컴파일러를 사용할 수 있습니다:
- 임베디드 컴파일러
- .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 버전이 설치되어 있지 않은 경우, .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>