Saltar a contenido

Ejecutar un cBot de forma ininterrumpida

Un cBot que solo funciona mientras el portátil está encendido no sirve de mucho si la sesión comienza a las 3 de la madrugada. Esta guía explica cómo consultar los parámetros de un cBot, iniciarlo en un servidor remoto, comprobar que sigue ejecutándose y detenerlo correctamente al terminar la sesión.

Consejo

Define tus credenciales una sola vez en variables de shell. Todos los comandos interactivos siguientes reutilizan esas variables para simplificar los pasos y facilitar el uso del script en distintos entornos.

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

1. Consultar los parámetros del cBot

metadata enumera los nombres y tipos de parámetros que admite el cBot para que sepas qué opciones pasar a run o qué claves incluir en un archivo .cbotset. metadata es un comando por lotes que acepta directamente --ctid y --pwd-file.

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

2. Guardar un conjunto de parámetros

Un archivo .cbotset es un archivo de texto sin formato con un par key=value por línea. Es más fácil de modificar y reutilizar que una línea de comandos larga.

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

Usa los nombres de los parámetros que muestra metadata en el paso 1.

3. Iniciar el cBot en un VPS

run es un comando que puede ejecutarse tanto en modo por lotes como en modo interactivo. En modo por lotes (sin -q), admite directamente --ctid y --pwd-file sin usar -q, y la CLI permanece en ejecución hasta que se detiene el cBot. Ejecuta el comando en el VPS con un supervisor de procesos (systemd, tmux, screen, la imagen oficial de Docker o --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 hace que el proceso de la CLI finalice cuando se detiene el cBot, lo que facilita la supervisión con systemd o Docker.

Para ejecutarlo durante periodos prolongados en un servidor, utiliza el mismo comando dentro de la imagen oficial de Docker de cTrader CLI. La imagen admite las mismas opciones y se cierra al recibir las mismas señales. Encontrarás la guía completa de Docker en el artículo cBots.

4. Comprobar que el cBot está en ejecución

Desde un segundo terminal, cbots muestra todas las instancias de cBot que se están ejecutando en la cuenta. La salida incluye el identificador de instancia que necesitarás para el siguiente paso.

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

5. Consultar los precios en tiempo real mientras funciona el cBot

Mientras el cBot está funcionando, price permite consultar el mercado desde otro terminal sin interferir en la instancia activa.

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

6. Detener el cBot al terminar la sesión

stop detiene la instancia indicada por su identificador. Obtén ese identificador de la salida de cbots en el paso 4.

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

Si has iniciado la CLI en la shell interactiva, añade all y yes para detener todas las instancias activas a la vez: stop all yes.

7. Reunir los pasos en un script de ejecución supervisada

Guarda la secuencia completa como start-cbot.sh y ejecútala desde systemd, una tarea cron o un pipeline de despliegue. El script guarda el conjunto de parámetros, inicia el cBot en segundo plano, espera a que se pueda verificar su ejecución y muestra el identificador de instancia para usarlo más adelante.

#!/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 detener la instancia después, ejecuta el comando stop correspondiente del paso 6. El identificador de instancia se mantiene estable entre consultas a cbots, así que guárdalo una vez y reutilízalo.

La documentación de referencia de cTrader CLI recoge todas las opciones disponibles para los comandos utilizados en este procedimiento.

Advertencia

cTrader CLI es una herramienta para el trading y la automatización. No ofrece asesoramiento financiero, de inversión, jurídico ni fiscal. Los comandos que envían o modifican órdenes pueden dar lugar a operaciones reales y provocar pérdidas. Revisa cada comando antes de ejecutarlo, pruébalo primero en una cuenta demo y protege tus credenciales.