Ir para o conteúdo

Como otimizar um cBot

No cTrader, é possível criar cBots com qualquer número de parâmetros personalizáveis que afetam os seus comportamentos, como níveis de proteção de ordens ou volumes de ordens padrão. Isto levanta a questão de como exatamente os traders podem determinar os valores ideais destes parâmetros. Felizmente, o cTrader oferece uma ferramenta integrada que pode lidar com a otimização, poupando tempo valioso aos traders.

Neste guia do utilizador, focamo-nos em como os utilizadores podem otimizar os seus cBots e demonstramos por que a otimização de cBot é essencial para qualquer desenvolvedor de Algo.

Como funciona a otimização de cBot

Pense na otimização como uma série de testes de verificação. Cada passagem de teste de verificação ocorre nos mesmos dados, mas usa valores diferentes para quaisquer parâmetros codificados num cBot.

Considere um cBot que pode reagir a casos em que as médias móveis de período rápido e lento se cruzam (a média móvel rápida cruzando a média móvel lenta). Queremos poder personalizar quantos períodos rápidos e lentos o cBot recebe dados.

O nosso cBot, portanto, deve ter os seguintes dois parâmetros.

1
2
3
4
5
[Parameter("Slow Periods", Group = "Moving Average", DefaultValue = 10)]
public int SlowPeriods { get; set; }

[Parameter("Fast Periods", Group = "Moving Average", DefaultValue = 5)]
public int FastPeriods { get; set; }

Para definir os valores ideais dos parâmetros, precisaríamos de testar extensivamente como o cBot funciona em várias condições de mercado e quando recebe diferentes valores para os dois parâmetros acima. Se fôssemos realizar estes testes manualmente, eles levariam muito tempo sem fornecer um conjunto de resultados fácil de interpretar.

Felizmente, podemos fazer com que o cTrader execute estes testes automaticamente e, na sua conclusão, nos forneça certos valores de parâmetros que permitem que o cBot alcance os melhores resultados possíveis. Este processo é conhecido como otimização de cBot.

Aceder à otimização de cBot

Para aceder à otimização de cBot, execute as seguintes ações.

Primeiro, selecione uma instância do cBot que gostaria de otimizar. Se necessário, crie uma nova instância clicando no ícone mais e selecionando um símbolo, ou selecionando Adicionar instância no menu de contexto que se abre ao clicar no ícone Mais.

Depois, mude para o separador Otimização localizado imediatamente à direita do separador Testes de verificação. O ecrã central neste separador deve ter o seguinte aspeto.

Configurar definições de otimização e parâmetros de cBot

Como a otimização é uma série de testes de verificação, pode configurar as mesmas definições que configuraria para testes de verificação regulares. Para fazer isso, clique no ícone engrenagem e altere os valores no menu recém-aberto.

Para selecionar os parâmetros exatos que o cTrader precisa de otimizar, clique no botão Parâmetros imediatamente à direita do ícone engrenagem.

Nesta subsecção, ative ou desative as bandeiras à esquerda de cada nome de parâmetro para incluir/excluir estes parâmetros do processo de otimização. Note que o parâmetro Timeframe está presente para todos os cBots, independentemente da sua configuração.

Queremos que a otimização determine os valores ideais de períodos lentos e rápidos que o nosso cBot considerará no início. No entanto, ainda não queremos experimentar outros tipos de médias móveis.

Definir os critérios e algoritmo de otimização

É possível determinar quais critérios exatos o cTrader vai usar para selecionar os valores ideais dos parâmetros entre as passagens de teste de verificação que irá conduzir.

Para fazer isso, clique no botão Critérios representado pelo ícone de linha ascendente. Verá a seguinte secção.

As definições para cada critério incluem dois menus. No menu à esquerda, selecione se o critério deve ser minimizado ou maximizado. No menu à direita, escolha o critério que deve ser minimizado ou maximizado a partir de um conjunto de opções predefinidas. Novos critérios podem ser adicionados clicando em Adicionar critério.

Na captura de ecrã acima, queremos que o cTrader maximize o nosso lucro líquido e o número de negociações com ganhos que o nosso cBot faz. Ao mesmo tempo, queremos minimizar a percentagem máxima de decréscimo do capital.

Por uma questão de brevidade, este artigo não cobre critérios de otimização personalizados e o método GetFitness(). Para saber mais sobre eles, consulte a nossa documentação técnica.

Para escolher um algoritmo de otimização específico, clique no botão Algoritmo à direita do botão Critérios. A seguinte subsecção deve abrir.

