cBot을 24시간 내내 실행하기¶
cBot이 노트북이 켜져 있을 때만 작동한다면 거래 세션이 새벽 3시에 시작될 때는 별 도움이 되지 않습니다. 이 가이드에서는 cBot의 매개변수를 확인하고 원격 서버에서 실행한 뒤, 실행 여부를 점검하고 세션이 끝나면 정상적으로 중지하는 방법을 설명합니다.
팁
로그인 정보를 셸 변수에 한 번만 설정합니다. 아래의 모든 대화형 명령어는 이 변수를 재사용하므로 단계가 간결해지고 여러 환경에서 스크립트를 활용하기 쉽습니다.
export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd
1. cBot 매개변수 확인하기 ¶
metadata는 cBot에서 지원하는 매개변수의 이름과 유형을 나열합니다. 따라서 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
1단계에서 metadata가 표시한 매개변수 이름을 사용하세요.
3. VPS에서 cBot 시작하기 ¶
run은 일괄 실행 모드와 대화형 모드 모두에서 사용할 수 있습니다. 일괄 실행 모드(-q 없이)에서는 --ctid와 --pwd-file을 -q 없이 직접 전달할 수 있으며, cBot이 종료될 때까지 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은 cBot이 중지되면 CLI 프로세스도 종료되도록 합니다. 따라서 systemd 또는 Docker로 상태를 관리하기 편리합니다.
서버에서 장기간 실행하려면 공식 cTrader CLI Docker 이미지에서 같은 명령어를 실행하세요. 해당 이미지는 동일한 옵션을 지원하며 동일한 신호를 받으면 종료됩니다. Docker 사용법 전체는 cBots 문서에서 확인할 수 있습니다.
4. cBot 실행 상태 확인하기 ¶
두 번째 터미널에서 cbots를 실행하면 계정에서 현재 실행 중인 모든 cBot 인스턴스를 확인할 수 있습니다. 출력에는 다음 단계에서 필요한 인스턴스 ID가 포함됩니다.
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q
5. cBot 실행 중 실시간 가격 조회하기 ¶
cBot이 실행 중일 때도 별도의 터미널에서 price로 시장 가격을 조회할 수 있으며, 실행 중인 인스턴스에는 영향을 주지 않습니다.
ctrader-cli price --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --symbol=EURUSD
6. 세션 종료 시 cBot 중지하기 ¶
stop은 지정한 ID의 인스턴스를 중지합니다. 4단계의 cbots 출력에서 해당 ID를 가져오세요.
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 작업 또는 배포 파이프라인을 통해 실행하세요. 스크립트는 매개변수 세트를 파일에 기록하고 cBot을 백그라운드에서 실행한 후, 실행 상태 확인을 기다렸다가 나중에 사용할 인스턴스 ID를 출력합니다.
#!/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
나중에 인스턴스를 중지하려면 6단계의 해당 stop 호출을 실행하세요. 인스턴스 ID는 cbots를 여러 번 조회해도 바뀌지 않으므로 한 번 저장한 뒤 계속 사용할 수 있습니다.
cTrader CLI 명령어 참조 문서에서 이 절차에 사용된 명령어의 모든 옵션을 확인할 수 있습니다.
경고
cTrader CLI는 거래 및 자동화를 위한 도구입니다. 재무, 투자, 법률 또는 세무 자문을 제공하지 않습니다. 주문을 제출하거나 수정하는 명령어를 실행하면 실제 거래가 체결되어 손실이 발생할 수 있습니다. 각 명령어를 실행하기 전에 확인하고, 먼저 데모 계정에서 테스트하며, 로그인 정보를 안전하게 보호하세요.