Bỏ qua

Các thao tác với cBot

Bài viết này trình bày vòng đời hoạt động của cBot trong cTrader CLI. Bạn sẽ tìm hiểu cách chạy cBot từ terminal, liệt kê và dừng các phiên chạy cBot đang hoạt động, triển khai cBot trên VPS hoặc máy chủ đám mây bằng Docker và backtest cBot với dữ liệu lịch sử.

Điều kiện tiên quyết

  • cTrader CLI đã được cài đặt.
  • Bạn đã chuẩn bị cTrader ID, tệp thông tin đăng nhập và số tài khoản.
  • cBot đã được xuất thành tệp .algo biên dịch cho .NET 8.

Đọc siêu dữ liệu cBot

Trước khi chạy cBot, hãy dùng metadata để liệt kê các tham số mà cBot chấp nhận. Đầu ra hiển thị tên và kiểu của từng thuộc tính cBot.

ctrader-cli metadata <path-to-algo-file>

Hãy dùng tên tham số trong đầu ra siêu dữ liệu khi cung cấp tham số qua dòng lệnh hoặc tệp .cbotset.

Chạy cBot

Khởi chạy cBot bằng run. Đường dẫn đến tệp .algo là đối số đầu tiên. Bạn bắt buộc phải cung cấp --account, --symbol và --period.

ctrader-cli run <path-to-algo-file> --account=<account-id> --symbol=<symbol> --period=<period>

Có ba cách truyền tham số.

Nguồn Khi nào sử dụng Ví dụ
Giá trị mặc định Khi các tham số mặc định của cBot đã phù hợp. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1
Qua dòng lệnh Khi muốn thay đổi một hoặc hai giá trị mà không cần tạo tệp. ctrader-cli run /opt/mycbot.algo --account=1234567 --symbol=EURUSD --period=h1 --Periods=15 --ConsolidationPeriods=3
Tệp .cbotset Khi muốn dùng lại cùng một bộ giá trị qua nhiều lần chạy; hãy xuất tệp từ ứng dụng cTrader trên máy tính. ctrader-cli run /opt/mycbot.algo /opt/mysettings.cbotset --account=1234567 --symbol=EURUSD --period=h1

Hai tùy chọn không bắt buộc sau rất quan trọng khi chạy không cần giám sát.

Tùy chọn Công dụng
--full-access Chạy cBot không bị hạn chế quyền truy cập khi cần đọc hoặc ghi tệp cục bộ hay truy cập mạng.
--exit-on-stop Thoát tiến trình cTrader CLI khi cBot tự dừng; hữu ích trong tập lệnh và container.

Chạy cBot trên VPS hoặc máy chủ đám mây

Công cụ hoạt động hoàn toàn qua terminal có thể chạy tốt trên một máy chủ Linux nhỏ. Nhờ đó, cBot có thể chạy liên tục với chi phí thấp hơn so với máy tính để bàn. Sử dụng image Docker của cTrader CLI là cách triển khai linh hoạt nhất.

Tải image mới nhất:

docker pull ghcr.io/spotware/ctrader-console:latest

Chạy cBot trong container. Tùy chọn --mount liên kết thư mục trên máy chủ host với một vị trí trong container; các tùy chọn -e truyền cấu hình qua biến môi trường:

docker run -d -it \
  --name ctrader.console.run.mybot \
  --mount type=bind,src=/cAlgo/Robots,dst=/mnt/Robots \
  -e CTID='mycid' \
  -e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' \
  -e ACCOUNT='9102302' \
  -e SYMBOL='EURUSD' \
  -e PERIOD='H1' \
  ghcr.io/spotware/ctrader-console:latest run "/mnt/Robots/My bot.algo" --environment-variables
Thành phần Ý nghĩa
--name ctrader.console.run.mybot Đặt tên cho container.
--mount type=bind,src=...,dst=... Liên kết thư mục trên host với đường dẫn /mnt/Robots trong container.
-e CTID='mycid' Thiết lập cTrader ID làm biến môi trường.
-e PWD-FILE='/mnt/Robots/ctrader-cli.pwd' Thiết lập đường dẫn đến tệp mật khẩu bên trong container.
-e ACCOUNT='9102302' Thiết lập số tài khoản giao dịch.
-e SYMBOL='EURUSD' Thiết lập ký hiệu.
-e PERIOD='H1' Thiết lập khung thời gian.
"<path>" Đường dẫn đến tệp cBot trong container.
--environment-variables Yêu cầu cTrader CLI đọc cấu hình từ các biến môi trường.

Ghi chú

Image Docker hỗ trợ mọi chức năng của cTrader CLI, bao gồm backtest và tối ưu hóa.

Khởi chạy từ ứng dụng cTrader trên máy tính

