Круглосуточная работа сиБота¶
От сиБота, который работает только при включенном ноутбуке, мало пользы, если торговая сессия начинается в три часа ночи. В этом руководстве показано, как узнать параметры сиБота, запустить его на удаленном сервере, проверить работу и корректно остановить после завершения сессии.
Совет
Один раз задайте учетные данные в переменных оболочки. Все приведенные ниже интерактивные команды используют эти переменные. Это упрощает шаги и позволяет переносить скрипт между средами.
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 — инструмент для торговли и автоматизации. Он не предоставляет финансовых, инвестиционных, юридических или налоговых консультаций. Команды размещения и изменения ордеров могут приводить к реальным сделкам и финансовым потерям. Проверяйте каждую команду перед выполнением, сначала тестируйте ее на демосчете и защищайте свои учетные данные.