
使用 Một trong những lợi thế đáng kinh ngạc của MT4là việc sử dụng và tích hợp hàng trăm chỉ báo tùy chỉnh có sẵn trực tuyến. Nhiều người có thể dễ dàng sử dụng các chỉ báo tùy chỉnh bằng cách kéo và thả chúng từ cửa sổ Chỉ báo tùy chỉnh vào biểu đồ. Tìm hiểu cách lập trình Expert Advisor để giao dịch bằng cách sử dụng các chỉ báo hoặc bộ dao động tùy chỉnh trong bài viết EA MQL4 iCustom Indicator EA này.
Để sử dụng Chỉ báo tùy chỉnh từ Expert Advisors, bạn cần biết một số điều.
Các chỉ báo tùy chỉnh mà bạn muốn sử dụng với EA của mình phải nằm trong thư mục chỉ báo (để cài đặt tiêu chuẩn MT4, C:\Program Files\MetaTrader 4\experts\indicators). Khi thực thi EA, nó sẽ tìm các chỉ báo đã biên dịch (tệp .ex4) trong thư mục chỉ báo.
Có một chức năng tích hợp sẵn để xử lý các chỉ báo tùy chỉnh được gọi là iCustom(). iCustom() là một hàm MQL4 cho phép bạn sử dụng các chỉ báo bên ngoài trong Expert Advisor hoặc mã chỉ báo tùy chỉnh mà không cần phải viết lại mã từ đầu.
Cú pháp của hàm này như sau:
double iCustom(string Symbol , int Khung thời gian , chuỗi Tên chỉ báo, int Tham số chỉ báo, int Mode, int Shift);
Mô tả tham số
Ký hiệu Ký hiệu dữ liệu được sử dụng để tính chỉ số. NULL cho biết biểu tượng giao dịch hiện tại.
Giới hạn thời gian Giới hạn thời gian. Có thể là bất kỳ giá trị liệt kê phạm vi thời gian nào.
Chọn (0) để hiển thị phạm vi thời gian hiện tại hoặc chọn một trong các tùy chọn sau: (1, 5, 15, 30, 60, 240, 1440, 10080, 43200) {tất cả trong vòng vài phút
p>IndicatorName Đây là tên của tệp chỉ báo khi nó xuất hiện trong danh sách các chỉ báo tùy chỉnh trong cửa sổ Điều hướng. Ví dụ: "NonLagMA_v7.1.1".
Chỉ báo
Thông số Tab Đầu vào trong cửa sổ Thuộc tính Chỉ báo Tùy chỉnh sẽ hiển thị các thông số của chỉ báo tùy chỉnh. Các tham số được truyền và thứ tự của chúng phải tương ứng với thứ tự khai báo của chỉ báo tùy chỉnh và loại biến bên ngoài. Tất cả đều phải được phân tách bằng dấu phẩy.
Chỉ số hàng của mô hình. Có thể từ 0 đến 7 và phải tương ứng với chỉ mục được sử dụng bởi một trong các hàm SetIndexBuffer.
Chỉ số Shift Chỉ số của giá trị thu được từ bộ đệm chỉ báo (đã di chuyển một khoảng thời gian nhất định trước đó so với thanh hiện tại).
Trong sáu thông số trên, dễ nhận biết nhất là ba thông số đầu tiên và thông số cuối cùng. Chúng tôi đã thảo luận về các loại và khung thời gian trong các bài viết trước. Tên của chỉ báo cũng khá đơn giản: đó là tên chỉ báo xuất hiện trong danh sách các chỉ báo tùy chỉnh trong cửa sổ Điều hướng, được bao quanh bởi các thị trường được trích dẫn. Ví dụ: Nếu bạn thấy chỉ số có tên NonLagMA_v7.1 trong cửa sổ, bạn sẽ viết nó là "NonLagMA_v7.1" trong tham số tên chỉ số.
Chúng ta cũng đã thảo luận về tham số Shfit cuối cùng trong bài viết trước, nhưng đây chỉ là phần ôn lại. Shift cho biết thanh mà chỉ báo đang được tính toán. Các thanh được đánh số 0, 1, 2, 3, 4, 5... khi bạn quay ngược thời gian trên biểu đồ. Việc thay đổi tùy chọn chuyển động cũng tương tự như việc di chuyển đường chỉ báo về tương lai hoặc quá khứ. Shift 1 lấy giá trị của thanh trước đó. Offset 0 nhận giá trị của thanh hiện tại.
Tổng:
shift = 0 để lấy giá trị chỉ báo của thanh hiện tại (vẫn đang được hình thành)
shift = 1 giá trị trên thanh trước đó
shift = 2 giá trị trong thanh trước thanh trước đó
Tham số chỉ báo tham số thứ ba và mẫu tham số thứ tư có thể khó phát hiện và triển khai trong EA .
Khám phá các tham số chỉ báo
Trước tiên, hãy kiểm tra cách khám phá các tham số chỉ báo tùy chỉnh. Trong hầu hết các trường hợp, chỉ báo tùy chỉnh có thể sử dụng 1 hoặc 2 tham số chỉ báo, nhưng một số sử dụng 3 tham số chỉ báo trở lên, điều này khiến quá trình khám phá trở nên khó khăn hơn. Chỉ báo tùy chỉnh NonLagMA_7.1 là một ví dụ về chỉ báo phức tạp hơn sử dụng 9 tham số chỉ báo.
Lưu ý: Tham số là thông số đầu vào thay đổi giá trị chỉ báo; chúng là các biến bạn sử dụng để đặt cài đặt tối ưu cho chỉ báo tùy chỉnh của mình. Bạn có thể tải xuống NonLagMA_v7.1.
Nếu bạn chuyển đến tab đầu vào trong cửa sổ thuộc tính chỉ báo tùy chỉnh, nó sẽ hiển thị cho bạn các tham số của chỉ báo tùy chỉnh NonLagMA_v7.1:

Mặc dù bạn có thể thấy 6 đầu vào trong hình trên, nhưng có thực tế là 9 tham số đầu vào hoặc chỉ báo. Có 9 tham số chỉ báo với các đầu vào khác nhau, các giá trị mà bạn có thể thay đổi để có cài đặt tốt nhất, một trong số đó rất quan trọng cho việc hình thành chỉ báo (độ dài).
Cách tốt hơn để khám phá các thông số chỉ báo là sao chép và dán chúng từ mã nguồn. Nếu bạn nhấp chuột phải vào chỉ báo tùy chỉnh và nhấp vào Sửa đổi, bạn có thể xem mã nguồn của chỉ báo trong MetaEditor. Nếu chỉ báo có màu xám nghĩa là bạn không có mã mq4, chỉ có ex4 và bạn phải tìm cách dịch ngược nó hoặc có thể sử dụng cách trên để suy ra các tham số từ cửa sổ thuộc tính.
Nếu bạn có mã mq4 và có thể mở được nó thì bạn là người may mắn. Bây giờ, hãy kiểm tra các biến bên ngoài ở đầu mã nguồn của chỉ báo. Các thông số chỉ báo, kiểu dữ liệu và giá trị mặc định sẽ được liệt kê ở đây, bạn chỉ cần sao chép và dán mã bên ngoài vào phần Biến bên ngoài của Expert Advisor.
Sử dụng chỉ báo NonLagMA, bạn sẽ thấy các biến bên ngoài sau:
// --Thông số đầu vào
Giá bên ngoài = 0;
Độ dài bên ngoài = 9; //Giai đoạn NonLagMA
Độ dịch chuyển int bên ngoài = 0; //DispLace hoặc Shift
PctFilter kép bên ngoài = 0; //Bộ lọc động thập phân
Màu bên ngoài = 1; //Chuyển đổi chế độ màu (1 màu)
Int bên ngoài ColorBarBack = 1; //Quay lại chế độ màu
Độ lệch kép bên ngoài = 0; //Độ lệch trên/dưới
Chế độ cảnh báo bên ngoài = 0; //Công tắc cảnh báo bằng âm thanh (0-tắt, 1 bật)
Int bên ngoài WarningMode = 0; //Công tắc cảnh báo âm thanh (0 tắt, 1 bật)
Giữ hãy nhớ rằng mặc dù có 9 tham số nhưng chỉ có một tham số Độ dài thay đổi bản chất của chỉ báo. Những cái khác có thể được để ở giá trị mặc định, ngoại trừ Màu là 0 trong hầu hết các trường hợp. Nếu chúng tôi cũng sử dụng 0 làm giá trị mặc định cho hai chế độ tham số cuối cùng và dịch chuyển, thì chúng tôi có thể sử dụng giá trị trên để xây dựng danh tính chỉ báo iCustom NonLagMA của mình:
iCustom (NULL, 0, "NonLagMA_v7.1", Giá, Độ dài, Dịch chuyển, PctFilter, Màu sắc, ColorBarBack, Độ lệch, AlertMode, WarningMode, 0,0).
Vì mục đích tối ưu hóa, chỉ một trong chín thông số ở trên, độ dài, là thông số bạn muốn thay đổi hoặc tối ưu hóa cho ký hiệu tiền tệ của mình và Tìm NonLagMA tốt nhất cho phạm vi thời gian. Những người khác sẽ vẫn ở giá trị mặc định của họ. Thông thường, nếu bạn coi độ dài là một tham số trong chỉ báo tùy chỉnh, thì nó sẽ trở thành tham số quan trọng nhất trong việc hình thành chiến lược của bạn và do đó là tham số quan trọng nhất cho các hoạt động tiếp theo.
Chỉ báo tùy chỉnh ở trên sẽ được biên dịch hiệu quả, nhưng để đưa nó vào chiến lược, bạn phải biết cách sử dụng hai tham số cuối cùng là mode và shift .
Chế độ khám phá (Đường/Tín hiệu)
Chế độ là chỉ số dòng nằm trong khoảng từ 0 đến 7. MT4 cho phép tối đa 8 dòng chỉ báo (bộ đệm) cho mỗi chỉ báo tùy chỉnh. Các dòng (bộ đệm) này phải tương ứng với các chỉ mục được sử dụng bởi một trong các dòng SetIndexBuffer trong mã chỉ báo.
Thật hữu ích khi hình dung điều này: chỉ báo của bạn có tối đa 8 đường/tín hiệu (hoặc mũi tên) màu khác nhau. Mỗi dòng cung cấp cho bạn một đầu ra và mỗi dòng có một giá trị. Sử dụng chế độ này, bạn có thể chọn dòng (tín hiệu) theo yêu cầu của EA (phần tám). Hầu hết thời gian, chỉ báo chỉ có một dòng/tín hiệu, vì vậy nên sử dụng mode=0.
Lưu ý về các chế độ: Vì MT4 có chỉ số từ 0 đến 7 nên các chế độ lấy giá trị từ 0 đến 7. Vậy tín hiệu đầu tiên có mode = 0 (thay vì 1). Nếu chỉ báo của bạn có ba đường/tín hiệu chỉ báo và bạn muốn nhận giá trị của dòng đầu tiên, hãy sử dụng mode=0 và giá trị của dòng/tín hiệu thứ hai, hãy sử dụng mode=1 và mode=2 sẽ nhận giá trị cho Tín hiệu thứ ba.
Được rồi, vậy bạn quyết định sử dụng mẫu nào cho EA của mình?
Bí mật của chế độ này nằm ở bộ đệm chỉ báo.
Về cơ bản, bạn phải tìm vùng đệm trong mã sẽ trở thành dòng mô hình của bạn. Giả sử bạn có 3 bộ đệm:
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", tất cả các tham số được phân tách bằng dấu phẩy, BUFFER, SHIFT);
Nếu bạn muốn lấy giá trị của 3 bộ đệm của thanh hiện tại, bạn sẽ viết:
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", tất cả các tham số được phân tách bằng dấu phẩy, 0, 0);
iCustom(Symbol(),Timeframe,"CUSOMT INDI NAME", tất cả các tham số được phân tách bằng dấu phẩy, 1, 0);
iCustom(Symbol() ,Timeframe e,"CUSOMT INDI NAME",Tất cả các tham số được phân tách bằng dấu phẩy, 2, 0);
Được rồi, được rồi, hãy xem Một ví dụ về cú pháp bộ đệm này và vị trí nó xuất hiện trong mã.
Trong chức năng khởi tạo của chỉ báo NonLagMA, bạn sẽ thấy một số vùng đệm chỉ báo như dưới đây:
Bộ đệm chỉ báo (6);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0, MABuffer );
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,UpBuffer);
SetIndexStyle(2,DRAW_LINE);
< p >SetIndexBuffer(2,DnBuffer);SetIndexBuffer(3, xu hướng);
SetIndexBuffer(4,Del);
SetIndexBuffer(5,AvgDel) ;
Chữ viết tắt của chuỗi;
SetIndexStyle cho chúng ta biết rằng có ba dòng (DRAW_LINE). Bên dưới, SetIn