Bạn không cần thành thạo dòng lệnh để sử dụng cTrader CLI.

  1. Trong ứng dụng cTrader trên máy tính, hãy chuẩn bị cBot với các tham số mong muốn.
  2. Nhấp chuột phải vào một phiên chạy cBot cục bộ và chọn Khởi chạy trong tiến trình bên ngoài. cTrader CLI tự động khởi chạy và chạy phiên cBot đó độc lập.
  3. Đóng ứng dụng trên máy tính để tiết kiệm tài nguyên CPU và RAM. cBot tiếp tục chạy trong tiến trình cTrader CLI.

Liệt kê và dừng cBot

Liệt kê các phiên chạy cBot hiện đang hoạt động trên tài khoản:

ctrader-cli cbots --ctid=letstrade --password=secret --account=1234567 -q

Dừng phiên chạy bằng mã định danh xuất hiện trong đầu ra của run:

ctrader-cli stop --ctid=letstrade --password=secret --account=1234567 -q --instance=<instance-id>

Để dừng đồng thời tất cả cBot đang chạy, hãy mở shell tương tác rồi chạy stop all yes. Tiến trình cTrader CLI kết thúc khi phiên chạy cuối cùng dừng.

Backtest cBot

Chạy cBot trên dữ liệu lịch sử bằng backtest. Đường dẫn đến tệp .algo là đối số đầu tiên, có thể theo sau bằng tệp .cbotset không bắt buộc. Bài kiểm thử cũng cần ký hiệu, khung thời gian và khoảng ngày:

ctrader-cli backtest <path-to-algo-file> [<path-to-cbotset-file>] --account=<account-id> --symbol=<symbol> --period=<period> --start=<start-date> --end=<end-date> --data-mode=<data-mode>

Các tùy chọn môi trường kiểm thử

Các tùy chọn môi trường kiểm thử nằm dưới mục backtest trong tài liệu tham chiếu CLI. Chỉ --start, --end và --data-mode là bắt buộc. Các tùy chọn khác cho phép thiết lập số dư ban đầu, hoa hồng, spread, nguồn dữ liệu và tệp báo cáo.

Chế độ dữ liệu

Giá trị Mô tả
open Sử dụng giá mở cửa của khung thời gian cơ sở; nhanh nhưng kém chính xác hơn khi mô phỏng biến động trong từng thanh giá.
m1 Sử dụng dữ liệu một phút tải xuống từ máy chủ.
m1-csv Sử dụng dữ liệu một phút được cung cấp qua --data-file.
tick-csv Sử dụng dữ liệu tick được cung cấp qua --data-file.
ticks Sử dụng dữ liệu tick tải từ máy chủ; đây là chế độ chính xác nhất nhưng cũng chậm nhất. Bắt buộc đối với các khung thời gian tick, thanh biên độ và Renko.

Mẹo

Đặt --data-dir thành thư mục được giữ lại giữa các lần chạy để cTrader CLI tái sử dụng dữ liệu giá đã tải xuống thay vì tải lại cho mỗi lần backtest. Trong Docker, hãy liên kết thư mục này với một thư mục trên host để dữ liệu vẫn còn sau khi container dừng.

Ví dụ thực hành

Backtest một cBot mẫu với một tệp tham số .cbotset duy nhất:

ctrader-cli backtest "C:/test/sample martingale.algo" C:/test/special-parameters.cbotset \
  --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 --symbol=EURUSD --period=h1 \
  --start="01/01/2025 12:34" --end="31/01/2025 20:56" \
  --balance=10000 --commission=30 --commission-type=UsdPerMillionUsdVolume --spread=1 --data-mode=m1

Đầu ra backtest

cTrader CLI liên tục hiển thị tiến trình trong terminal và đưa ra bản tóm tắt khi hoàn tất. Toàn bộ kết quả nằm trong thư mục Backtesting cạnh tệp .algo, với một thư mục con riêng cho mỗi lần chạy:

…/data/{cBotName}/{BacktestingInstanceID}/Backtesting
Tệp Nội dung
Sự kiện (JSON) Mọi sự kiện giao dịch quan trọng, chẳng hạn như mở và đóng vị thế.
Nhật ký (TXT) Việc khởi chạy và dừng cBot, các thao tác giao dịch và kết quả.
Tham số (.cbotset) Các tham số và giá trị đã dùng trong backtest.
Báo cáo (HTML) Báo cáo trực quan gồm số liệu thống kê giao dịch và lịch sử lệnh, có thể mở trong trình duyệt web.

--report và --report-json cũng lưu báo cáo vào đường dẫn được chỉ định, ngoài thư mục nêu trên.

Cách hoạt động của Algo API trong cTrader CLI

Một số thành phần của cTrader Algo API hoạt động khác khi cBot chạy trong cTrader CLI do không có giao diện đồ họa.

Thành phần API Cách hoạt động trong cTrader CLI
MessageBox Trả về MessageBoxResult.None.
Window Mọi phương thức đều bị bỏ qua và không có cửa sổ nào xuất hiện.
Notifications.PlaySound Ignored.
Chart.TakeChartshot Trả về null.