Ir para o conteúdo

Parâmetros personalizáveis em plugins

Parâmetros personalizáveis são campos editáveis pelo utilizador cujos valores e configurações são usados nas operações dos algoritmos. Estes parâmetros permitem que os utilizadores de um plugin configurem ou controlem o comportamento desse plugin sem necessidade de aceder ou modificar o seu código-fonte.

Parâmetros personalizáveis de plugins em um minuto

  • Os parâmetros personalizáveis ampliam significativamente o que os plugins podem alcançar, transformando o código estático do plugin em lógica dinâmica e configurável.
  • Os desenvolvedores de plugins usam parâmetros personalizáveis no seu código para que o utilizador final possa adaptar o comportamento do algoritmo às suas preferências.
  • Os parâmetros personalizáveis em plugins melhoram a acessibilidade e alinham as operações do plugin com as capacidades estabelecidas dos cBots e indicadores.

Pode aceder e editar os parâmetros personalizáveis de um plugin, se disponíveis, na secção de plugins nas definições.

Declaração de parâmetros

Os parâmetros são declarados usando o atributo [Parameter] colocado acima de uma propriedade C# pública. O motor do plugin lê estes atributos na inicialização e cria o painel de parâmetros em conformidade.

Nota

Os plugins Python usam parâmetros personalizáveis declarados nos seus ficheiros .cs.

O código abaixo indica ao cTrader para exibir um campo de texto API Key sob um grupo API & SYSTEM SETTINGS, e o que o utilizador inserir será atribuído à propriedade ApiKey antes do início do plugin.

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

Aqui está um exemplo de código que declara vários parâmetros personalizáveis:

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

Utilização de parâmetros

Uma vez definidos os parâmetros, eles podem ser usados dentro de qualquer método no código do plugin. Na maioria dos casos, estes valores serão lidos dentro de OnStart() ou usados durante as operações.

Neste exemplo de código, vários parâmetros personalizáveis previamente declarados são usados em instruções de impressão, que são executadas quando o plugin inicia:

 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