Ir para o conteúdo

Executar um cBot continuamente

Um cBot que só funciona enquanto o portátil está ligado não serve de muito se a sessão começar às 3 da manhã. Este guia explica como consultar os parâmetros de um cBot, iniciá-lo num servidor remoto, verificar se está em execução e pará-lo corretamente no final da sessão.

Dica

Defina as suas credenciais uma única vez em variáveis de shell. Todos os comandos interativos seguintes reutilizam estas variáveis, tornando os passos mais simples e permitindo utilizar o script em diferentes ambientes.

export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd

1. Consultar os parâmetros do cBot

metadata apresenta os nomes e os tipos dos parâmetros aceites pelo cBot, para que saiba quais as opções a passar a run ou as chaves a incluir num ficheiro .cbotset. metadata é um comando em modo batch que aceita diretamente --ctid e --pwd-file.

ctrader-cli metadata --ctid=$CTID --pwd-file=$PWD_FILE $ALGO

2. Guardar um conjunto de parâmetros

Um ficheiro .cbotset é um ficheiro de texto simples com um par key=value por linha. É mais fácil de editar e reutilizar do que uma linha de comandos longa.

cat > mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF

Utilize os nomes dos parâmetros apresentados por metadata no passo 1.

3. Iniciar o cBot num VPS

run é um comando que pode ser utilizado tanto em modo batch como em modo interativo. Em modo batch (sem -q), aceita diretamente --ctid e --pwd-file, sem -q, e a CLI mantém-se em execução até o cBot parar. Execute-o no VPS sob a supervisão de um gestor de processos (systemd, tmux, screen, a imagem Docker oficial ou --exit-on-stop).

ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
    --account=$ACC $ALGO mycbot.cbotset --symbol=EURUSD --period=h1 --exit-on-stop

--exit-on-stop faz com que o processo da CLI termine quando o cBot parar, facilitando a supervisão com systemd ou Docker.

Para manter o cBot em execução prolongada num servidor, execute o mesmo comando na imagem Docker oficial do cTrader CLI. A imagem aceita as mesmas opções e termina em resposta aos mesmos sinais. O procedimento completo de Docker está disponível no artigo cBots.

4. Verificar se o cBot está em execução

Num segundo terminal, cbots apresenta todas as instâncias de cBot que estão atualmente em execução na conta. A saída inclui o identificador da instância necessário para o passo seguinte.

ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q

5. Consultar os preços em tempo real enquanto o cBot está em execução

Enquanto o cBot está a funcionar, price permite consultar o mercado noutro terminal sem interferir com a instância em execução.

ctrader-cli price --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --symbol=EURUSD

6. Parar o cBot no final da sessão

stop termina a instância através do respetivo identificador. Obtenha o identificador a partir da saída de cbots no passo 4.

ctrader-cli stop --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
    --instance=13579246

Se tiver iniciado a CLI na shell interativa, acrescente all e yes para parar todas as instâncias em execução de uma só vez: stop all yes.

7. Reunir os passos num script de execução supervisionada

Guarde a sequência completa como start-cbot.sh e execute-a através de systemd, de uma tarefa cron ou de um pipeline de implementação. O script grava o conjunto de parâmetros, inicia o cBot em segundo plano, aguarda a verificação e apresenta o identificador da instância para utilização posterior.

#!/usr/bin/env bash
set -euo pipefail

CTID=letstrade
ACC=7654321
PWD_FILE=$HOME/.ctrader/pwd
ALGO=/opt/mycbot.algo
SYMBOL=EURUSD
PERIOD=h1

cat > /opt/mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF

nohup ctrader-cli run --ctid=$CTID --pwd-file=$PWD_FILE \
    --account=$ACC $ALGO /opt/mycbot.cbotset --symbol=$SYMBOL --period=$PERIOD --exit-on-stop \
    > /var/log/mycbot.log 2>&1 &

sleep 10
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q

Para parar a instância mais tarde, execute a chamada stop correspondente ao passo 6. O identificador da instância mantém-se igual entre consultas a cbots. Guarde-o uma vez e reutilize-o.

A documentação de referência do cTrader CLI apresenta todas as opções disponíveis para os comandos utilizados neste procedimento.

Aviso

O cTrader CLI é uma ferramenta de negociação e automatização. Não fornece aconselhamento financeiro, de investimento, jurídico ou fiscal. Os comandos que colocam ou alteram ordens podem desencadear negociações reais e causar perdas. Verifique cada comando antes de o executar, teste-o primeiro numa conta demo e proteja as suas credenciais.