Thiết lập số lượng bộ đệm và biểu đồ đồ họa
Để chỉ báo hiển thị kết quả tính toán của nó trên biểu đồ, nó phải xác định một hoặc nhiều mảng và khai báo chúng là bộ đệm chỉ báo. Số lượng bộ đệm được thiết lập bằng chỉ thị:
#property indicator_buffers N
Ở đây N là một số nguyên từ 1 đến 512. Chỉ thị này đặt số lượng bộ đệm sẽ có sẵn trong mã để tính toán chỉ báo.
N phải là một hằng số nguyên (theo nghĩa đen) hoặc định nghĩa macro tương đương. Vì đây là một chỉ thị tiền xử lý, không có biến nào (ngay cả với sửa đổi const
) tồn tại tại giai đoạn tiền xử lý mã nguồn.
Tuy nhiên, các bộ đệm không đủ để hiển thị dữ liệu đã tính toán. Trong MQL5, hệ thống hiển thị là hai cấp độ. Cấp độ đầu tiên được hình thành bởi các bộ đệm chỉ báo, là các mảng động lưu trữ dữ liệu để hiển thị. Cấp độ thứ hai dùng để quản lý cách dữ liệu này sẽ được hiển thị. Nó được xây dựng dựa trên các thực thể mới gọi là cấu trúc đồ họa (hoặc biểu đồ, hoặc plots). Vấn đề là các cách hiển thị dữ liệu khác nhau có thể yêu cầu số lượng bộ đệm chỉ báo khác nhau. Ví dụ, trung bình động chỉ có một giá trị cho mỗi thanh, và do đó một bộ đệm chỉ báo là đủ cho biểu đồ đường như vậy. Tuy nhiên, để hiển thị biểu đồ nến, cần 4 giá trị cho mỗi thanh (giá OHLC). Do đó, một biểu đồ đồ họa như vậy yêu cầu 4 bộ đệm chỉ báo.
Số lượng biểu đồ (P) cũng phải được định nghĩa trong mã nguồn bằng một chỉ thị đặc biệt.
#property indicator_plots P
Trong trường hợp đơn giản nhất, số lượng bộ đệm và biểu đồ là như nhau. Nhưng chúng ta sẽ sớm phân tích các ví dụ khi bạn cần nhiều bộ đệm hơn các cấu trúc đồ họa. Ngoài các tình huống mà cấu trúc đồ họa của một loại cụ thể yêu cầu một số lượng bộ đệm xác định trước, đôi khi chúng ta phải đối mặt với nhu cầu phân bổ một hoặc nhiều mảng cho các phép tính trung gian. Các mảng như vậy không trực tiếp tham gia vào việc hiển thị nhưng chứa dữ liệu để xây dựng các bộ đệm được hiển thị. Tất nhiên, bạn có thể sử dụng các mảng động đơn giản cho mục đích này mà không cần khai báo chúng là bộ đệm. Nhưng khi đó chúng ta sẽ phải tự kiểm soát và thay đổi kích thước chúng. Việc biến chúng thành bộ đệm sẽ thuận tiện hơn nhiều và do đó hướng dẫn terminal phân bổ bộ nhớ.
Số lượng bộ đệm và biểu đồ đồ họa chỉ có thể được thiết lập bằng các chỉ thị tiền xử lý; các thuộc tính này không thể được thay đổi động bằng các hàm MQL5.
Sau khi số lượng bộ đệm và biểu đồ được xác định, các mảng chính nó, sẽ trở thành bộ đệm chỉ báo, nên được mô tả trong mã nguồn.
Hãy bắt đầu phát triển một ví dụ chỉ báo mới IndReplica1.mq5
để thể hiện các phần cần thiết trong mã nguồn. Bản chất của chỉ báo sẽ đơn giản: trong bộ đệm duy nhất của nó, chúng ta sẽ hiển thị các giá trị của mảng tham số data
nhận được. Như đã nói trước đó, một chuỗi thời gian cụ thể để truyền vào mảng data
được người dùng chọn tại thời điểm chỉ báo được áp dụng lên biểu đồ; một chuỗi thời gian với giá đóng thanh sẽ được cung cấp theo mặc định.
Hãy thêm các chỉ thị mô tả một bộ đệm và một biểu đồ.
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
2
3
Các chỉ thị không phân bổ chính bộ đệm, mà chỉ đặt các thuộc tính của chỉ báo và chuẩn bị hệ thống runtime cho chương trình để tiếp tục xác định và cấu hình số lượng mảng đã chỉ định. Tiếp theo, chúng ta sẽ xem cách đăng ký một mảng làm bộ đệm.