Como criar um cBot para o cTrader em 5 Minutos
Neste artigo e no vídeo correspondente, vamos descrever uma forma rápida de criar um cBot no cTrader Algo. O cBot que vamos criar implementará uma estratégia de negociação simples chamada Three white soldiers e three black crows. Pode aprender mais sobre esta estratégia na nossa base de conhecimento.
Antes de seguir as nossas instruções, certifique-se de que descarregou e instalou a aplicação cTrader para Windows ou Mac a partir do site oficial. Inicie-a e navegue até à secção cTrader Algo. Pode encontrá-la no painel esquerdo. Clique no separador Algo, e a secção cTrader Algo deverá aparecer.
Adicionar um novo cBot
Clique no botão Novo no cTrader Algo para começar a criar um novo cBot. Introduza um nome, escolha uma linguagem de programação entre C# e Python e continue até que o editor de código se abra.
Adicionar as definições do cBot
Antes de começarmos a implementar uma estratégia de negociação, vamos analisar os parâmetros e métodos básicos dos cBots. Pode também consultar a nossa documentação para se familiarizar com o que fazem os diferentes parâmetros e métodos.
-
Parâmetros do cBot – permitem definir atributos configuráveis, como o volume negociado ou as distâncias de stop-loss/take-profit.
-
Métodos do cBot – definem como o seu cBot se comporta quando ocorrem eventos específicos. Existem quatro eventos principais que precisa de gerir ao desenvolver um cBot do cTrader, e cada um é gerido por um método correspondente fornecido pelo cTrader. Estes métodos são
OnStart(),OnTick(),OnBar(),OnStop()em C# eon_start(),on_tick(),on_bar_closed(),on_stop()em Python. Note que o métodoOnBar()em C# eon_bar_closed()em Python não está incluído no modelo de código predefinido.
A tabela seguinte define estes quatro métodos em detalhe.
| C# | Python | Objetivo |
|---|---|---|
OnStart() | on_start() | Acionado quando uma instância do cBot começa a operar. É utilizado para inicializar quaisquer variáveis que planeia utilizar no seu cBot, como indicadores, contadores, manipuladores de eventos ou temporizadores. |
OnTick() | on_tick() | Acionado em cada tick (atualização de preço) no gráfico de negociação no qual uma instância do cBot está a ser executada. Comummente utilizado para lógica de entrada ou saída rápida baseada em dados em tempo real. Dentro deste método, pode programar condições de entrada e saída personalizadas, bem como qualquer outra função auxiliar que precise de executar quando chega um novo tick. |
OnBar() | on_bar_closed() | Acionado no fecho de cada barra. Dentro deste método, pode programar condições de entrada e saída personalizadas ou quaisquer outras funções que precisem de ser executadas na formação de cada nova barra. |
OnStop() | on_stop() | Chamado quando o cBot para. Utilizado para realizar operações finais, como fechar posições, guardar o estado e mais |
Adicionar a lógica de negociação
Vamos agora adicionar o código para a nossa estratégia de negociação. O nosso cBot deve abrir uma posição de compra quando três barras verdes são formadas no gráfico e uma posição de venda quando há três barras vermelhas consecutivas.
Primeiro, precisamos de definir os parâmetros do nosso cBot. Estes parâmetros serão totalmente personalizáveis a partir da interface do cTrader. Vamos definir três parâmetros no nosso cBot.
- O volume de cada negociação.
- O stop loss em pips.
- O take profit em pips.
Cole o seguinte código no seu editor de código logo abaixo das chavetas após a declaração da classe (public class NewcBot : Robot)
1 2 3 4 5 6 7 8 | |
Nota
Os cBots em Python usam parâmetros personalizáveis declarados nos seus ficheiros .cs.
1 2 3 4 5 6 7 8 | |
Agora precisamos de implementar a lógica por trás da nossa estratégia de negociação. Cole o seguinte código no seu método OnBar() ou on_bar_closed(). Lembre-se que este método é chamado sempre que uma nova barra é formada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Agora vamos examinar o código mais de perto. O cTrader fornece acesso às barras históricas do gráfico, permitindo-nos verificar se as últimas três barras são todas verdes ou todas vermelhas, respetivamente. No método OnBar() do C# e on_bar_closed() do Python acima, primeiro verificamos se as últimas três barras eram todas verdes. Em seguida, avaliamos se estas barras eram todas vermelhas.
Se uma das duas condições for verdadeira, colocamos uma ordem de mercado usando o método ExecuteMarketOrder(). Este método aceita várias entradas (argumentos), sendo os mais importantes a direção da negociação, o símbolo, o volume negociado, o stop loss e o take profit.
No nosso caso, a direção da ordem (TradeType.Buy, TradeType.Sell) é determinada pelas condições da estratégia de negociação. O nome do símbolo é retirado diretamente do gráfico em que o nosso cBot está a ser executado SymbolName. O volume de negociação, o stop loss e o take profit (C#: Volume, StopLoss, TakeProfit e Python: VolumeInLots, StopLossInPips, TakeProfitInPips) são todos obtidos dos parâmetros do cBot que definimos.
Compilar e executar o cBot
Agora precisamos de verificar se o nosso cBot compila com sucesso. Por predefinição, a janela de resultados da compilação está localizada diretamente abaixo do editor de código. Se não a vir, clique no botão Disposição na barra superior da interface do cTrader e selecione Resultado da compilação. O atalho de teclado para esta ação é Ctrl + W
Depois, clique no botão Compilar localizado na barra superior da interface do cTrader. Alternativamente, clique com o botão direito do rato no seu cBot e clique em Compilar no menu que aparece, ou simplesmente prima Ctrl + B.

Se a compilação for bem-sucedida, verá uma mensagem verde na área Resultado da compilação na parte inferior do editor de código.

Alternativamente, se houver problemas com o seu código, verá uma mensagem vermelha e um resumo detalhado de todos os erros de compilação.

Depois do seu cBot ter sido compilado com sucesso, pode começar a usá-lo. Tudo o que precisa de fazer é adicionar uma instância num gráfico de negociação. Para o fazer, basta clicar no ícone + à direita do nome do seu cBot. Verá uma lista de todos os símbolos nos quais pode executar o seu cBot.

Vamos selecionar EURUSD. Depois de escolher um símbolo, uma nova instância do cBot será adicionada. Verá um novo item na lista de cBots com o nome do símbolo e o período de tempo que gostaria de negociar.
Também deverá ver os parâmetros que codificou no separador Parâmetros diretamente abaixo do gráfico de negociação.

Pode alterar estes parâmetros como quiser ou simplesmente deixá-los nos seus valores predefinidos.
Adicionalmente, verá um botão Reproduzir no topo do gráfico EURUSD.

Para iniciar a sua instância, prima este botão. Alternativamente, uma cópia deste botão também está localizada à direita da sua instância na lista de cBots à esquerda. Qualquer um destes botões iniciará o cBot.
Depois de clicar em qualquer um dos botões, deverá vê-lo ficar laranja, o que significa que uma instância do nosso cBot está agora em funcionamento. No separador Log, também deverá ver uma nova linha indicando que o cBot foi iniciado.
Teste de verificação do cBot
O nosso cBot pode demorar muito tempo a abrir uma posição num gráfico de negociação real. Vamos executar um teste de verificação rápido para o ver em ação com dados históricos. Para isso, abra o separador Teste de verificação.

Use o controlo deslizante do calendário perto do topo do ecrã para selecionar o intervalo de datas que pretende usar para o teste de verificação. Ative a opção Modo visual para acompanhar os resultados do teste de verificação à medida que ocorrem.
Vamos mover o controlo deslizante um mês para trás. Clique no botão Reproduzir para executar o cBot nos dados históricos escolhidos.
Depois, poderá ver novas posições a serem abertas e/ou fechadas no separador imediatamente abaixo do gráfico de negociação e à direita da secção Parâmetros. Especificamente, após detetar qualquer um dos dois padrões que codificámos, o cBot irá colocar uma ordem de compra ou de venda.
Executar um teste de verificação é uma forma útil de analisar se o seu cBot está a funcionar corretamente.
Resumo
Esperamos que este artigo tenha sido útil para demonstrar como pode criar um robô de negociação automatizado usando o cTrader.
