Điều cở bản để lập trình Indicator


Giới thiệu

Mục đích của bài viết này là để giải thích các nguyên tắc viết indicator trên ví dụ, và việc xem xét "các đá ngầm" mà các lập trình viên có thể gặp, khi thực hiện các bước đầu tiên của họ trong sự phát triển ngôn ngữ NTL +.


Trong việc xây dựng các Indicator, Bạn cần phải xác định các giá trị được tính toán, ghi lại trong buffer, và làm thế nào chúng được hiển thị trên màn hình. Hình thành các chỉ số đấy một cách đúng để phần mêm hoạt động đúng. Khi tạo logic cho indicator, Bạn cần phân biệt, những giá trị cần tính, cách ghi vào buffer, cách hiển thị lên trên màn hình. Hình thành các chức năng đấy đúng là mục tiêu khi xây dựng indicator.


Ví dụ, chúng ta sẽ thiết lập indicator mà sẽ hiển thị chênh lệch các thanh bar với giá đóng cáo hơn giá mở và số lượng thanh bar với giá đóng thấp hơn giá mở; các chênh lệch đấy tích tụ ở trong giai đoạn N. Chúng ta sẽ đưa indicator đấy hiển trong cửa sổ mới theo mẫu hình gistogramm.


Thiết lập mã script

Logic của chúng ta sẽ đơn giản và dễ hiêu, để có thể đơn giản kiểm tra cách làm việc của indicator. Cho mỗi thanh Bar với số I phân tích trong giai đoạn số N bar trước đấy và sẽ ghi lại thống kê, khi phát hiện thấy sổ bar tăng thì sẽ công thêm giá trị cuối thêm 1, còn khi thấy bar hạ thì trừ 1.

Xem mật mã của phần mềm.


Trước hết phải nâng cấp lại các sô liệu mà sẽ được sử dùng trong indicator.

#set_indicator_separate double ExtMapBuffer1[]; int ExtCountedBars=0; extern int period = 10;

Mục #set_indicator_separate cho chúng ta biết là biểu đồ sẽ được hiển thị trong cửa sổ mới và sẽ không hiển thị trong biểu đồ tỷ giá. Dòng tiếp theo là số liệu toàn cầu ExtMapBuffer1, trong đấy chúng ta sẽ lưu lại các giá trị số liệu. Lưu y rằng, chúng ta không đặt kích cỡ của số liệu này, vị compilator sẽ tự động chia ra bộ nhớ cần thiết cho công việc.


Trong ExtMapBuffer1 sẽ lưu lại tất cả các điểm tham gia trong việc xây dựng biểu đồ, còn theo ô dọc sẽ là các số thứ tự trong số liệu. Sau đấy chúng ta cho thêm số liệu ExtCounterBars bằng 0. Trong số liệu này chúng ta sẽ lưu giữ số liệu các thanh bar. Như vậy chúng ta sẽ không cần tính số lượng thanh bar mỗi lân, như vậy sẽ nhanh hơn. Tiếp theo là số liệu toàn câu period để lưu số lượng khoảng thời gian mà indicator sẽ tính dữ liệu. Lưu ý rằng số liệu loại extern cho phep chúng ta thay đổi ngày trong khi đang chay phần mềm, không cần phải chỉnh đổi lại mã.


Xem ví dụ chức năng Initialize(), mà trong đấy sẽ lưu lại các điều chỉnh chính cho indicator của bạn.


Chức năng SetIndexCount của Indicator lưu các số liệu. Buffer với số liệu ExtMapBuffer1 sẽ chỉ có một, nên chúng ta viết số 1 vào cuối. Chúng ta cần liên kết số thứ tự và số liệu. Dòng này là dòng liên kết Indicator.SetIndexBuffer(0, ExtMapBuffer1), giá trị 0 là để vẻ biểu đồ từ số liệu ExtMapBuffer1.


Tiếp theo chúng ta điền các tính chất cho indicator. Thông số thứ nhất của phương pháp SetIndexStyle điền số liệu trong buffer: giá trị = 0, mà đã được viết trong SetIndexBuffer. Thứ 2 là kiểu loại vẽ: gistogramm. Trong thông số thư 3 là style đường IsSolid (có thể cho bất kỳ giá trị nào vào, tại vì giá trị này chỉ anh hưởng đến độ dày bằng 1 của gistogramm). Tiếp theo chúng tà điền thông số độ dày bằng 5 và mầu xanh clrBlue (mầu có thể cho như format RGB, ví dụ 0x0000FF).


Tiếp theo là chức năng Run(), sẽ thực hiện chức năng chính là draw(). Chức năng draw() sẽ tính tất cả các dữ liệu.