Bỏ qua

Chạy các lệnh cTrader CLI

Bài viết này giải thích cấu trúc của các lệnh cTrader CLI, cách hoạt động của xác thực và cách đọc dữ liệu tài khoản, giá cùng lịch sử giao dịch.

Cấu trúc lệnh

Mọi lệnh cTrader CLI đều có cùng cấu trúc:

ctrader-cli <command> [arguments] [options]
  • Các tùy chọn bắt đầu bằng tiền tố. -- là dạng dài, còn - là dạng ngắn (--symbol và -s tương đương nhau).
  • Giá trị của tùy chọn được ngăn cách bằng dấu cách hoặc dấu bằng. Cả --symbol EURUSD và --symbol=EURUSD đều hợp lệ.
  • Đối số là các giá trị theo vị trí, không có tiền tố. Đường dẫn đến tệp .algo là một đối số.
  • Các giá trị chứa dấu cách phải được đặt trong dấu nháy đơn hoặc nháy kép, chẳng hạn '/opt/my cbots/trend cbot.algo'. Hãy sử dụng nhất quán một kiểu dấu nháy trong cùng một lệnh.

Xác thực

cTrader CLI có hai phương thức xác thực. Cả hai đều dùng tệp thông tin đăng nhập mà bạn chuẩn bị trong quá trình thiết lập.

Phương thức Tùy chọn bắt buộc Lệnh thường dùng
Hàng loạt --ctid và --pwd-file periods, accounts, symbols, metadata, run, backtest
Tương tác --ctid, --password hoặc --pwd-file và -q account, orders, price, candles, positions, exposure, alerts, các lệnh chỉ báo

Ghi chú

Các lệnh ở chế độ hàng loạt không chấp nhận --password. Các lệnh tương tác chấp nhận --password hoặc --pwd-file.

Các lệnh accounts, symbols, metadata, run và backtest có ở cả hai chế độ. Tùy theo các tùy chọn được cung cấp, chúng được thực thi ở chế độ hàng loạt hoặc tương tác:

  • Chế độ hàng loạt – đọc thông tin đăng nhập từ --pwd-file (hoặc --broker) và chạy mà không cần tương tác.
  • Chế độ tương tác – sử dụng --password và -q (hoặc bất kỳ tùy chọn riêng nào của lệnh) để thực hiện lời gọi tương tác.

Mã định danh khung thời gian

Nhiều lệnh chấp nhận giá trị --period. Chạy ctrader-cli periods để liệt kê tất cả mã định danh hợp lệ. Các mã định danh bao gồm phút, giờ, ngày, tuần, tháng, cùng với tick, Renko, thanh biên độ và các biến thể Heikin Ashi. Hệ thống không phân biệt chữ hoa và chữ thường khi đọc mã định danh.

Đơn vị khối lượng

--volume chấp nhận khối lượng tính theo đơn vị tiền tệ cơ sở hoặc lot. Dùng --volume-type=units (mặc định) hoặc --volume-type=lots để chọn cách diễn giải khối lượng. Đối với hầu hết các ký hiệu Forex, 100.000 đơn vị tương đương một lot tiêu chuẩn.

Khi dùng --volume-type=lots Số đơn vị tài sản cơ sở
--volume=1 100.000
--volume=0.1 10.000
--volume=0.01 1.000

Cảnh báo

Với kim loại, chỉ số và tiền mã hóa, kích thước lot khác nhau tùy theo ký hiệu. Vì vậy, cùng một giá trị --volume=1 có thể mở vị thế lớn hơn dự kiến. Hãy kiểm tra giá trị lotSize của ký hiệu trước khi giao dịch:

ctrader-cli symbol --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567 -q --symbol=XAUUSD

Ví dụ, nếu XAUUSD có lotSize: 100, thì --volume=1 --volume-type=lots sẽ mở vị thế 100 đơn vị.

Ngày và giờ

Tất cả ngày và giờ trong cTrader CLI đều theo UTC. CLI không bao giờ sử dụng múi giờ địa phương của máy tính hoặc giờ máy chủ của nhà môi giới.

UTC được áp dụng cho đầu ra lệnh và ngày nhập vào như sau:

  • Đầu ra: mọi dấu thời gian trong đầu ra JSON đều theo UTC, ở định dạng ISO 8601 có Z, ví dụ 2026-10-08T14:05:00.000Z.
  • Lệnh tương tác (candles, deals, orders-history và backtest chạy với -q): --from và --to chỉ nhận ngày, theo định dạng yyyy-MM-dd, dd/MM/yyyy, dd-MM-yyyy hoặc yyyy/MM/dd. Ngày này là một ngày theo lịch tính theo UTC.
    • Với deals và orders-history, --to bao gồm cả ngày, đến 23:59:59 UTC.
    • Với candles, --to chỉ thời điểm bắt đầu ngày đó (00:00 UTC). Để bao gồm cả ngày, hãy đặt --to thành ngày tiếp theo.
    • Nếu không có --from / --to, lệnh backtest tương tác sẽ sử dụng dữ liệu của 7 ngày gần nhất.
  • Lệnh hàng loạt (backtest và các lệnh khác): ngày có định dạng dd/MM/yyyy, có thể thêm giờ theo hệ 24 giờ dưới dạng dd/MM/yyyy HH:mm, ví dụ 31/12/2026 18:00, cũng theo UTC.

