Vòng đời chỉ báo tùy chỉnh
Cấu trúc mã mẫu
Bài viết này sẽ hướng dẫn bạn qua cấu trúc mã và giải thích logic đằng sau các sự kiện và vòng đời của một chỉ báo cTrader. Để truy cập các chỉ báo tùy chỉnh, mở tab Local trong ứng dụng Algo.

Ví dụ, bạn có thể tạo một chỉ báo mới có tên "LifeCycle Test" với mã mẫu sau có sẵn trong cửa sổ trình soạn thảo mã.

Để đặt lại về phiên bản mẫu, hãy sao chép mã bên dưới.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
Nhìn qua, cấu trúc mã chỉ bao gồm hai phương thức, phương thức Initialize() và phương thức Calculate(). Nhấp vào Build để tiếp tục kiểm tra chỉ báo này. Chúng ta sẽ thêm một phương thức bổ sung có tên OnDestroy() và giải thích mục đích của nó sau.
Sự kiện khởi tạo
Khi một chỉ báo cTrader được gắn vào biểu đồ lần đầu tiên hoặc khi người dùng thay đổi bất kỳ cài đặt tham số nào, một phiên bản chỉ báo được tạo lại và phương thức Initialize() được gọi. Nó được sử dụng để khởi tạo bất kỳ biến nào bạn dự định sử dụng trong chỉ báo của mình. Bạn cũng có thể định nghĩa và tham chiếu các chỉ báo bổ sung để tạo một chỉ báo duy nhất sử dụng công thức từ các chỉ báo khác.
Theo mặc định, mẫu mã mới bao gồm một cài đặt tham số có tên Message với giá trị "Hello world!".
1 2 | |
Trong phương thức Initialize(), có một dòng mã để in thông báo này vào nhật ký.
1 | |
Để minh họa phương thức Initialize(), hãy thêm một phiên bản chỉ báo bằng cách nhấp vào biểu tượng Plus bên cạnh biểu tượng Build và chọn một cặp tiền tệ. Nếu bạn nhấp vào More trong hàng chỉ báo và chọn Add an instance, cặp tiền tệ EURUSD với khung thời gian h1 sẽ được thêm tự động.

Ghi chú
Thêm một phiên bản trong cTrader Algo giống như gắn một chỉ báo vào biểu đồ trong ứng dụng Trade.
Bây giờ, mở tab Log trong bảng Trade Watch dưới biểu đồ. Như bạn có thể thấy, thông báo "Hello world" đã được in ra.

Mỗi khi chỉ báo được thêm vào biểu đồ lần đầu tiên hoặc khi một tham số được thay đổi, biểu đồ sẽ được làm mới và phương thức Initialize() được gọi lại. Nhập một thông báo khác trong phần Parameters để xem mục nhật ký cập nhật tương ứng.

Tính toán đầu ra của chỉ báo
Phương thức Calculate() được gọi cho mỗi chỉ số của dữ liệu lịch sử và trên mỗi tick đến. Ví dụ, nếu biểu đồ hiện tại có 1000 nến, phương thức Calculate() sẽ được gọi cho chỉ số 0, 1, 2, và tiếp tục cho đến tối đa là 999.
1 | |
Phương thức Calculate() có thể được gọi nhiều lần mỗi giây trong thời kỳ biến động cao hoặc ít hơn khi thị trường ổn định. Để kiểm tra cách hoạt động của nó, bạn có thể thêm một dòng mã vào phần thân của phương thức Calculate() để in ra giá trị chỉ số đang được truyền vào phương thức cho mỗi tick dữ liệu mới. Đừng quên nhấp vào Build mỗi lần sau khi thêm thay đổi trong cửa sổ trình soạn thảo mã.
1 | |
Để chuyển từ cửa sổ trình soạn thảo mã sang biểu đồ, hãy nhấp vào phiên bản chỉ báo đã thêm. Nếu bạn mở tab Log trong bảng Trade Watch, bạn sẽ thấy các giá trị được in ra cho mỗi chỉ số được truyền vào phương thức.

Phương thức OnDestroy()
Phương thức OnDestroy() được gọi khi chỉ báo bị xóa khỏi biểu đồ và không còn cần thiết nữa. Bạn sẽ cần phải triển khai phương thức này, vì nó không được thêm vào mặc định khi bạn tạo một chỉ báo mới.
1 2 3 4 | |
Phương thức này hữu ích cho các lập trình viên, vì nó cho phép họ giải phóng tài nguyên không được quản lý và thực hiện các tác vụ hoàn tất. Nó giúp ngăn chặn rò rỉ bộ nhớ và đảm bảo chỉ báo không giữ lại tài nguyên sau khi bị xóa. Ví dụ bao gồm đóng kết nối với nguồn cấp dữ liệu bên ngoài, giải phóng các đối tượng dữ liệu lớn và các hoạt động khác giải phóng bộ nhớ.
Tổng quan
Tóm lại, các phương thức Initialize(), Calculate() và OnDestroy() minh họa các giai đoạn khác nhau trong vòng đời của chỉ báo tùy chỉnh. Bằng cách điều chỉnh mã mẫu trong ứng dụng Algo, bạn có thể tự do quyết định cách khởi tạo biến chỉ báo, tính toán đầu ra chỉ báo và chạy các tác vụ hoàn tất.
