Bài viết này giới thiệu một lớp toán tử được gọi là toán tử logic. Tìm hiểu những gì AND, TUYỆT VỜI THAN và các chức năng khác trong hướng dẫn toán tử logic MQL4 hoàn chỉnh này để giúp bạn viết EA giao dịch của riêng mình. Con người chúng ta sử dụng các toán tử này hàng ngày mà không cần suy nghĩ nhiều.
Ví dụ: chúng ta liên tục xử lý các phép toán logic AND và OR. Tôi sẽ không rời khỏi nhà khi nhiệt độ bên ngoài là 10 độ trừ khi tôi mặc áo khoác mùa đông ấm áp và đội mũ trước và có nơi nào đó ấm áp để đi. Nếu tôi đếm vô số con cừu, hoặc tưởng tượng mình là một phần của phong cảnh Hà Lan thế kỷ 17, hoặc đọc một cuốn tiểu thuyết dày cộp của Nga, tối nay tôi sẽ ngủ quên trên giường. Chúng ta luôn sử dụng các thao tác logic này nhưng thường không viết chúng ra (hoặc nghĩ về chúng) như hướng dẫn của máy.
Chương trình MT4 của chúng tôi cần đưa ra quyết định, dù đúng hay sai và những quyết định này yêu cầu sử dụng các toán tử logic.
Các toán tử logic đơn giản đánh giá đúng hay sai và thường đề xuất mối quan hệ giữa hai hoặc nhiều tham số hoặc điều kiện, đó là lý do tại sao chúng thường được gọi là toán tử quan hệ. Đây là bảng gồm các toán tử logic (quan hệ):
Ký hiệu | Ý nghĩa | Chức năng | Ví dụ |
---|---|---|---|
== | Bằng | true , nếu tham số bên trái và tham số bên phải có cùng giá trị | Nếu x == y, thì điều kiện là đúng |
!= | Không bằng, Bất bình đẳng | Ngược lại với đẳng thức, nếu tham số bên trái và tham số bên phải không có cùng giá trị td> | Nếu x != y, điều kiện là sai span> |
> | Tốt hơn... | true, nếu tham số bên trái lớn hơn tham số bên phải | Nếu x > y thì điều kiện là đúng |
< | Nhỏ hơn< /td> | true, nếu tham số bên trái nhỏ hơn tham số bên phải | Nếu x < y, điều kiện đúng |
>= | Lớn hơn hoặc bằng | true, nếu tham số bên trái lớn hơn hoặc bằng tham số bên phải | Nếu x >= y, điều kiện là đúng |
<= | Nhỏ hơn hoặc bằng | true, nếu tham số bên trái nhỏ hơn hoặc bằng tham số bên phải | Nếu x <= y thì điều kiện là đúng td> |
&& | VÀ | Đúng, nếu cả hai tham số bên trái và bên phải đều đúng | Nếu x && y, điều kiện là đúng |
| | | HOẶC | Đúng nếu tham số bên trái hoặc bên phải là đúng | if :qAKMYb,yaf12d" jsname="txFAF" class="jCAhz ChMk0b" jscontroller="Gn4SMb">y, điều kiện là đúng |
! | KHÔNG | Đúng nếu đối số của nó là sai; Ngược lại, false | Nếu !x, điều kiện là đúng |
Tất cả các mục trừ mục cuối cùng đều là toán tử quan hệ hoặc so sánh. Tôi sẽ cố gắng cung cấp các ví dụ cụ thể hơn về các toán tử quan hệ này.
Dưới đây là một số dòng mã được trích xuất từ hàm OrderTotalMagicOpen() tùy chỉnh:
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber )
Chứa bốn toán tử quan hệ trong hai dòng này: bằng (==), không bằng (!=), và (&& ) và hoặc (||). Dòng mã đầu tiên thể hiện rõ ràng toán tử bất đẳng thức (!=) và toán tử hoặc (||). Điều đó có nghĩa là nếu biểu tượng của giao dịch mở không phải là biểu tượng của biểu đồ cơ sở của EA hoặc nếu con số kỳ diệu của giao dịch mở không phải là con số kỳ diệu của chiến lược thì chương trình có thể tiếp tục. tiếp tục nghĩa là gì? Chà, đó là một toán tử khác kiểm soát điểm bắt đầu của vòng lặp đi gần nhất trong toán tử while hoặc for, nghĩa là, nó bỏ qua chuỗi tính toán ngay lập tức vì chúng không còn áp dụng nữa. Dòng thứ hai và thứ ba là ví dụ điển hình về toán tử bằng (==) và AND (&&). Điều đó có nghĩa là nếu biểu tượng của giao dịch mở là biểu tượng của biểu đồ cơ bản của EA và giao dịch mở có con số kỳ diệu của EA thì chúng ta có thể tiến hành phép tính tiếp theo.
Chúng ta thường thấy các toán tử quan hệ lớn hơn hoặc nhỏ hơn này khi so sánh các điểm giá hoặc chỉ báo. Ví dụ: hãy xem một cách thể hiện điều kiện mua Dải bollinger:
bool BuyCondition1 == false;if (iBands(NULL,bandp, bandpx , banddev,0,PRICE_CLOSE,MODE_LOWER,1) < iClose (NULL,0,1)
&&iBands(NULL,bandp, bandpx, banddev,0,PRICE_CLOSE,MODE_LOWER,0) > ;= iClose (NULL,0,0)
Điều kiện mua hàng 1 == true;
Tại đây bạn có thể thấy điều kiện mua hàng A điều đó chỉ đúng nếu hai đối số được kết nối bằng AND (&&) cũng đúng: đối số thứ nhất có toán tử nhỏ hơn (<) hợp lệ, đối số thứ hai có toán tử lớn hơn hoặc bằng (> ;= ) là hợp lệ. Đối số đầu tiên là giới hạn dưới của BB trước đó phải thấp hơn giá đóng cửa trước đó. Đối số thứ hai là giới hạn dưới của BB hiện tại bây giờ phải lớn hơn hoặc bằng giá đóng cửa hiện tại. Những điều này hai đối số được kết hợp lại có nghĩa là: mua khi giá đóng cửa vượt qua dải dưới. Vì không có hàm giao nhau thường trú nên sự giao nhau phải được cấu trúc thành hai phần: điều gì đã xảy ra gần đây (dải dưới đóng cửa bên dưới) và điều gì xảy ra bây giờ ( Dải phía dưới hiện đang chạm hoặc phía trên mức đóng) .
Bạn có thể so sánh hai giá trị bất kỳ miễn là chúng có cùng kiểu dữ liệu. Bạn có thể so sánh giá trị Boolean với các hằng số đúng hoặc sai.
Các phép toán Boolean
Chúng tôi sử dụng toán tử Boolean AND (&&) và OR (||) để kết hợp các phép toán quan hệ. Toán tử AND đánh giá xem tất cả điều kiện có đúng hay không. Nếu vậy thì toàn bộ câu nói đều đúng. Nếu bất kỳ điều kiện nào sai thì toàn bộ câu lệnh đều sai.
if (BooleanVar1 == true && Indicator1 > Indicator2)
{
// Lệnh mở
Nếu BooleanVar1 bằng true và Indicator1 lớn hơn Indicator2 thì câu lệnh sẽ có giá trị là true và mã giữa các dấu ngoặc nhọn sẽ được chạy. Nếu bất kỳ điều kiện nào trong số này là sai thì toàn bộ câu lệnh sẽ đánh giá là sai và mã trong dấu ngoặc nhọn sẽ không chạy. Có bất kỳ số lượng điều kiện nào được kết hợp với toán tử && và tất cả chúng đều phải đánh giá là đúng.
Toán tử OR đánh giá xem một trong hai điều kiện có đúng hay không. Nếu ít nhất một điều kiện đúng thì toàn bộ câu lệnh là đúng. Nếu tất cả các điều kiện đều sai, câu lệnh sẽ đánh giá là sai.
If (BooleanVar1 = true || Indicator1 > Indicator2)
If Booleanvar1 bằng true hoặc Indicator1 lớn hơn Indicator2 thì câu lệnh được đánh giá là đúng. Nếu cả hai điều kiện đều sai thì câu lệnh sẽ đánh giá là sai.
Bạn có thể kết hợp các phép toán AND và OR để tạo ra các điều kiện giao dịch phức tạp hơn. Khi thực hiện việc này, hãy sử dụng dấu ngoặc đơn để thiết lập thứ tự thực hiện các thao tác.
If (BooleanVar1 == true && Indicator1 > Indicator2 || BooleanVar1 == false)
Các câu trong ngoặc được đánh giá đầu tiên. Nếu cả hai điều kiện đều đúng thì câu lệnh sẽ đánh giá là đúng và chúng ta thực hiện thao tác OR.