Saltar a contenido

Compilar y construir algoritmos en cTrader

Puede utilizar dos tipos de compiladores al compilar/construir algoritmos de cTrader:

  • Compilador incorporado
  • Compilador .NET SDK

Por defecto, cTrader utiliza el compilador incorporado, pero le recomendamos que lo cambie al compilador .NET SDK si tiene uno instalado en su máquina local.

Compilar archivos CSPROJ y recuperar cBots

cTrader Algo le permite generar y guardar algoritmos compilando archivos .csproj. Utilice el siguiente código para ejecutar la operación:

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

Si establece AccessRights en None, debe especificar rutas a directorios dentro de la carpeta de datos del algoritmo. Esta configuración significa que los algoritmos no tienen permiso para compilar archivos fuera de sus carpetas de datos.

Si establece AccessRights en FullAccess, puede especificar la ruta a cualquier directorio o ubicación tanto para el archivo .csproj como para el algoritmo generado.

Si tiene la intención de utilizar una ruta de archivo relativa, el directorio base debe existir a lo largo de esta ruta: ..Documents\Algo\Data\{Algo type}\{Algo name}.

Después de iniciar el cBot localmente, el algoritmo se guardará en el directorio especificado.

Cambiar de compilador

Para cambiar a un compilador diferente, haga clic en Configuración en la esquina inferior izquierda de la interfaz de usuario para abrir la ventana de configuración, luego cambie a la pestaña Algo.

Image title

Abra el menú desplegable Seleccionar compilador y elija un compilador adecuado entre las opciones disponibles.

Compilador incorporado

El compilador incorporado está integrado en la plataforma cTrader Windows. En comparación con el compilador .NET SDK, tiene características limitadas. Por ejemplo, el compilador incorporado no admite ningún paquete o marco de trabajo .NET de terceros como WinForms y WPF.

Compilador .NET SDK

Se recomienda encarecidamente utilizar el compilador .NET SDK para proyectos grandes o extensiones que utilicen bibliotecas .NET de terceros. El compilador .NET SDK también admite características adicionales como parámetros de compilación.

El menú Seleccionar compilador permite elegir cualquier compilador .NET SDK que tenga instalado en su máquina local. Si no tiene instalada ninguna versión del SDK de .NET, siempre puede hacer clic en el botón Instalar SDK de .NET para ser dirigido a la página de descarga de la última versión estable.

Parámetros

cTrader ofrece parámetros personalizables que puede especificar al usar .NET CLI cuando construye sus cBots/indicadores en IDEs externos. Se definen a continuación:

Nombre Valor predeterminado Descripción
AlgoName $(MSBuildProjectName) Especifica el nombre del archivo .algo.
Esta propiedad no afecta al AssemblyName.
AlgoBuild True Habilita la construcción de archivos .algo.
AlgoPublish True Habilita la copia de archivos .algo al directorio MyDocuments del usuario actual después de una compilación exitosa.
IncludeSource False Incluye el directorio de origen en el archivo .algo de destino.
IncludeSymbols False (Release)
True (Debug)
Incluye los símbolos de depuración en el archivo .algo de destino.

Manejo de un error adicional

Si hace referencia al paquete NuGet cTrader.Automate en su proyecto de biblioteca de clases que no contiene ninguna clase de algoritmo de cTrader (como Robot para un cBot), encontrará el error "El ensamblado debe contener un tipo de algoritmo" cuando intente compilar el proyecto. Este error surge ya que el parámetro AlgoBuild es igual a True por defecto.

Para solucionar el problema, simplemente establezca AlgoBuild en False en su archivo de proyecto .NET como se ve en el ejemplo a continuación:

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