Tôi đã đánh dấu nó bằng màu đỏ Bảng dữ liệu được hiển thị cung cấp manh mối để tìm ra chức năng của chế độ (đường truyền/tín hiệu). NonLagMA là chế độ đầu tiên (mode = 0) và chúng ta có thể suy ra rằng đó là chính đường đó. Nếu bạn di chuột qua bất kỳ thanh nào, nó sẽ cung cấp cho bạn kết quả đọc dữ liệu cho hàng NonLagMA cho thanh đó. Hướng lên trên là chế độ thứ hai (chế độ = 1), mà chúng ta có thể suy ra là đường màu xanh lam.
Nếu bạn di chuột qua bất kỳ thanh nào có đường màu xanh bên dưới, bạn sẽ thấy rằng nó cung cấp cho bạn một hàng đọc dữ liệu hướng lên trên mà không cung cấp các bài đọc dữ liệu cho các hàng xuôi dòng. Dn là mode thứ ba (mode = 2) và ta có thể suy ra đó là đường màu đỏ. Nếu bạn di chuột qua bất kỳ thanh nào có đường màu đỏ trên đó, bạn sẽ thấy rằng nó cung cấp cho bạn dữ liệu đọc cho hàng Dn chứ không phải cho hàng Lên.
Chế độ thứ tư của xu hướng (mode = 3) không xuất hiện trong cửa sổ dữ liệu, mặc dù tôi biết từ mã rằng nó được viết như thế này: Nếu xu hướng hiện tại Nếu tín hiệu == 1, xu hướng đang dài, nếu tín hiệu xu hướng hiện tại == -1, xu hướng đang ngắn.
Bây giờ bạn đã có cái nhìn tổng quan về 4 chế độ của chỉ báo tùy chỉnh NonLagMA, bạn có thể tạo ít nhất ba loại điều kiện EA:
< p>EA hoạt động với chính đường MA, chẳng hạn như crossover (Mode=0);
Sử dụng Up (EA màu xanh cho tín hiệu (màu) và Dn (màu đỏ) mua khi NonLagMA chuyển sang màu xanh và bán khi nó chuyển sang màu đỏ (Mode = 1 và Mode = 2).
EA sử dụng tín hiệu xu hướng để mua khi xu hướng tăng và bán khi xu hướng giảm (mode = 3).
Chúng ta sẽ xem xét từng kết hợp EA này trong bài viết tiếp theo: Xây dựng chiến lược bằng cách sử dụng các chỉ báo tùy chỉnh