English
中文
日本語
ID
Vietnam
한국어
Filipino
 
   学院导航

外汇MQL4 逻辑运算符

MQL4 Logical Operators

本文介绍了一类称为逻辑运算符的运算符。 在这个完整的 MQL4 逻辑运算符教程中学习什么是 AND、GREATER THAN 和其他函数,以帮助您编写自己的交易 EA。我们人类每天都在使用这些运算符,而没有考虑太多。


例如,我们不断地处理 AND 和 OR 的逻辑运算。 我不会在外面 10 度时离开房子,除非我先穿上暖和的冬季夹克和帽子,并且我有温暖的地方可以去。 如果我数不尽的绵羊,或者想象成为 17 世纪荷兰风景画的一部分,或者读一本厚厚的俄罗斯小说,我今晚就会在床上睡着。 我们一直在使用这些逻辑操作,但通常不会将它们写下来(或认为)为机器指令。


我们的 MT4 程序需要做出决定,无论是对还是错,而这些决定需要使用逻辑运算符。


简单的逻辑运算符评估为真或假,并且经常提出两个或多个参数或条件之间的关系,这就是为什么它们通常被称为关系运算符。 这是一个逻辑(关系)运算符表:

SignMeaningFunctionExample
==等于true,如果左手参数与右手参数具有相同的值如果 x == y,则条件为真
!=不等于, 不等式与相等相反,如果左手参数与右手参数不具有相同的值如果 x != y,则条件为假
>比...更棒true,如果左侧参数大于右侧参数如果 x > y,则条件为真
<少于true,如果左手参数小于右手参数如果 x < y,则条件为真
>=大于或等于true,如果左手参数大于或等于右手参数如果 x >= y,则条件为真
<=小于或等于true,如果左手参数小于或等于右手参数如果 x <= y,则条件为真
&&AND真,如果左右参数都为真如果 x && y,则条件为真
||OR真,如果左手或右手参数为真如果 x || y,条件为真
!NOT真,如果它的论点是假的; 否则,假如果 !x,则条件为真


Note

逻辑值 FALSE 用整数零值表示,而逻辑值 TRUE 用任何不为零的值表示。 包含关系运算或逻辑运算的表达式的值为 0 (FALSE) 或 1 (TRUE)。

除了最后一个条目之外的所有条目都是关系或比较运算符。 我将尝试提供这些关系运算符的更具体示例。


以下是从自定义 OrdersTotalMagicOpen() 函数中提取的一些代码行:


如果 (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) 继续;

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)


在这两行中包含四个关系运算符:等于 (==)、不等于 (!=)、与 (&&) 和或 (||)。 第一行代码很好地表示了不等于 (!=) 运算符和或 (||) 运算符。 它表示如果未平仓交易的代码不是 EA 基础图表的代码,或者如果未平仓交易的幻数不是策略的幻数,那么程序可以继续。 继续是什么意思? 好吧,它是另一个运算符,它控制最近的外向循环的开始 while 或 for 运算符,也就是说,它跳过直接的一系列计算,因为它们不再适用。 第二行和第三行是等于 (==) 和 AND (&&) 运算符的一个很好的例子。 它是说,如果未平仓交易的交易品种是 EA 底层图表的交易品种,并且未平仓交易具有 EA 的幻数,那么我们就可以进行下一步的计算。


在比较价格点或指标时,我们通常会看到这些大于或小于关系运算符。 例如,让我们看一下表示布林带买入条件的一种方式:


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)

购买条件 1 == 真;


在这里您可以看到一个购买条件,只有当由 AND (&&) 连接的两个参数也为真时才变为真:第一个参数具有有效的小于 (<) 运算符,第二个具有大于等于 (>= ) 运算符有效。 第一个论点是说前一个 BB 的下限一定低于前一个收盘价。 第二个参数是说当前 BB 的下限现在必须大于或等于当前收盘价。 这两个论点结合起来转化为:当收盘价越过较低的波段时买入。 由于没有常驻交叉功能,交叉必须分两部分构建:最近发生的事情(较低的波段低于收盘价),以及现在发生的事情(较低的波段现在触及或高于收盘价) .

Note

等于 (==) 运算符与赋值 (=) 运算符不同。 赋值运算符用于为变量赋值。 等于运算符用于评估真/假条件。

您可以比较任何两个值,只要它们是相同的数据类型。 您可以将布尔值与常量 true 或 false 进行比较。

布尔运算

我们使用布尔运算符 AND (&&) 和 OR (||) 来组合关系运算。 AND 运算符评估是否所有条件都为真。 如果是这样,则整个陈述都是正确的。 如果任何条件为假,则整个陈述为假。

if (BooleanVar1 == true && Indicator1 > Indicator2)
{
// Open order
}

如果 BooleanVar1 等于 true,并且 Indicator1 大于 indicator2,则语句计算结果为 true,并运行大括号之间的代码。 如果这些条件中的任何一个为假,则整个语句的计算结果为假,并且大括号中的代码不会运行。 有任意数量的条件与 && 运算符组合在一起,它们必须全部评估为真。


OR 运算符评估任一条件是否为真。 如果至少一个条件为真,则整个语句为真。 如果所有条件都为假,则该语句的计算结果为假。


如果 (BooleanVar1 = true || Indicator1 > Indicator2)


如果 Booleanvar1 等于 true,或者 Indicator1 大于 Indicator2,则语句被评估为 true。 如果这两个条件都为假,则该语句的计算结果为假。


您可以结合 AND 和 OR 操作来创建更复杂的交易条件。 这样做时,使用括号来建立操作顺序。


如果(BooleanVar1 == true && Indicator1 > Indicator2 || BooleanVar1 == false)


首先评估括号内的语句。 如果这两个条件都为真,则该语句的计算结果为真,我们将进行 OR 运算。