Chạy cBot liên tục¶
Một cBot chỉ hoạt động khi máy tính xách tay còn bật sẽ không hữu ích lắm nếu phiên giao dịch bắt đầu lúc 3 giờ sáng. Hướng dẫn này giải thích cách xem các tham số của cBot, khởi chạy cBot trên máy chủ từ xa, kiểm tra xem cBot có tiếp tục hoạt động và dừng đúng cách khi phiên kết thúc.
Mẹo
Thiết lập thông tin đăng nhập trong các biến shell một lần duy nhất. Tất cả các lệnh tương tác bên dưới đều dùng lại các biến này, giúp các bước ngắn gọn hơn và tập lệnh dễ sử dụng trong nhiều môi trường.
export CTID=letstrade
export ACC=7654321
export PWD_FILE=$HOME/.ctrader/pwd
1. Xem các tham số của cBot ¶
metadata liệt kê tên và kiểu dữ liệu của những tham số mà cBot hỗ trợ, giúp bạn biết tùy chọn nào cần truyền cho run hoặc khóa nào cần đưa vào tệp .cbotset. metadata là lệnh ở chế độ chạy theo lô, chấp nhận trực tiếp --ctid và --pwd-file.
ctrader-cli metadata --ctid=$CTID --pwd-file=$PWD_FILE $ALGO
2. Lưu bộ tham số ¶
Tệp .cbotset là tệp văn bản thuần, mỗi dòng chứa một cặp key=value. Việc chỉnh sửa và tái sử dụng tệp này dễ hơn so với một dòng lệnh dài.
cat > mycbot.cbotset <<'EOF'
SlowPeriods=20
StopLossPips=30
TakeProfitPips=60
EOF
Sử dụng đúng tên tham số mà metadata hiển thị ở bước 1.
3. Khởi chạy cBot trên VPS ¶
run có thể hoạt động ở cả chế độ chạy theo lô và chế độ tương tác. Ở chế độ chạy theo lô (không có -q), lệnh nhận trực tiếp --ctid và --pwd-file mà không cần -q, và tiến trình CLI tiếp tục chạy cho đến khi cBot dừng. Trên VPS, hãy dùng công cụ quản lý tiến trình (systemd, tmux, screen hoặc image Docker chính thức) để giám sát lệnh, và có thể kết hợp tùy chọn --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 khiến tiến trình CLI thoát khi cBot dừng, giúp việc giám sát bằng systemd hoặc Docker dễ dàng hơn.
Để chạy cBot lâu dài trên máy chủ, hãy chạy cùng lệnh đó trong image Docker chính thức của cTrader CLI. Image Docker hỗ trợ cùng các tùy chọn và thoát khi nhận cùng các tín hiệu. Hướng dẫn Docker đầy đủ nằm trong bài viết cBots.
4. Kiểm tra cBot đang chạy ¶
Trong một terminal thứ hai, cbots liệt kê tất cả các phiên chạy cBot hiện đang hoạt động trên tài khoản. Đầu ra chứa mã định danh của phiên chạy cần dùng ở bước tiếp theo.
ctrader-cli cbots --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q
5. Xem giá trực tiếp khi cBot đang chạy ¶
Khi cBot hoạt động, bạn vẫn có thể dùng price trong một terminal khác để xem giá thị trường mà không ảnh hưởng đến phiên chạy hiện tại.
ctrader-cli price --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q --symbol=EURUSD
6. Dừng cBot khi phiên giao dịch kết thúc ¶
stop dừng phiên chạy cBot được xác định bằng mã định danh. Lấy mã định danh đó từ đầu ra của cbots ở bước 4.
ctrader-cli stop --ctid=$CTID --pwd-file=$PWD_FILE --account=$ACC -q \
--instance=13579246
Nếu đã khởi chạy CLI trong shell tương tác, hãy thêm all và yes để dừng tất cả các phiên chạy đang hoạt động cùng lúc: stop all yes.
7. Gộp các bước thành tập lệnh chạy có giám sát ¶
Lưu toàn bộ chuỗi lệnh thành start-cbot.sh và chạy thông qua systemd, tác vụ cron hoặc quy trình triển khai. Tập lệnh lưu bộ tham số, khởi chạy cBot ở chế độ nền, chờ xác nhận cBot hoạt động rồi xuất mã định danh phiên chạy để sử dụng sau.
#!/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
Để dừng phiên chạy đó sau này, hãy thực thi lệnh stop tương ứng ở bước 6. Mã định danh phiên chạy không thay đổi giữa các lần truy vấn cbots, vì vậy bạn chỉ cần lưu một lần và dùng lại.
Tài liệu tham chiếu cTrader CLI liệt kê tất cả tùy chọn của những lệnh được sử dụng trong quy trình này.
Cảnh báo
cTrader CLI là công cụ phục vụ giao dịch và tự động hóa. Công cụ này không cung cấp lời khuyên tài chính, đầu tư, pháp lý hoặc thuế. Các lệnh CLI dùng để đặt hoặc sửa lệnh giao dịch có thể dẫn đến giao dịch thực và gây thua lỗ. Hãy kiểm tra từng lệnh trước khi thực thi, thử nghiệm trên tài khoản demo trước và bảo vệ thông tin đăng nhập của bạn.