Ngoại lệ duy nhất là cBot đang chạy (run, backtest). Thời gian của cBot tuân theo thiết lập TimeZone trong cBot, giống như trong cTrader Algo.

Đọc dữ liệu tài khoản và thị trường

ctrader-cli periods không yêu cầu tài khoản hay thông tin đăng nhập nên rất phù hợp để thử nghiệm đầu tiên.

ctrader-cli periods

Liệt kê các tài khoản giao dịch được liên kết với cTrader ID của bạn:

ctrader-cli accounts --ctid=letstrade --pwd-file=C:/test/password.pwd

Khi đã có số tài khoản, hãy liệt kê các ký hiệu khả dụng trên tài khoản đó:

ctrader-cli symbols --ctid=letstrade --pwd-file=C:/test/password.pwd --account=1234567

Đọc giá hiện tại của một ký hiệu và lấy dữ liệu nến lịch sử trong tập lệnh:

ctrader-cli price --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD
ctrader-cli candles --ctid=letstrade --password=secret --account=1234567 -q --symbol=EURUSD --period=h1 --count=200 > eurUSD_h1.json

Giới hạn dữ liệu lịch sử

deals và orders-history có các giới hạn truy xuất lịch sử sau:

  • CLI tải toàn bộ khoảng thời gian --from / --to mà không giới hạn độ dài khoảng thời gian.
  • Mỗi lần gọi chỉ trả về tối đa 200 giao dịch gần nhất (deals) hoặc 500 lệnh gần nhất (orders-history) trong khoảng đó.
  • Nếu không có --from / --to, cả hai lệnh chỉ trả về dữ liệu của 30 ngày gần nhất.
  • --count quy định số bản ghi được trả về:

    • Mặc định 50, tối đa 200 đối với deals.
    • Mặc định 100, tối đa 500 đối với orders-history.

Khi có --from hoặc --to, --count bị bỏ qua và lời gọi có thể trả về đến số bản ghi tối đa cho phép.

Nếu khoảng thời gian có nhiều bản ghi hơn số lượng một lần gọi có thể trả về, hãy chia thành các khoảng ngắn hơn và chạy lệnh riêng cho từng khoảng.

Để biết kết quả có bị cắt bớt hay không, hãy kiểm tra đầu ra:

  • orders-history: đầu ra chứa các trường available và returned. Nếu available lớn hơn returned, khoảng thời gian đó vẫn còn các lệnh khác.
  • deals: nếu count đúng bằng 200, khoảng thời gian đó có thể còn các giao dịch khác.

Thao tác hàng loạt trong shell tương tác

Trong shell tương tác, một số lệnh cho phép thêm all và yes vào cuối để thực hiện thao tác hàng loạt và bỏ qua yêu cầu xác nhận.

Lệnh Cú pháp với all và yes ở cuối
order cancel order cancel all yes
position close position close all yes
stop stop all yes
alert delete alert delete all yes

Chạy lệnh ở chế độ tương tác

Chạy ctrader-cli mà không kèm lệnh để mở shell tương tác. Khi được yêu cầu, hãy đăng nhập bằng cTID và mật khẩu, sau đó nhập liên tiếp các lệnh mà không cần cung cấp lại thông tin đăng nhập. Cách này thuận tiện khi bạn muốn chạy nhiều lệnh liên tiếp.

Để chạy một lệnh rồi thoát ngay, hãy thêm -q. Điều này hữu ích trong các tập lệnh cần kết thúc tiến trình ngay khi lệnh hoàn thành.

Hai tùy chọn giúp bạn tìm hiểu các chức năng mà CLI hỗ trợ.

Tùy chọn Mục đích
--help Liệt kê các tùy chọn chung và các cách khởi chạy.
--commands Liệt kê tất cả lệnh tương tác cùng các dạng đối số vị trí, không cần xác thực.

Nếu cTrader ID của bạn liên kết với các tài khoản ở nhiều nhà môi giới có cùng số tài khoản, hãy thêm --broker=<broker-name> để xác định đúng tài khoản.

Các lỗi thường gặp

Dấu hiệu Nguyên nhân có thể Bước tiếp theo
ctrader-cli: command not found CLI không có trong PATH của bạn. Mở lại terminal hoặc làm theo các bước cài đặt thủ công trong hướng dẫn thiết lập.
Parameter password is not allowed Bạn đã truyền --password cho lệnh hàng loạt. Hãy chuyển sang --pwd-file; quy tắc đầy đủ nằm trong hướng dẫn thiết lập.
Account cannot be found Số tài khoản không xác định duy nhất vì trùng nhau giữa các nhà môi giới. Thêm --broker=<broker-name>.
Unknown symbol name Tên ký hiệu không đúng hoặc không được hỗ trợ. Chạy symbols và sử dụng chính xác tên trong đầu ra.
Unknown period Mã định danh khung thời gian không đúng. Chạy periods để liệt kê mọi mã định danh hợp lệ.

Ghi chú

Để xem tất cả tùy chọn, giá trị mặc định và mô tả đầy đủ, hãy tham khảo tài liệu tham chiếu CLI.