Vì C# là ngôn ngữ kiểu mạnh, cần phải chỉ định kiểu dữ liệu khi khai báo biến và thuộc tính lớp trong cBot, chỉ báo và plugin. Ngược lại, Python là kiểu động, vì vậy kiểu biến được suy ra tự động. Tuy nhiên, khi phát triển cBot sử dụng cTrader API, các kiểu khái niệm tương tự được giữ nguyên để đảm bảo tính nhất quán giữa cả hai ngôn ngữ.
API cTrader Algo không cho phép sử dụng tất cả các kiểu dữ liệu làm tham số có thể tùy chỉnh, và đó là lý do tại sao các nhà phát triển thuật toán cần hiểu và điều hướng cẩn thận giữa các kiểu được hỗ trợ.
Ghi chú
Các cBot, chỉ báo và plugin Python sử dụng các tham số có thể tùy chỉnh được khai báo trong các tệp .cs của chúng.
Trường hợp sử dụng tham số và giao diện người dùng
cTrader chỉ hỗ trợ các loại tham số này với các trường hợp sử dụng chính và các phần tử giao diện người dùng liên quan được phản ánh trong bảng dưới đây.
C#
Python
Trường hợp sử dụng
Phần tử giao diện người dùng
int
int
Khối lượng lệnh, số lượng nến, số chu kỳ, v.v.
Trường nhập số (có nút tăng giảm)
double
float
Giá trị giá, khối lượng lệnh, v.v.
Trường nhập số (có nút tăng giảm)
string
str
Tin nhắn tùy chỉnh, nhãn vị thế, v.v.
Trường nhập văn bản
bool
bool
Cơ chế bảo vệ, cho phép giao dịch, cho phép email, v.v.
Danh sách thả xuống có/không
DataSeries
api.DataSeries
Nguồn giá thị trường, v.v.
Danh sách thả xuống
TimeFrame
api.TimeFrame
Khung thời gian đã chọn, v.v.
Bộ chọn chu kỳ
enum
Enum
Căn chỉnh bản vẽ biểu đồ, mức độ rủi ro cá nhân, v.v.
Danh sách thả xuống
Color
Color
Bản vẽ biểu đồ, màu sắc của phương tiện phân tích kỹ thuật, phần tử tùy chỉnh, v.v.
Bộ chọn màu
DateTime
DateTime
Lấy ngày và giờ kiểu mạnh trong múi giờ của thuật toán
Bộ chọn ngày và giờ
DateOnly
DateOnly
Lấy ngày kiểu mạnh
Bộ chọn ngày
TimeSpan
TimeSpan
Lấy khoảng thời gian hoặc thời gian trong ngày kiểu mạnh
Bộ chọn thời gian
Symbol
Symbol
Lấy một biểu tượng kiểu mạnh
Bộ chọn biểu tượng
Symbol[]
Symbol[]
Lấy nhiều biểu tượng kiểu mạnh trong một mảng
Bộ chọn nhiều biểu tượng
Enum[]
Enum[]
Lấy nhiều giá trị kiểu Enum kiểu mạnh trong một mảng
Bộ chọn nhiều giá trị enum
TimeFrame[]
TimeFrame[]
Lấy nhiều giá trị TimeFrame kiểu mạnh trong một mảng
Bộ chọn nhiều chu kỳ
Cảnh báo
Bạn có thể không sử dụng được một số loại tham số trên nếu bạn đang sử dụng phiên bản cũ hơn của cTrader hoặc Algo API.
Ví dụ, giao diện người dùng cTrader phản ánh các kiểu bool, double, int của C# và bool, float, int của Python như sau.
Ba ví dụ tiếp theo cho thấy các kiểu dữ liệu DataSeries, enum tùy chỉnh, string của C# và api.DataSeries, Enum, str của Python (mà chúng tôi cũng cung cấp mã đầy đủ trong hướng dẫn này).
Như được hiển thị bên dưới, kiểu tham số Color của C# và Color của Python được biểu diễn bằng một bộ chọn màu.
Cuối cùng, giao diện người dùng của kiểu dữ liệu TimeFrame của C# và api.TimeFrame của Python phản ánh các tùy chọn chu kỳ có sẵn trong biểu đồ giao dịch trong ứng dụng Trade.
Ví dụ về cBot
Nhãn vị thế là tham số string của C# và str của Python trong cBot sau đây.
Trong ví dụ dưới đây, kiểu dữ liệu double của C# và float của Python đóng vai trò là tham số để nhập khối lượng lệnh tính bằng lot. cBot thực hiện lệnh mua thị trường sau ba nến đỏ liên tiếp.
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingcAlgo.API;usingcAlgo.API.Collections;usingcAlgo.API.Indicators;usingcAlgo.API.Internals;namespacecAlgo{[Indicator(AccessRights = AccessRights.None)]publicclassNewIndicator4:Indicator{privateBars_hourlyTimeFrameBars;privateBars_targetTimeFrameBars;[Parameter("Chosen Time Frame")]publicTimeFrameTargetTimeFrame{get;set;}[Output("Main")]publicIndicatorDataSeriesResult{get;set;}protectedoverridevoidInitialize(){_hourlyTimeFrameBars=MarketData.GetBars(TimeFrame.Hour);_targetTimeFrameBars=MarketData.GetBars(TargetTimeFrame);}publicoverridevoidCalculate(intindex){Result[index]=_hourlyTimeFrameBars.HighPrices[index]-_targetTimeFrameBars.HighPrices[index];}}}
Có một chỉ báo vui nhộn (kiểm tra mù màu) cung cấp các tùy chọn thị giác màu enum (ví dụ: bình thường, mù màu và thang độ xám) để người dùng xác định màu sắc của đường ngang được vẽ trên biểu đồ.
Tóm lại, bằng cách chọn đúng kiểu dữ liệu cho các biến và thuộc tính lớp được khai báo, bạn sẽ có thể tạo ra các cBot và chỉ báo có khả năng xử lý ngay cả những tác vụ không tiêu chuẩn.