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.