O algoritmo de pesquisa exaustiva é altamente preciso, mas intensivo em recursos. Quando a opção Grelha é selecionada, o cTrader cria uma grelha de todos os valores possíveis dos parâmetros e executa todos os testes de verificação necessários para testá-los. Embora este processo seja minucioso, pode demorar algum tempo.

Felizmente, o cTrader inclui a opção Algoritmo genético. Este algoritmo emula a seleção natural considerando cada passagem como um indivíduo, os parâmetros do cBot como genes e o grau de adequação aos critérios de otimização como adaptabilidade. O algoritmo genético para assim que deteta que quaisquer alterações a certos valores de parâmetros produziriam retornos decrescentes para a eficácia do cBot.

Como o algoritmo genético é menos intensivo em recursos do que a pesquisa exaustiva, mas ainda produz resultados precisos, recomendamos selecionar este método de otimização.

Alocar recursos e realizar a otimização do cBot

Para realizar a otimização do cBot, selecione o intervalo de dados históricos em que o cTrader irá basear os testes de verificação. Para tal, utilize o controlo deslizante do calendário no topo do separador Otimização ou os menus à esquerda e à direita do mesmo.

Note que a otimização é um processo que consome muitos recursos e pode demorar algum tempo a ser concluído. Como queremos receber os resultados relativamente depressa, iremos escolher um ano como período de otimização.

O cTrader também permite determinar a percentagem exata dos recursos da CPU alocados ao processo de otimização. Para personalizar esta definição, clique no botão Recursos à esquerda do menu de calendário mais à esquerda.

Na secção que aparece, arraste o controlo deslizante para aumentar ou diminuir o consumo da CPU.

Depois de terminar a alocação de recursos, deverá estar pronto para prosseguir com a otimização. Para tal, clique no botão Reproduzir à direita do menu de calendário mais à direita. Depois de o cTrader carregar os dados históricos, verá as passagens de otimização a serem adicionadas ao ecrã central em tempo real.

No topo da grelha, verá também o número atual de passagens, o tempo decorrido e o tempo de otimização restante.

Quaisquer passagens concluídas serão assinaladas com uma marca de verificação verde. Todas as passagens durante as quais o seu cBot atingiu o stop out serão, em vez disso, assinaladas com uma marca de verificação cinzenta.

Nota

Pode guardar e carregar resultados de otimização, o que lhe permite transferi-los entre diferentes dispositivos.

Interpretar e aplicar os resultados da otimização

Na grelha central, o cTrader irá apresentar várias métricas para cada passagem de teste de verificação, incluindo o número de negociações vencedoras que o seu cBot realizou e a percentagem máxima de redução do capital.

De particular importância é a coluna Fitness que apresenta uma pontuação de adequação para cada passagem. Considere uma pontuação de adequação como uma métrica que avalia o grau em que uma passagem maximizou/minimizou os seus critérios de otimização escolhidos. Pontuações de adequação mais elevadas são indicativas de graus mais elevados de adequação a estes critérios.

Para selecionar rapidamente a passagem com a pontuação de adequação mais elevada, basta ativar a opção Selecionar automaticamente a melhor passagem localizada logo acima da grelha central. Note que pode ativar a opção Selecionar automaticamente a melhor passagem à medida que a otimização ocorre, e o cTrader irá procurar dinamicamente os melhores valores possíveis para os parâmetros.

Como pode ver na coluna Fitness, a passagem número 33 forneceu a melhor pontuação de adequação possível em comparação com todas as outras passagens.

Podemos clicar com segurança em Aplicar junto à passagem 33, e os valores dos parâmetros utilizados durante esta passagem serão imediatamente aplicados à nossa instância do cBot.

Os valores predefinidos para os parâmetros Períodos lentos e Períodos rápidos eram iguais a 10 e 5, respetivamente.

Tal como acontece com os testes de verificação, o visor Observação da Negociação irá fornecer um gráfico de capital e estatísticas detalhadas de negociação que resumem as ações realizadas pelo nosso cBot durante uma determinada passagem. Note que o gráfico de capital é apresentado apenas para as 20 melhores passagens da grelha central.

As linhas de Saldo e Capital em constante aumento apenas reforçam o facto de que a passagem 33 forneceu os valores dos parâmetros necessários para que o nosso cBot funcionasse eficazmente.

Resumo

Em resumo, a otimização do cBot é uma ferramenta poderosa para garantir que os seus consultores de negociação automatizados estão configurados corretamente. Recomendamos vivamente a realização de várias rondas de otimização com diferentes critérios para ter uma ideia dos valores dos parâmetros que seriam melhores para quaisquer cBots que tenha desenvolvido ou adquirido a outros programadores.