MQL4 Logical Operators

この記事では、論理演算子として知られる演算子のクラスについて説明します。 この完全な MQL4 論理演算子のチュートリアルでは、AND、GREATER THAN、その他の関数について学び、独自のトレーディング EA を作成するのに役立ちます。 私たち人間は、これらの演算子をあまり考えずに毎日使用しています。


たとえば、私たちは常に AND および OR 論理演算を扱います。 私は、外気温が 10 度のときは、暖かい冬用のジャケットと帽子をかぶって、どこか暖かい場所に行かない限り、家から出ません。 無数の羊を数えたり、17 世紀のオランダの風景の一部であることを想像したり、分厚いロシアの小説を読んだりすれば、今夜はベッドで眠りに落ちるでしょう。 私たちはこれらの論理演算を常に使用しますが、通常はそれらを機械命令として書き留める (または考える) ことはありません。


MT4 プログラムは正しいか間違っているかを決定する必要があり、これらの決定には論理演算子の使用が必要です。


単純な論理演算子は true または false に評価され、2 つ以上の引数または条件間の関係を示唆することが多いため、関係演算子と呼ばれることがよくあります。 これは論理 (関係) 演算子テーブルです:

< tr>< td >そうではありません
SignMeaningFunctionExample
==同等true,左側の引数が右側の引数と同じ値である場合x == y の場合、条件は true
!=等しくない, 不平等等価に反して、左側のパラメータが右側のパラメータと同じ値を持たない場合If x != y、条件は false
> ;... よりも優れています true (左のパラメータがright パラメータIf x > y、条件は true です
< 未満左側のパラメータが右側のパラメータより小さい場合は truex < y の場合、条件は true
>=以上true (左側のパラメータが右側のパラメータ以上の場合)条件は、x >= y の場合に true
<= 以下< /td>true (左側のパラメータが以下の場合)または右側のパラメータと等しいx <= y の場合、条件は true
&&ANDtrue (左右のパラメータが true の場合)条件は x && の場合に true ; y
||OR< /td>左側または右側のパラメータが true の場合は Truex の場合 || はい、条件は true
!引数が false の場合は true; それ以外の場合は false !x の場合、条件は true


論理値 FALSE は整数のゼロ値で表され、論理値 TRUE は任意の整数値で表されます。ゼロ以外の値の表現。 関係演算または論理演算を含む式は、0 (FALSE) または 1 (TRUE) に評価されます。

最後のエントリを除くすべては、関係演算子または比較演算子です。 これらの関係演算子のより具体的な例を提供してみます。


カスタム OrdersTotalMagicOpen() 関数から抽出されたコードの一部を次に示します。


< p >if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

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


これらの 2 行に、等しい (==)、等しくない (!=)、および (&& ) の 4 つの関係演算子を含めます。または (||)。 コードの最初の行は、等しくない (!=) 演算子と or (||) 演算子をうまく表しています。 これは、オープントレードのシンボルが EA の基本チャートのシンボルではない場合、またはオープントレードのマジックナンバーがストラテジーのマジックナンバーではない場合、プログラムを続行できることを示します。 続ける とはどういう意味ですか? これは、while 演算子または for 演算子に最も近い外向きループの開始を制御する別の演算子です。つまり、適用されなくなった直後の一連の計算をスキップします。 2 行目と 3 行目は、等号 (==) 演算子と AND (&&) 演算子の良い例です。 これは、オープントレードのシンボルが EA の基礎となるチャートのシンボルであり、オープントレードが EA のマジックナンバーを持っている場合、計算の次のステップに進むことができることを意味します。


価格ポイントやインジケーターを比較するとき、関係演算子より大きいか小さいことがよくあります。 たとえば、ボリンジャー バンドの購入条件を表現する 1 つの方法を見てみましょう。


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 == true;


ここで購入条件を確認できます。これは、AND (&&) で接続された 2 つのパラメーターも true である場合にのみ true になります。最初のパラメーターには有効な小なり (<) 演算子があり、2 番目のパラメーターには以上 (> ;= ) 演算子が機能します。最初の引数は、前の BB の下限が前の終値よりも低くなければならないことを示します。2 番目の引数は、現在の BB の下限が現在の終値以上である必要があることを示します。これら 2 つの引数を組み合わせると、翻訳すると: 終値が下限バンドを横切ったときに購入する クロスオーバー機能が常駐していないため、クロスオーバーは 2 つの部分で構成する必要があります: 最近起こったこと (下限バンドが終値よりも低かった) と現在起こっていること (下のバンドは現在終値に接触しているか、終値を超えています) .

Note

等号 (==) 演算子は、代入 (=) 演算子とは異なります。 代入演算子は変数に値を代入するために使用されます。 等号演算子は、true/false 条件を評価するために使用されます。

次の条件を満たす限り、任意の 2 つの値を比較できます。それらは同じデータ型です。 ブール値を定数 true または false と比較できます。

ブール演算

ブール演算子 AND (&&) と OR (||) を使用してリレーショナルを結合しますオペレーション。 AND 演算子は、すべての条件が true かどうかを評価します。 そうであれば、記述全体が真実です。 いずれかの条件が false の場合、ステートメント全体が false になります。

if (BooleanVar1 == true && Indicator1 > Indicator2)
{
// オープン注文
}

BooleanVar1 が true に等しく、Indicator1 がインジケータ 2 より大きい場合、ステートメントは true と評価され、中かっこ内のコードが実行されます。 これらの条件のいずれかが false の場合、ステートメント全体が false と評価され、中かっこで囲まれたコードは実行されません。 && 演算子と組み合わせた条件はいくつでもあり、それらはすべて true と評価される必要があります。


OR 演算子は、どちらかの条件が true かどうかを評価します。 少なくとも 1 つの条件が真であれば、ステートメント全体が真になります。 すべての条件が false の場合、ステートメントは false と評価されます。


if (BooleanVar1 = true || Indicator1 > Indicator2)


if Booleanvar1が true に等しい、または Indicator1 が Indicator2 より大きい場合、ステートメントは true として評価されます。 両方の条件が false の場合、ステートメントは false と評価されます。


AND 演算と OR 演算を組み合わせて、より複雑な取引条件を作成できます。 その際、括弧を使用して操作の順序を確立します。


if (BooleanVar1 == true && Indicator1 > Indicator2 || BooleanVar1 == false)


括弧で囲まれたステートメントが最初に評価されます。 両方の条件が true の場合、ステートメントは true と評価され、OR 演算が実行されます。