Sự kiện nến
Các nhà phát triển thuật toán thường cần tham chiếu đến các sự kiện nến để thực hiện chiến lược giao dịch kịp thời để phản ứng với giá cập nhật. API cung cấp các sự kiện BarOpened và BarClosed để người tạo thuật toán tinh chỉnh cBot và nắm bắt cơ hội tại các điểm khác nhau của chu kỳ nến.
Ghi chú
Các sự kiện nến chỉ có thể được xử lý khi lập trình cBot. Thay vào đó, các chỉ báo có phương thức Calculate() được gọi trên mỗi tick.
Trong hướng dẫn này, chúng tôi giải thích sự khác biệt giữa các phương thức OnBar() và OnBarClosed() và cung cấp một số trường hợp sử dụng.
Sự kiện nến trong một phút!
- Phương thức
OnBar()được kích hoạt mỗi khi một nến mới được vẽ trên biểu đồ mà một trường hợp được thêm vào. Nó được gọi cho nến mới được hình thành. - Trình xử lý sự kiện
OnBarClosed()cũng được kích hoạt trên mỗi nến mới. Tuy nhiên, nó được gọi cho nến đã đóng cuối cùng (tức là trước nến hiện tại). - Bằng cách tham chiếu đến sự kiện nến chính xác, bạn tăng độ chính xác của phân tích kỹ thuật và chọn thời điểm thích hợp cho các hành động của thuật toán.
- Các loại biểu đồ được hỗ trợ cho
BarOpenedvàBarClosedlà biểu đồ thời gian, nến, tick, Renko, phạm vi và Heikin Ashi.
Sử dụng phương thức OnBar()
Sự kiện BarOpened xảy ra tùy thuộc vào lịch biểu của biểu tượng và tần suất giá đến. Thông thường, người dùng nền tảng có thể điều chỉnh tần suất xảy ra BarClosed bằng cách thiết lập khung thời gian biểu đồ.
Ghi chú
Phương thức OnBar() có thể được gọi thường xuyên tùy theo thiết lập khung thời gian biểu đồ cho phép. Khi một nến đóng, OnBar() sẽ không được kích hoạt cho đến khi tick tiếp theo đến, điều này về mặt logic sẽ kích hoạt việc hình thành một nến mới.
Phương thức OnBar() được gọi đồng thời với mỗi nến mới được vẽ trên biểu đồ mà thuật toán được gắn vào. Do đó, trình xử lý OnBar() là nơi hoàn hảo để xác định logic giao dịch tùy chỉnh mà cBot của bạn nên lặp lại thường xuyên.
Trong trình soạn thảo mã, bạn có thể chỉ định trình xử lý OnBar() như sau:
override void OnBar()
Sử dụng phương thức OnBarClosed()
API Algo cũng cho phép thực thi logic cho nến đã đóng cuối cùng, tùy thuộc vào chiến lược bạn muốn thực hiện, đây có thể là một lựa chọn thay thế thuận tiện và chính xác hơn cho việc xử lý sự kiện BarOpened. Khi nến mở, nến mới xuất hiện dưới dạng (nến doji) và không chứa dữ liệu đầy đủ cho phân tích kỹ thuật.
Sự kiện BarClosed là bí danh của sự kiện BarOpened, nghĩa là nó chỉ xảy ra khi sự kiện BarOpened diễn ra. Ví dụ, sự kiện BarClosed cho nến cuối cùng vào thứ Sáu sẽ xảy ra với nến mở đầu tiên vào thứ Hai, với điều kiện là biểu tượng không được giao dịch vào cuối tuần.
Ghi chú
Phương thức OnBarClosed() sẽ không được gọi cho đến khi một tick đến để hình thành nến mới.
Trình xử lý sự kiện OnBarClosed() có thể được khai báo như sau:
override void OnBarClosed()
Trong phần thân của phương thức OnBarClosed(), bạn có thể xác định những hành động liên kết mà cBot của bạn sẽ thực hiện khi sự kiện BarClosed được kích hoạt (ví dụ: thực hiện lệnh, phác thảo mô hình, vẽ hình ảnh phân tích kỹ thuật, v.v.).
Khi truy cập trong trình xử lý sự kiện này, bộ sưu tập Bars không chứa nến trực tiếp hiện tại, trong khi các bộ sưu tập khác (như Positions, Symbols, v.v.) chứa dữ liệu thực tế.
Các trình xử lý sự kiện OnBar() và OnBarClosed() hoạt động như dự định trong kiểm tra ngược và tối ưu hóa. Cả hai phương thức có thể được sử dụng trên các loại biểu đồ khác nhau, bao gồm biểu đồ thời gian, nến, tick, Renko, phạm vi và Heikin Ashi.
Tạo cBots ví dụ
Ví dụ cBot sau đây đặt một lệnh thị trường khi mỗi nến thứ ba trên biểu đồ EURCHF được mở.
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 27 28 29 30 31 32 33 | |
Vì cBot được khởi chạy trên biểu đồ m1, khoảng thời gian xấp xỉ giữa các lệnh thị trường được thực hiện là ba phút.

Dưới đây là một ví dụ về cBot với chỉ báo Hệ thống Chuyển động Định hướng (DMS) lồng nhau, in ra (Xu hướng tăng!) nếu giá trị DI+ (đường màu xanh lá) vượt quá giá trị DI- (đường màu đỏ).

Khi DI- lớn hơn DI+, (Xu hướng giảm!) được in ra trong sự kiện BarClosed.

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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | |
Tổng quan
Sự đa dạng của các sự kiện nến tồn tại trong API Algo cho phép các nhà phát triển thuật toán chọn thời điểm chính xác cho các phương thức được gọi. Phương thức OnBar() có thể được gọi với tần suất khác nhau tùy thuộc vào lịch biểu của biểu tượng và thiết lập khung thời gian biểu đồ, điều này cũng bổ sung cho chức năng của cBot. Phương thức OnBarClosed() là một bí danh thuận tiện của OnBar() để làm việc với các chỉ báo.