Перейти к содержанию

Круглосуточная работа сиБота

От сиБота, который работает только при включенном ноутбуке, мало пользы, если торговая сессия начинается в три часа ночи. В этом руководстве показано, как узнать параметры сиБота, запустить его на удаленном сервере, проверить работу и корректно остановить после завершения сессии.

Совет

Один раз задайте учетные данные в переменных оболочки. Все приведенные ниже интерактивные команды используют эти переменные. Это упрощает шаги и позволяет переносить скрипт между средами.

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

1. Получение параметров сиБота

metadata выводит имена и типы параметров, поддерживаемых сиБотом. Так вы узнаете, какие параметры передавать команде run или какие ключи указывать в файле .cbotset. metadata — команда пакетного режима, которая напрямую принимает --ctid и --pwd-file.

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

2. Сохранение набора параметров

Файл .cbotset — обычный текстовый файл, в каждой строке которого указана одна пара key=value. Его удобнее редактировать и использовать повторно, чем длинную командную строку.

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

Используйте имена параметров, выведенные командой metadata на шаге 1.

3. Запуск сиБота на VPS

Команда run работает как в пакетном, так и в интерактивном режиме. В пакетном режиме (без -q) она принимает --ctid и --pwd-file напрямую, без -q, а CLI остается активным до остановки сиБота. Запускайте команду на VPS под управлением средства контроля процессов (systemd, tmux, screen, официального образа Docker или --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 завершает процесс CLI при остановке сиБота. Это упрощает контроль со стороны systemd или Docker.

Для длительной работы на сервере запускайте ту же команду внутри официального Docker-образа cTrader CLI. Образ поддерживает те же параметры и завершает работу при получении тех же сигналов. Полная инструкция по Docker приведена в статье cBots.

4. Проверка работы сиБота

Во втором терминале команда cbots выводит все экземпляры сиБотов, запущенные на счете. В результате будет указан идентификатор экземпляра, который понадобится на следующем шаге.

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

5. Проверка текущих цен во время работы сиБота

Пока сиБот работает, price позволяет проверить рыночные цены из другого терминала, не прерывая работу запущенного экземпляра.

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

6. Остановка сиБота после завершения сессии

stop останавливает экземпляр по его идентификатору. Получите идентификатор из вывода cbots на шаге 4.

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

Если CLI запущен в интерактивной оболочке, добавьте all и yes, чтобы остановить все работающие экземпляры одновременно: stop all yes.

7. Объединение шагов в скрипт управляемого запуска

Сохраните последовательность как start-cbot.sh и запускайте ее через systemd, задание cron или конвейер развертывания. Скрипт сохраняет набор параметров, запускает сиБота в фоне, ожидает подтверждения работы и выводит идентификатор экземпляра для дальнейшего использования.

#!/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

Чтобы позже остановить экземпляр, выполните соответствующий вызов stop из шага 6. Идентификатор экземпляра остается неизменным между запросами cbots, поэтому сохраните его один раз и используйте повторно.

В справочнике команд cTrader CLI перечислены все доступные параметры команд, используемых в этой процедуре.

Предупреждение

cTrader CLI — инструмент для торговли и автоматизации. Он не предоставляет финансовых, инвестиционных, юридических или налоговых консультаций. Команды размещения и изменения ордеров могут приводить к реальным сделкам и финансовым потерям. Проверяйте каждую команду перед выполнением, сначала тестируйте ее на демосчете и защищайте свои учетные данные.