コンテンツにスキップ

cBotを24時間稼働させる

ノートPCの電源が入っている間しか動かない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のペアを1つ記述するプレーンテキストファイルです。長いコマンドラインよりも編集や再利用が簡単です。

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

ステップ1でmetadataが表示したパラメータ名を使用します。

3. VPSでcBotを起動する

runはバッチモードと対話型モードの両方で実行できます。バッチモード(-qなし)では、-qを使わずに--ctidと--pwd-fileを直接指定でき、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が稼働中か確認する

2つ目のターミナルで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のcBotを停止します。ステップ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は取引と自動化のためのツールです。金融、投資、法律、税務に関する助言を提供するものではありません。注文の発注・変更を行うコマンドは実際の取引を成立させ、損失につながる可能性があります。各コマンドは実行前に確認し、まずデモ口座で試してください。また、認証情報を適切に保護してください。