Saltar a contenido

Parámetros personalizables en plugins

Los parámetros personalizables son campos editables por el usuario cuyos valores y configuraciones se utilizan en las operaciones de los algoritmos. Estos parámetros permiten a los usuarios de un plugin configurar o controlar el comportamiento de ese plugin sin necesidad de acceder o modificar su código fuente.

Parámetros personalizables de plugins en un minuto

  • Los parámetros personalizables amplían significativamente lo que los plugins pueden lograr, transformando el código estático del plugin en una lógica dinámica y configurable.
  • Los desarrolladores de plugins utilizan parámetros personalizables en su código para que el usuario final pueda adaptar el comportamiento del algoritmo a sus preferencias.
  • Los parámetros personalizables en los plugins mejoran la accesibilidad y alinean las operaciones de los plugins con las capacidades establecidas de los cBots e indicadores.

Puede acceder y editar los parámetros personalizables de un plugin, si están disponibles, en la sección de plugins en la configuración.

Declaración de parámetros

Los parámetros se declaran utilizando el atributo [Parameter] colocado encima de una propiedad pública de C#. El motor del plugin lee estos atributos durante la inicialización y crea el panel de parámetros en consecuencia.

Nota

Los plugins de Python utilizan parámetros personalizables declarados en sus archivos .cs.

El código a continuación le indica a cTrader que muestre un campo de texto API Key bajo un grupo API & SYSTEM SETTINGS, y lo que un usuario ingrese se asignará a la propiedad ApiKey antes de que el plugin se inicie.

1
2
[Parameter("API Key", Group = "API & SYSTEM SETTINGS", DefaultValue = " ")]
public string ApiKey { get; set; }

Aquí hay un ejemplo de código que declara varios parámetros personalizables:

 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
26
27
28
29
30
31
// API & SYSTEM SETTINGS
[Parameter("API Key", Group = "API & SYSTEM SETTINGS", DefaultValue = " ")]
public string ApiKey { get; set; }

[Parameter("Max Retries", Group = "API & SYSTEM SETTINGS", DefaultValue = 3)]
public int MaxRetries { get; set; }

[Parameter("Enable Logging", Group = "API & SYSTEM SETTINGS", DefaultValue = false)]
public bool EnableLogging { get; set; }

// RISK MANAGEMENT

[Parameter("Stop Loss (pips)", Group = "RISK MANAGEMENT", DefaultValue = 40.0, MinValue = 1.0, Step = 1.0)]
public double StopLossPips { get; set; }

[Parameter("Enable Trailing Stop", Group = "RISK MANAGEMENT", DefaultValue = true)]
public bool EnableTrailingStop { get; set; }

[Parameter("Stop Loss Trigger Method", Group = "RISK MANAGEMENT", DefaultValue = StopTriggerMethod.Trade)]
public StopTriggerMethod StopLossTrigger { get; set; }

// TRADE SETTINGS
[Parameter("Trade Direction", Group = "TRADE SETTINGS", DefaultValue = TradeType.Buy)]
public TradeType TradeDirection { get; set; }

// ORDER SETTINGS
[Parameter("Pending Order Type", Group = "ORDER SETTINGS", DefaultValue = PendingOrderType.Limit)]
public PendingOrderType OrderType { get; set; }

[Parameter("Expiry Time (HH:mm:ss)", Group = "ORDER SETTINGS", DefaultValue = "00:30:00")]
public string ExpiryTime { get; set; }

Uso de parámetros

Una vez que se definen los parámetros, se pueden utilizar dentro de cualquier método en el código del plugin. En la mayoría de los casos, estos valores se leerán dentro de OnStart() o se utilizarán durante las operaciones.

En este ejemplo de código, varios parámetros personalizables previamente declarados se utilizan en declaraciones de impresión, que se ejecutan cuando se inicia el plugin:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
protected override void OnStart()
{
    Print($"API Key: {ApiKey}");
    Print($"Max Retries: {MaxRetries}");
    Print($"Enable Logging: {EnableLogging}");

    Print($"Stop Loss (pips): {StopLossPips}");
    Print($"Enable Trailing Stop: {EnableTrailingStop}");
    Print($"Stop Loss Trigger Method: {StopLossTrigger}");

    Print($"Trade Direction: {TradeDirection}");

    Print($"Pending Order Type: {OrderType}");
    Print($"Expiry Time: {ExpiryTime}");
}

Image title